|
1 | 1 | import 'dart:ui';
|
2 | 2 |
|
3 |
| -enum UserMetadata { |
4 |
| - preferences, |
5 |
| -} |
6 |
| - |
7 |
| -class _BaseUserPreference { |
8 |
| - final bool enabled; |
9 |
| - |
10 |
| - const _BaseUserPreference({required this.enabled}); |
11 |
| - |
12 |
| - @override |
13 |
| - bool operator ==(covariant _BaseUserPreference other) { |
14 |
| - if (identical(this, other)) return true; |
15 |
| - |
16 |
| - return other.enabled == enabled; |
17 |
| - } |
18 |
| - |
19 |
| - @override |
20 |
| - int get hashCode => enabled.hashCode; |
21 |
| -} |
22 |
| - |
23 |
| -class UserFolderPreference extends _BaseUserPreference { |
24 |
| - const UserFolderPreference({super.enabled = false}); |
25 |
| - |
26 |
| - Map<String, Object?> toMap() { |
27 |
| - return {"folders-Enabled": enabled}; |
28 |
| - } |
29 |
| - |
30 |
| - factory UserFolderPreference.fromMap(Map<String, Object?> map) { |
31 |
| - return UserFolderPreference( |
32 |
| - enabled: map["folders-Enabled"] as bool? ?? false, |
33 |
| - ); |
34 |
| - } |
35 |
| -} |
36 |
| - |
37 |
| -class UserMemoryPreference extends _BaseUserPreference { |
38 |
| - const UserMemoryPreference({super.enabled = true}); |
39 |
| - |
40 |
| - Map<String, Object?> toMap() { |
41 |
| - return {"memories-Enabled": enabled}; |
42 |
| - } |
43 |
| - |
44 |
| - factory UserMemoryPreference.fromMap(Map<String, Object?> map) { |
45 |
| - return UserMemoryPreference( |
46 |
| - enabled: map["memories-Enabled"] as bool? ?? true, |
47 |
| - ); |
48 |
| - } |
49 |
| -} |
50 |
| - |
51 |
| -class UserPeoplePreference extends _BaseUserPreference { |
52 |
| - const UserPeoplePreference({super.enabled = true}); |
53 |
| - |
54 |
| - Map<String, Object?> toMap() { |
55 |
| - return {"people-Enabled": enabled}; |
56 |
| - } |
57 |
| - |
58 |
| - factory UserPeoplePreference.fromMap(Map<String, Object?> map) { |
59 |
| - return UserPeoplePreference( |
60 |
| - enabled: map["people-Enabled"] as bool? ?? true, |
61 |
| - ); |
62 |
| - } |
63 |
| -} |
64 |
| - |
65 |
| -class UserRatingPreference extends _BaseUserPreference { |
66 |
| - const UserRatingPreference({super.enabled = false}); |
67 |
| - |
68 |
| - Map<String, Object?> toMap() { |
69 |
| - return {"ratings-Enabled": enabled}; |
70 |
| - } |
71 |
| - |
72 |
| - factory UserRatingPreference.fromMap(Map<String, Object?> map) { |
73 |
| - return UserRatingPreference( |
74 |
| - enabled: map["ratings-Enabled"] as bool? ?? false, |
75 |
| - ); |
76 |
| - } |
77 |
| -} |
78 |
| - |
79 |
| -class UserSharedLinksPreference extends _BaseUserPreference { |
80 |
| - const UserSharedLinksPreference({super.enabled = true}); |
81 |
| - |
82 |
| - Map<String, Object?> toMap() { |
83 |
| - return {"sharedLinks-Enabled": enabled}; |
84 |
| - } |
85 |
| - |
86 |
| - factory UserSharedLinksPreference.fromMap(Map<String, Object?> map) { |
87 |
| - return UserSharedLinksPreference( |
88 |
| - enabled: map["sharedLinks-Enabled"] as bool? ?? true, |
89 |
| - ); |
90 |
| - } |
91 |
| -} |
92 |
| - |
93 |
| -class UserTagPreference extends _BaseUserPreference { |
94 |
| - const UserTagPreference({super.enabled = false}); |
95 |
| - |
96 |
| - Map<String, Object?> toMap() { |
97 |
| - return {"tags-Enabled": enabled}; |
98 |
| - } |
99 |
| - |
100 |
| - factory UserTagPreference.fromMap(Map<String, Object?> map) { |
101 |
| - return UserTagPreference(enabled: map["tags-Enabled"] as bool? ?? false); |
102 |
| - } |
103 |
| -} |
104 |
| - |
105 | 3 | enum AvatarColor {
|
106 | 4 | // do not change this order or reuse indices for other purposes, adding is OK
|
107 | 5 | primary("primary"),
|
@@ -133,126 +31,75 @@ enum AvatarColor {
|
133 | 31 | };
|
134 | 32 | }
|
135 | 33 |
|
136 |
| -class UserAvatarPreference { |
137 |
| - final AvatarColor color; |
138 |
| - |
139 |
| - const UserAvatarPreference({this.color = AvatarColor.primary}); |
140 |
| - |
141 |
| - @override |
142 |
| - bool operator ==(covariant UserAvatarPreference other) { |
143 |
| - if (identical(this, other)) return true; |
144 |
| - |
145 |
| - return other.color == color; |
146 |
| - } |
147 |
| - |
148 |
| - @override |
149 |
| - int get hashCode => color.hashCode; |
150 |
| - |
151 |
| - Map<String, Object?> toMap() { |
152 |
| - return {"avatar-Color": color.value}; |
153 |
| - } |
154 |
| - |
155 |
| - factory UserAvatarPreference.fromMap(Map<String, Object?> map) { |
156 |
| - return UserAvatarPreference( |
157 |
| - color: AvatarColor.values.firstWhere( |
158 |
| - (e) => e.value == map["avatar-Color"] as String?, |
159 |
| - orElse: () => AvatarColor.primary, |
160 |
| - ), |
161 |
| - ); |
162 |
| - } |
163 |
| -} |
164 |
| - |
165 |
| -class UserPurchasePreference { |
166 |
| - final bool showSupportBadge; |
167 |
| - |
168 |
| - const UserPurchasePreference({this.showSupportBadge = true}); |
169 |
| - |
170 |
| - @override |
171 |
| - bool operator ==(covariant UserPurchasePreference other) { |
172 |
| - if (identical(this, other)) return true; |
173 |
| - |
174 |
| - return other.showSupportBadge == showSupportBadge; |
175 |
| - } |
176 |
| - |
177 |
| - @override |
178 |
| - int get hashCode => showSupportBadge.hashCode; |
179 |
| - |
180 |
| - Map<String, Object?> toMap() { |
181 |
| - return {"purchase-ShowSupportBadge": showSupportBadge}; |
182 |
| - } |
183 |
| - |
184 |
| - factory UserPurchasePreference.fromMap(Map<String, Object?> map) { |
185 |
| - return UserPurchasePreference( |
186 |
| - showSupportBadge: map["purchase-ShowSupportBadge"] as bool? ?? true, |
187 |
| - ); |
188 |
| - } |
189 |
| -} |
190 |
| - |
191 | 34 | class UserPreferences {
|
192 |
| - final UserFolderPreference folders; |
193 |
| - final UserMemoryPreference memories; |
194 |
| - final UserPeoplePreference people; |
195 |
| - final UserRatingPreference ratings; |
196 |
| - final UserSharedLinksPreference sharedLinks; |
197 |
| - final UserTagPreference tags; |
198 |
| - final UserAvatarPreference avatar; |
199 |
| - final UserPurchasePreference purchase; |
| 35 | + final bool foldersEnabled; |
| 36 | + final bool memoriesEnabled; |
| 37 | + final bool peopleEnabled; |
| 38 | + final bool ratingsEnabled; |
| 39 | + final bool sharedLinksEnabled; |
| 40 | + final bool tagsEnabled; |
| 41 | + final AvatarColor userAvatarColor; |
| 42 | + final bool showSupportBadge; |
200 | 43 |
|
201 | 44 | const UserPreferences({
|
202 |
| - this.folders = const UserFolderPreference(), |
203 |
| - this.memories = const UserMemoryPreference(), |
204 |
| - this.people = const UserPeoplePreference(), |
205 |
| - this.ratings = const UserRatingPreference(), |
206 |
| - this.sharedLinks = const UserSharedLinksPreference(), |
207 |
| - this.tags = const UserTagPreference(), |
208 |
| - this.avatar = const UserAvatarPreference(), |
209 |
| - this.purchase = const UserPurchasePreference(), |
| 45 | + this.foldersEnabled = false, |
| 46 | + this.memoriesEnabled = true, |
| 47 | + this.peopleEnabled = true, |
| 48 | + this.ratingsEnabled = false, |
| 49 | + this.sharedLinksEnabled = true, |
| 50 | + this.tagsEnabled = false, |
| 51 | + this.userAvatarColor = AvatarColor.primary, |
| 52 | + this.showSupportBadge = true, |
210 | 53 | });
|
211 | 54 |
|
212 | 55 | UserPreferences copyWith({
|
213 |
| - UserFolderPreference? folders, |
214 |
| - UserMemoryPreference? memories, |
215 |
| - UserPeoplePreference? people, |
216 |
| - UserRatingPreference? ratings, |
217 |
| - UserSharedLinksPreference? sharedLinks, |
218 |
| - UserTagPreference? tags, |
219 |
| - UserAvatarPreference? avatar, |
220 |
| - UserPurchasePreference? purchase, |
221 |
| - }) => |
222 |
| - UserPreferences( |
223 |
| - folders: folders ?? this.folders, |
224 |
| - memories: memories ?? this.memories, |
225 |
| - people: people ?? this.people, |
226 |
| - ratings: ratings ?? this.ratings, |
227 |
| - sharedLinks: sharedLinks ?? this.sharedLinks, |
228 |
| - tags: tags ?? this.tags, |
229 |
| - avatar: avatar ?? this.avatar, |
230 |
| - purchase: purchase ?? this.purchase, |
231 |
| - ); |
| 56 | + bool? foldersEnabled, |
| 57 | + bool? memoriesEnabled, |
| 58 | + bool? peopleEnabled, |
| 59 | + bool? ratingsEnabled, |
| 60 | + bool? sharedLinksEnabled, |
| 61 | + bool? tagsEnabled, |
| 62 | + AvatarColor? userAvatarColor, |
| 63 | + bool? showSupportBadge, |
| 64 | + }) { |
| 65 | + return UserPreferences( |
| 66 | + foldersEnabled: foldersEnabled ?? this.foldersEnabled, |
| 67 | + memoriesEnabled: memoriesEnabled ?? this.memoriesEnabled, |
| 68 | + peopleEnabled: peopleEnabled ?? this.peopleEnabled, |
| 69 | + ratingsEnabled: ratingsEnabled ?? this.ratingsEnabled, |
| 70 | + sharedLinksEnabled: sharedLinksEnabled ?? this.sharedLinksEnabled, |
| 71 | + tagsEnabled: tagsEnabled ?? this.tagsEnabled, |
| 72 | + userAvatarColor: userAvatarColor ?? this.userAvatarColor, |
| 73 | + showSupportBadge: showSupportBadge ?? this.showSupportBadge, |
| 74 | + ); |
| 75 | + } |
232 | 76 |
|
233 | 77 | Map<String, Object?> toMap() {
|
234 | 78 | final preferences = <String, Object?>{};
|
235 |
| - preferences.addAll(folders.toMap()); |
236 |
| - preferences.addAll(memories.toMap()); |
237 |
| - preferences.addAll(people.toMap()); |
238 |
| - preferences.addAll(ratings.toMap()); |
239 |
| - preferences.addAll(sharedLinks.toMap()); |
240 |
| - preferences.addAll(tags.toMap()); |
241 |
| - preferences.addAll(avatar.toMap()); |
242 |
| - preferences.addAll(purchase.toMap()); |
| 79 | + preferences["folders-Enabled"] = foldersEnabled; |
| 80 | + preferences["memories-Enabled"] = memoriesEnabled; |
| 81 | + preferences["people-Enabled"] = peopleEnabled; |
| 82 | + preferences["ratings-Enabled"] = ratingsEnabled; |
| 83 | + preferences["sharedLinks-Enabled"] = sharedLinksEnabled; |
| 84 | + preferences["tags-Enabled"] = tagsEnabled; |
| 85 | + preferences["avatar-Color"] = userAvatarColor.value; |
| 86 | + preferences["purchase-ShowSupportBadge"] = showSupportBadge; |
243 | 87 | return preferences;
|
244 | 88 | }
|
245 | 89 |
|
246 | 90 | factory UserPreferences.fromMap(Map<String, Object?> map) {
|
247 | 91 | return UserPreferences(
|
248 |
| - folders: UserFolderPreference.fromMap(map), |
249 |
| - memories: UserMemoryPreference.fromMap(map), |
250 |
| - people: UserPeoplePreference.fromMap(map), |
251 |
| - ratings: UserRatingPreference.fromMap(map), |
252 |
| - sharedLinks: UserSharedLinksPreference.fromMap(map), |
253 |
| - tags: UserTagPreference.fromMap(map), |
254 |
| - avatar: UserAvatarPreference.fromMap(map), |
255 |
| - purchase: UserPurchasePreference.fromMap(map), |
| 92 | + foldersEnabled: map["folders-Enabled"] as bool? ?? false, |
| 93 | + memoriesEnabled: map["memories-Enabled"] as bool? ?? true, |
| 94 | + peopleEnabled: map["people-Enabled"] as bool? ?? true, |
| 95 | + ratingsEnabled: map["ratings-Enabled"] as bool? ?? false, |
| 96 | + sharedLinksEnabled: map["sharedLinks-Enabled"] as bool? ?? true, |
| 97 | + tagsEnabled: map["tags-Enabled"] as bool? ?? false, |
| 98 | + userAvatarColor: AvatarColor.values.firstWhere( |
| 99 | + (e) => e.value == map["avatar-Color"] as String?, |
| 100 | + orElse: () => AvatarColor.primary, |
| 101 | + ), |
| 102 | + showSupportBadge: map["purchase-ShowSupportBadge"] as bool? ?? true, |
256 | 103 | );
|
257 | 104 | }
|
258 | 105 | }
|
0 commit comments