- Datenmodell: users/{uid}, households/{id} mit memberUids, plants/locations als Subcollections
- StreamProvider liefern Live-Daten, Repositories kapseln Schreibzugriffe
- Login-Screen mit Registrierung (legt Haushalt automatisch an), Logout in Einstellungen
- Router-Redirect bei Login/Logout, firestore.rules mit Haushalts-Prinzip
- Tests auf firebase_auth_mocks + fake_cloud_firestore umgestellt
- Verifiziert: analyze/test grün, Android-Debug-Build erfolgreich
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
676 B
Dart
19 lines
676 B
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../../../core/firebase/firebase_providers.dart';
|
|
|
|
/// Die Haushalts-ID des angemeldeten Nutzers (aus users/{uid}.householdId).
|
|
///
|
|
/// null, solange niemand angemeldet ist oder das Profil noch lädt.
|
|
/// Alle Daten-Provider (Pflanzen, Stellplätze) hängen hieran.
|
|
final householdIdProvider = StreamProvider<String?>((ref) {
|
|
final user = ref.watch(authStateProvider).value;
|
|
if (user == null) return Stream.value(null);
|
|
|
|
return ref
|
|
.watch(firestoreProvider)
|
|
.collection('users')
|
|
.doc(user.uid)
|
|
.snapshots()
|
|
.map((snapshot) => snapshot.data()?['householdId'] as String?);
|
|
});
|