leafittome/lib/features/household/domain/household.dart
cschlaefke 778b3bd34d V2.2: Besitzer-Konzept, Haushalte umbenennen, Austreten/Entfernen, Checkliste über alle Haushalte
- ownerUid je Haushalt (Alt-Haushalte: erster memberUids-Eintrag = Ersteller);
  Besitzer-Anzeige in Mitglieder- und Haushaltsliste
- Haushalt umbenennen (Dialog im Haushalts-Screen); Rules erlauben Clients am
  Haushalts-Dokument nur noch das Namensfeld
- Cloud Functions leaveHousehold (selbst austreten, auch als Sitter) und
  removeMember (nur Besitzer); beide biegen den aktiven Zeiger des Betroffenen
  um und legen notfalls einen frischen eigenen Haushalt an
- Haushalts-Wechsler im Drawer (PopupMenu, ab zwei Haushalten)
- Tages-Checkliste und nächste Fälligkeit aggregieren über alle Haushalte,
  mit Zwischenüberschrift je Haushalt; Bestätigen schreibt in den
  Herkunfts-Haushalt der Aufgabe
- Widget-Tests: Gruppierung, Besitzer-Rechte, Umbenennen

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:39:10 +02:00

57 lines
1.3 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/foundation.dart';
/// Rolle eines Haushalts-Mitglieds.
///
/// member = volle Rechte; sitter = Pflanzen-Sitter, darf Pläne sehen und
/// Aufgaben bestätigen, aber nichts anlegen, ändern oder löschen.
/// Die Durchsetzung passiert serverseitig in den Security Rules
/// die UI blendet entsprechende Aktionen zusätzlich aus.
enum HouseholdRole { member, sitter }
@immutable
class HouseholdMember {
const HouseholdMember({
required this.uid,
required this.role,
required this.email,
});
final String uid;
final HouseholdRole role;
final String email;
}
@immutable
class Household {
const Household({
required this.id,
required this.name,
required this.ownerUid,
required this.members,
});
final String id;
final String name;
/// Besitzer = Ersteller des Haushalts. Nur er kann Mitglieder entfernen,
/// und er kann seinen Haushalt nicht verlassen.
final String ownerUid;
final List<HouseholdMember> members;
bool isOwner(String uid) => uid == ownerUid;
HouseholdRole roleOf(String uid) {
for (final member in members) {
if (member.uid == uid) return member.role;
}
return HouseholdRole.member;
}
HouseholdMember? memberByUid(String uid) {
for (final member in members) {
if (member.uid == uid) return member;
}
return null;
}
}