setProfileId method

Future<void> setProfileId(
  1. String profileId, [
  2. 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)');
    }
  }
}