writeSharedProfileToFile function

Future<void> writeSharedProfileToFile({
  1. required File file,
  2. required String userId,
  3. required SharedProfileInfo profile,
  4. required SharedProfileSession session,
  5. String? apiUrl,
  6. String? activeProject,
})

Implementation

Future<void> writeSharedProfileToFile({
  required File file,
  required String userId,
  required SharedProfileInfo profile,
  required SharedProfileSession session,
  String? apiUrl,
  String? activeProject,
}) async {
  if (!session.hasAccessToken || userId.trim().isEmpty) {
    return;
  }

  final settings = await _readSettings(file);
  final users = _ensureMap(settings, "users");
  final userSettings = _ensureMap(users, userId);

  _mergeLocalProjectIntoProfile(users: users, userSettings: userSettings, userId: userId);

  userSettings["profile"] = profile.toJson();
  userSettings["api_url"] = _normalizeApiUrl(apiUrl);
  userSettings["session"] = session.toJson();
  if (activeProject != null && activeProject.trim().isNotEmpty) {
    final projectSettings = _ensureMap(userSettings, "project");
    projectSettings["active_project"] = activeProject.trim();
  }

  users.remove(_localStateUserId);
  settings["active_user_id"] = userId;
  await _writeSettings(file, settings);
}