ProjectConfig.fromServerResponse constructor

ProjectConfig.fromServerResponse(
  1. Map<String, dynamic> response
)

Creates a ProjectConfig from a server response.

Implementation

factory ProjectConfig.fromServerResponse(Map<String, dynamic> response) {
  // Parse SMS Region Config
  SmsRegionConfig? smsRegionConfig;
  if (response['smsRegionConfig'] != null) {
    final config = response['smsRegionConfig'] as Map<String, dynamic>;
    if (config['allowByDefault'] != null) {
      final allowByDefault = config['allowByDefault'] as Map<String, dynamic>;
      smsRegionConfig = AllowByDefaultSmsRegionConfig(
        disallowedRegions: List<String>.from(
          (allowByDefault['disallowedRegions'] as List<dynamic>?) ?? [],
        ),
      );
    } else if (config['allowlistOnly'] != null) {
      final allowlistOnly = config['allowlistOnly'] as Map<String, dynamic>;
      smsRegionConfig = AllowlistOnlySmsRegionConfig(
        allowedRegions: List<String>.from(
          (allowlistOnly['allowedRegions'] as List<dynamic>?) ?? [],
        ),
      );
    }
  }

  // Parse Email Privacy Config
  EmailPrivacyConfig? emailPrivacyConfig;
  if (response['emailPrivacyConfig'] != null) {
    final config = response['emailPrivacyConfig'] as Map<String, dynamic>;
    emailPrivacyConfig = EmailPrivacyConfig(
      enableImprovedEmailPrivacy:
          config['enableImprovedEmailPrivacy'] as bool?,
    );
  }

  return ProjectConfig(
    smsRegionConfig: smsRegionConfig,
    // Backend API returns "mfa" for project config
    multiFactorConfig: response['mfa'] != null
        ? _MultiFactorAuthConfig.fromServerResponse(
            response['mfa'] as Map<String, dynamic>,
          )
        : null,
    recaptchaConfig: response['recaptchaConfig'] != null
        ? _RecaptchaAuthConfig.fromServerResponse(
            response['recaptchaConfig'] as Map<String, dynamic>,
          )
        : null,
    passwordPolicyConfig: response['passwordPolicyConfig'] != null
        ? _PasswordPolicyAuthConfig.fromServerResponse(
            response['passwordPolicyConfig'] as Map<String, dynamic>,
          )
        : null,
    emailPrivacyConfig: emailPrivacyConfig,
    mobileLinksConfig: response['mobileLinksConfig'] != null
        ? _MobileLinksAuthConfig.fromServerResponse(
            response['mobileLinksConfig'] as Map<String, dynamic>,
          )
        : null,
  );
}