guru_sdk/guru_app/lib/app/app_models.dart

185 lines
6.4 KiB
Dart
Raw Normal View History

import 'dart:io';
import 'package:guru_app/firebase/messaging/remote_messaging_manager.dart';
import 'package:json_annotation/json_annotation.dart';
/// Created by Haoyi on 2022/8/29
part 'app_models.g.dart';
@JsonSerializable()
class AppDetails {
@JsonKey(name: "saas_app_id")
final String saasAppId;
@JsonKey(name: "authority")
final String authority;
@JsonKey(name: "storage_prefix")
final String storagePrefix;
@JsonKey(name: "default_cdn_prefix")
final String defaultCdnPrefix;
@JsonKey(name: "android_gp_url")
final String androidGooglePlayUrl;
@JsonKey(name: "ios_spp_store_url")
final String iosAppStoreUrl;
@JsonKey(name: "policy_url")
final String policyUrl;
@JsonKey(name: "terms_url")
final String termsUrl;
@JsonKey(name: "email_url")
final String emailUrl;
@JsonKey(name: "package_name")
final String packageName;
@JsonKey(name: "bundle_id")
final String bundleId;
@JsonKey(name: "facebook_app_id")
final String facebookAppId;
String get appId => Platform.isAndroid ? packageName : bundleId;
AppDetails(
{required this.saasAppId,
required this.authority,
required this.storagePrefix,
required this.defaultCdnPrefix,
required this.androidGooglePlayUrl,
this.iosAppStoreUrl = '',
required this.policyUrl,
required this.termsUrl,
required this.emailUrl,
required this.packageName,
required this.bundleId,
required this.facebookAppId});
factory AppDetails.fromJson(Map<String, dynamic> json) => _$AppDetailsFromJson(json);
Map<String, dynamic> toJson() => _$AppDetailsToJson(this);
}
@JsonSerializable()
class Deployment {
static const int defaultIgcBalanceSecret = 2654404609;
static const int defaultLogFileSizeLimit = 1024 * 1024 * 10;
static const int defaultLogFileCount = 7;
static const int defaultPersistentLogLevel = 2;
static const int defaultApiTimeout = 15000; // 15s
static const int defaultIosSandboxSubsRenewalSpeed = 2;
static const int defaultTrackingNotificationPermissionPassLimitTimes = 10;
@JsonKey(name: "property_cache_size", defaultValue: 256)
final int propertyCacheSize;
@JsonKey(name: "enable_dithering", defaultValue: true)
final bool enableDithering;
@JsonKey(name: "disable_rewards_ads", defaultValue: false)
final bool disableRewardsAds;
@JsonKey(name: "enable_analytics_statistic", defaultValue: true)
final bool enableAnalyticsStatistic;
@JsonKey(name: "auto_restore_iap", defaultValue: true)
final bool autoRestoreIap;
@JsonKey(name: "init_igc", defaultValue: 500)
final int initIgc;
@JsonKey(name: "igc_balance_secret", defaultValue: defaultIgcBalanceSecret)
final int igcBalanceSecret;
@JsonKey(name: "sync_account_profile", defaultValue: true)
final bool syncAccountProfile;
@JsonKey(name: "auto_request_notification_permission", defaultValue: false)
final bool autoRequestNotificationPermission;
@JsonKey(name: "log_file_size_limit", defaultValue: defaultLogFileSizeLimit)
final int logFileSizeLimit;
@JsonKey(name: "log_file_count", defaultValue: defaultLogFileCount)
final int logFileCount;
@JsonKey(name: "persistent_log_level", defaultValue: defaultPersistentLogLevel)
final int persistentLogLevel;
@JsonKey(name: "ios_validate_receipt_password")
final String? iosValidateReceiptPassword;
@JsonKey(name: "conversion_events", defaultValue: {})
final Set<String> conversionEvents;
@JsonKey(name: "api_connect_timeout", defaultValue: defaultApiTimeout)
final int apiConnectTimeout;
@JsonKey(name: "api_receive_timeout", defaultValue: defaultApiTimeout)
final int apiReceiveTimeout;
@JsonKey(name: "ios_sandbox_subs_renewal_speed", defaultValue: defaultIosSandboxSubsRenewalSpeed)
final int iosSandboxSubsRenewalSpeed;
@JsonKey(name: "ads_compliant_initialization", defaultValue: false)
final bool adsCompliantInitialization;
@JsonKey(name: "notification_permission_prompt_trigger", defaultValue: PromptTrigger.rationale)
final PromptTrigger notificationPermissionPromptTrigger;
@JsonKey(name: "tracking_notification_permission_pass", defaultValue: false)
final bool trackingNotificationPermissionPass;
@JsonKey(
name: "tracking_notification_permission_pass_limit_times",
defaultValue: defaultTrackingNotificationPermissionPassLimitTimes)
final int trackingNotificationPermissionPassLimitTimes;
@JsonKey(name: "enabled_guru_analytics_strategy", defaultValue: false)
final bool enabledGuruAnalyticsStrategy;
@JsonKey(name: "allow_interstitial_as_alternative_reward", defaultValue: false)
final bool allowInterstitialAsAlternativeReward;
@JsonKey(name: "show_internal_ads_when_banner_unavailable", defaultValue: false)
final bool showInternalAdsWhenBannerUnavailable;
Deployment(
{this.propertyCacheSize = 256,
this.enableDithering = true,
this.disableRewardsAds = false,
this.enableAnalyticsStatistic = true,
this.autoRestoreIap = false,
this.initIgc = 0,
this.igcBalanceSecret = defaultIgcBalanceSecret,
this.syncAccountProfile = true,
this.autoRequestNotificationPermission = false,
this.logFileSizeLimit = defaultLogFileSizeLimit,
this.logFileCount = defaultLogFileCount,
this.persistentLogLevel = defaultPersistentLogLevel,
this.iosValidateReceiptPassword,
this.conversionEvents = const {},
this.apiConnectTimeout = defaultApiTimeout,
this.apiReceiveTimeout = defaultApiTimeout,
this.iosSandboxSubsRenewalSpeed = defaultIosSandboxSubsRenewalSpeed,
this.adsCompliantInitialization = false,
this.notificationPermissionPromptTrigger = PromptTrigger.rationale,
this.trackingNotificationPermissionPass = false,
this.trackingNotificationPermissionPassLimitTimes =
defaultTrackingNotificationPermissionPassLimitTimes,
this.enabledGuruAnalyticsStrategy = false,
this.allowInterstitialAsAlternativeReward = false,
this.showInternalAdsWhenBannerUnavailable = false});
factory Deployment.fromJson(Map<String, dynamic> json) => _$DeploymentFromJson(json);
Map<String, dynamic> toJson() => _$DeploymentToJson(this);
}
@JsonSerializable()
class RemoteDeployment {
@JsonKey(name: "keep_screen_on_duration_m", defaultValue: 0)
final int keepScreenOnDuration;
RemoteDeployment({this.keepScreenOnDuration = 0});
factory RemoteDeployment.fromJson(Map<String, dynamic> json) => _$RemoteDeploymentFromJson(json);
Map<String, dynamic> toJson() => _$RemoteDeploymentToJson(this);
}