import 'package:brick_offline_first_with_supabase/brick_offline_first_with_supabase.dart'; import 'package:brick_sqlite/brick_sqlite.dart'; import 'package:brick_supabase/brick_supabase.dart'; @ConnectOfflineFirstWithSupabase( supabaseConfig: SupabaseSerializable(tableName: 'profiles'), ) class Profile extends OfflineFirstWithSupabaseModel { final String id; final String role; final String fullName; final String religion; final bool allowTracking; final String? avatarUrl; final String? facePhotoUrl; final DateTime? faceEnrolledAt; @Supabase(ignore: true) @Sqlite(ignore: true) bool get hasFaceEnrolled => facePhotoUrl != null && faceEnrolledAt != null; Profile({ required this.id, required this.role, required this.fullName, this.religion = 'catholic', this.allowTracking = false, this.avatarUrl, this.facePhotoUrl, this.faceEnrolledAt, }); factory Profile.fromMap(Map map) { return Profile( id: map['id'] as String, role: map['role'] as String? ?? 'standard', fullName: map['full_name'] as String? ?? '', religion: map['religion'] as String? ?? 'catholic', allowTracking: map['allow_tracking'] as bool? ?? false, avatarUrl: map['avatar_url'] as String?, facePhotoUrl: map['face_photo_url'] as String?, faceEnrolledAt: map['face_enrolled_at'] == null ? null : DateTime.tryParse(map['face_enrolled_at'] as String), ); } }