loadSharedProfileSettingsFromFile function
Implementation
Future<SharedProfileSettingsSnapshot> loadSharedProfileSettingsFromFile(File file) async {
final decoded = await _readSettings(file);
final users = decoded["users"];
final activeUserId = _nullableString(decoded["active_user_id"]);
final profiles = <SharedProfile>[];
if (users is Map) {
for (final entry in users.entries) {
final userId = entry.key;
final rawSettings = entry.value;
if (userId is! String || userId == _localStateUserId || rawSettings is! Map) {
continue;
}
final profile = SharedProfile.fromJson(userId: userId, isActive: userId == activeUserId, json: _objectMap(rawSettings));
if (profile.canAuthenticate) {
profiles.add(profile);
}
}
}
profiles.sort((a, b) {
if (a.isActive != b.isActive) {
return a.isActive ? -1 : 1;
}
return (a.profile?.displayName ?? a.userId).toLowerCase().compareTo((b.profile?.displayName ?? b.userId).toLowerCase());
});
return SharedProfileSettingsSnapshot(
settingsFile: file,
activeProfile: _firstActiveProfile(profiles),
profiles: profiles,
modified: await file.exists() ? await file.lastModified() : null,
);
}