148 lines
3.6 KiB
Dart
148 lines
3.6 KiB
Dart
// Package imports:
|
|
import 'package:built_value/built_value.dart';
|
|
import 'package:built_value/serializer.dart';
|
|
import 'package:invoiceninja_flutter/constants.dart';
|
|
import 'package:version/version.dart';
|
|
|
|
// Project imports:
|
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
|
|
|
part 'account_model.g.dart';
|
|
|
|
abstract class AccountEntity
|
|
implements Built<AccountEntity, AccountEntityBuilder> {
|
|
factory AccountEntity(bool reportErrors, {String id, AppState state}) {
|
|
return _$AccountEntity._(
|
|
id: '',
|
|
key: '',
|
|
defaultUrl: '',
|
|
plan: '',
|
|
planExpires: '',
|
|
latestVersion: '',
|
|
currentVersion: '',
|
|
reportErrors: reportErrors,
|
|
debugEnabled: false,
|
|
isDocker: false,
|
|
isHosted: false,
|
|
accountSmsVerified: true,
|
|
isSchedulerRunning: false,
|
|
disableAutoUpdate: false,
|
|
isMigrated: false,
|
|
defaultCompanyId: '',
|
|
trialStarted: '',
|
|
hostedClientCount: 0,
|
|
hostedCompanyCount: 1,
|
|
setReactAsDefaultAP: false,
|
|
trialDaysLeft: 0,
|
|
hasIapPlan: false,
|
|
);
|
|
}
|
|
|
|
AccountEntity._();
|
|
|
|
@override
|
|
@memoized
|
|
int get hashCode;
|
|
|
|
String get id;
|
|
|
|
String get key;
|
|
|
|
@BuiltValueField(wireName: 'trial_started')
|
|
String get trialStarted;
|
|
|
|
@BuiltValueField(wireName: 'default_url')
|
|
String get defaultUrl;
|
|
|
|
@BuiltValueField(wireName: 'report_errors')
|
|
bool get reportErrors;
|
|
|
|
String get plan;
|
|
|
|
@BuiltValueField(wireName: 'plan_expires')
|
|
String get planExpires;
|
|
|
|
@BuiltValueField(wireName: 'latest_version')
|
|
String get latestVersion;
|
|
|
|
@BuiltValueField(wireName: 'current_version')
|
|
String get currentVersion;
|
|
|
|
@BuiltValueField(wireName: 'debug_enabled')
|
|
bool get debugEnabled;
|
|
|
|
@BuiltValueField(wireName: 'is_docker')
|
|
bool get isDocker;
|
|
|
|
@BuiltValueField(wireName: 'is_migrated')
|
|
bool get isMigrated;
|
|
|
|
@BuiltValueField(wireName: 'is_hosted')
|
|
bool get isHosted;
|
|
|
|
@BuiltValueField(wireName: 'is_scheduler_running')
|
|
bool get isSchedulerRunning;
|
|
|
|
@BuiltValueField(wireName: 'disable_auto_update')
|
|
bool get disableAutoUpdate;
|
|
|
|
@BuiltValueField(wireName: 'default_company_id')
|
|
String get defaultCompanyId;
|
|
|
|
@BuiltValueField(wireName: 'hosted_client_count')
|
|
int get hostedClientCount;
|
|
|
|
@BuiltValueField(wireName: 'hosted_company_count')
|
|
int get hostedCompanyCount;
|
|
|
|
@BuiltValueField(wireName: 'set_react_as_default_ap')
|
|
bool get setReactAsDefaultAP;
|
|
|
|
@BuiltValueField(wireName: 'account_sms_verified')
|
|
bool get accountSmsVerified;
|
|
|
|
@BuiltValueField(wireName: 'trial_days_left')
|
|
int get trialDaysLeft;
|
|
|
|
@BuiltValueField(wireName: 'has_iap_plan')
|
|
bool get hasIapPlan;
|
|
|
|
bool get isUpdateAvailable {
|
|
if (disableAutoUpdate) {
|
|
return false;
|
|
}
|
|
|
|
if (currentVersion.isEmpty || latestVersion.isEmpty) {
|
|
return false;
|
|
}
|
|
|
|
return Version.parse(currentVersion) < Version.parse(latestVersion);
|
|
}
|
|
|
|
bool get isOld => id.isNotEmpty;
|
|
|
|
bool get isTrial => trialDaysLeft > 0;
|
|
|
|
bool get isEligibleForTrial => trialStarted.isEmpty && plan == kPlanFree;
|
|
|
|
// ignore: unused_element
|
|
static void _initializeBuilder(AccountEntityBuilder builder) => builder
|
|
..key = ''
|
|
..debugEnabled = false
|
|
..isDocker = false
|
|
..isSchedulerRunning = true
|
|
..disableAutoUpdate = false
|
|
..isMigrated = false
|
|
..isHosted = false
|
|
..hasIapPlan = false
|
|
..trialStarted = ''
|
|
..defaultCompanyId = ''
|
|
..trialDaysLeft = 0
|
|
..hostedClientCount = 0
|
|
..hostedCompanyCount = 1
|
|
..accountSmsVerified = true
|
|
..setReactAsDefaultAP = false;
|
|
|
|
static Serializer<AccountEntity> get serializer => _$accountEntitySerializer;
|
|
}
|