-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathprofile_pictures.dart
More file actions
88 lines (78 loc) · 2.35 KB
/
Copy pathprofile_pictures.dart
File metadata and controls
88 lines (78 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const kDefaultProfilePictureId = 'knight';
const kKnightProfilePictureAsset =
'assets/profile_pictures/profile_picture_knight.png';
const _kProfilePictureAssetRoot = 'assets/profile_pictures';
class ProfilePictureOption {
const ProfilePictureOption({
required this.id,
required this.label,
required this.assetPath,
});
final String id;
final String label;
final String assetPath;
}
final _legacyKnightIdPattern = RegExp(r'^knight-\d{2}$');
const kProfilePictureOptions = <ProfilePictureOption>[
ProfilePictureOption(
id: 'knight',
label: 'Knight',
assetPath: kKnightProfilePictureAsset,
),
ProfilePictureOption(
id: 'samurai',
label: 'Samurai',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_samurai.png',
),
ProfilePictureOption(
id: 'viking',
label: 'Viking',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_viking.png',
),
ProfilePictureOption(
id: 'shield-1',
label: 'Shield 1',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_shield_1.png',
),
ProfilePictureOption(
id: 'shield-2',
label: 'Shield 2',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_shield_2.png',
),
ProfilePictureOption(
id: 'dragon',
label: 'Dragon',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_dragon.png',
),
ProfilePictureOption(
id: 'wizard',
label: 'Wizard',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_wizard.png',
),
ProfilePictureOption(
id: 'chest',
label: 'Chest',
assetPath: '$_kProfilePictureAssetRoot/profile_picture_chest.png',
),
];
const _kZnsPrefix = 'zns-';
bool isZnsProfilePictureId(String id) => id.startsWith(_kZnsPrefix);
String _stripZnsPrefix(String id) =>
id.startsWith(_kZnsPrefix) ? id.substring(_kZnsPrefix.length) : id;
ProfilePictureOption? findProfilePictureOption(String id) {
final baseId = _stripZnsPrefix(id);
for (final option in kProfilePictureOptions) {
if (option.id == baseId) return option;
}
if (_legacyKnightIdPattern.hasMatch(baseId)) {
return kProfilePictureOptions.first;
}
return null;
}
ProfilePictureOption resolveProfilePictureOption(String id) {
return findProfilePictureOption(id) ??
findProfilePictureOption(kDefaultProfilePictureId)!;
}
bool isKnownProfilePictureId(String id) {
return findProfilePictureOption(id) != null;
}