setProfileId method
Future<void>
setProfileId(
- String profileId, [
- bool skipMergeWithPreviousProfileId = false
])
Implementation
Future<void> setProfileId(
final String profileId, [
bool skipMergeWithPreviousProfileId = false,
]) async {
final storage = HiveStorageService.instance;
String? previousProfileId = await storage.getProfileId();
if (previousProfileId == null || previousProfileId != profileId) {
_profileChanged = true;
await storage.setProfileId(profileId);
if (skipMergeWithPreviousProfileId) {
// Clear merge profile IDs when explicitly skipping merge (e.g., on logout)
await storage.clearMergeProfileIds();
debugPrint('Releva: Profile ID changed to $profileId (skip merge = true)');
} else if (previousProfileId != null) {
// Normal behavior: merge previous profile with new one
// Load existing merge IDs from storage, add the previous profile, and save back
List<String> mergeProfileIds = await storage.getMergeProfileIds() ?? [];
if (!mergeProfileIds.contains(previousProfileId)) {
mergeProfileIds.add(previousProfileId);
await storage.setMergeProfileIds(mergeProfileIds);
debugPrint('Releva: Profile ID changed from $previousProfileId to $profileId (merge enabled)');
debugPrint('Releva: Merge profile IDs stored: $mergeProfileIds');
} else {
debugPrint('Releva: Profile ID changed to $profileId (previous profile already in merge list)');
}
} else {
debugPrint('Releva: Profile ID set to $profileId (first time, no merge needed)');
}
}
}