ProjectConfig.fromServerResponse constructor
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,
);
}