GlobalConfig.fromJson constructor

GlobalConfig.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory GlobalConfig.fromJson(Map<String, dynamic> json) {
  // Parse projects.
  Map<String, ProjectConfig>? projects;
  final projectsRaw = json['projects'] as Map<String, dynamic>?;
  if (projectsRaw != null) {
    projects = {};
    for (final entry in projectsRaw.entries) {
      projects[entry.key] = ProjectConfig.fromJson(
        entry.value as Map<String, dynamic>,
      );
    }
  }

  return GlobalConfig(
    numStartups: json['numStartups'] as int? ?? 0,
    installMethod: _parseInstallMethod(json['installMethod'] as String?),
    autoUpdates: json['autoUpdates'] as bool?,
    theme: _parseTheme(json['theme'] as String?),
    hasCompletedOnboarding: json['hasCompletedOnboarding'] as bool?,
    lastReleaseNotesSeen: json['lastReleaseNotesSeen'] as String?,
    mcpServers: json['mcpServers'] as Map<String, dynamic>?,
    preferredNotifChannel: _parseNotifChannel(
      json['preferredNotifChannel'] as String?,
    ),
    verbose: json['verbose'] as bool? ?? false,
    primaryApiKey: json['primaryApiKey'] as String?,
    oauthAccount: json['oauthAccount'] != null
        ? AccountInfo.fromJson(json['oauthAccount'] as Map<String, dynamic>)
        : null,
    editorMode: _parseEditorMode(json['editorMode'] as String?),
    autoCompactEnabled: json['autoCompactEnabled'] as bool? ?? true,
    showTurnDuration: json['showTurnDuration'] as bool? ?? true,
    env: (json['env'] as Map<String, dynamic>?)?.cast<String, String>() ?? {},
    hasSeenTasksHint: json['hasSeenTasksHint'] as bool? ?? false,
    diffTool: _parseDiffTool(json['diffTool'] as String?),
    tipsHistory:
        (json['tipsHistory'] as Map<String, dynamic>?)?.map(
          (k, v) => MapEntry(k, v as int),
        ) ??
        {},
    memoryUsageCount: json['memoryUsageCount'] as int? ?? 0,
    promptQueueUseCount: json['promptQueueUseCount'] as int? ?? 0,
    btwUseCount: json['btwUseCount'] as int? ?? 0,
    todoFeatureEnabled: json['todoFeatureEnabled'] as bool? ?? true,
    showExpandedTodos: json['showExpandedTodos'] as bool? ?? false,
    messageIdleNotifThresholdMs:
        json['messageIdleNotifThresholdMs'] as int? ?? 60000,
    autoConnectIde: json['autoConnectIde'] as bool? ?? false,
    autoInstallIdeExtension: json['autoInstallIdeExtension'] as bool? ?? true,
    fileCheckpointingEnabled:
        json['fileCheckpointingEnabled'] as bool? ?? true,
    terminalProgressBarEnabled:
        json['terminalProgressBarEnabled'] as bool? ?? true,
    respectGitignore: json['respectGitignore'] as bool? ?? true,
    copyFullResponse: json['copyFullResponse'] as bool? ?? false,
    projects: projects,
    cachedStatsigGates:
        (json['cachedStatsigGates'] as Map<String, dynamic>?)?.map(
          (k, v) => MapEntry(k, v as bool),
        ) ??
        {},
    cachedGrowthBookFeatures:
        json['cachedGrowthBookFeatures'] as Map<String, dynamic>?,
    customApiKeyResponses:
        json['customApiKeyResponses'] as Map<String, dynamic>?,
    userID: json['userID'] as String?,
  );
}