115 lines
3.3 KiB
Dart
115 lines
3.3 KiB
Dart
import 'wiz_provisioning_device.dart';
|
|
import 'wiz_provisioning_environment.dart';
|
|
import 'wiz_provisioning_failure.dart';
|
|
|
|
enum WizProvisioningStatus {
|
|
initial,
|
|
loadingEnvironment,
|
|
attentionRequired,
|
|
ready,
|
|
provisioning,
|
|
rescanning,
|
|
success,
|
|
failure,
|
|
unsupported,
|
|
}
|
|
|
|
class WizRescanSummary {
|
|
final int found;
|
|
final int added;
|
|
final int updated;
|
|
final int removedOffline;
|
|
final int pendingRemoval;
|
|
final int online;
|
|
|
|
const WizRescanSummary({
|
|
required this.found,
|
|
required this.added,
|
|
required this.updated,
|
|
required this.removedOffline,
|
|
required this.pendingRemoval,
|
|
required this.online,
|
|
});
|
|
|
|
factory WizRescanSummary.fromMap(Map<String, dynamic> raw) {
|
|
return WizRescanSummary(
|
|
found: (raw['found'] as num?)?.toInt() ?? 0,
|
|
added: (raw['added'] as num?)?.toInt() ?? 0,
|
|
updated: (raw['updated'] as num?)?.toInt() ?? 0,
|
|
removedOffline: (raw['removed_offline'] as num?)?.toInt() ?? 0,
|
|
pendingRemoval: (raw['pending_removal'] as num?)?.toInt() ?? 0,
|
|
online: (raw['online'] as num?)?.toInt() ?? 0,
|
|
);
|
|
}
|
|
}
|
|
|
|
class WizProvisioningState {
|
|
final WizProvisioningStatus status;
|
|
final WizProvisioningEnvironment environment;
|
|
final String? activeHomeName;
|
|
final WizProvisioningFailure? failure;
|
|
final WizRescanSummary? rescanSummary;
|
|
final List<WizProvisioningDevice> provisionedDevices;
|
|
final List<String> timeline;
|
|
final String? notice;
|
|
|
|
const WizProvisioningState({
|
|
required this.status,
|
|
required this.environment,
|
|
required this.activeHomeName,
|
|
required this.failure,
|
|
required this.rescanSummary,
|
|
required this.provisionedDevices,
|
|
required this.timeline,
|
|
required this.notice,
|
|
});
|
|
|
|
factory WizProvisioningState.initial() => WizProvisioningState(
|
|
status: WizProvisioningStatus.initial,
|
|
environment: WizProvisioningEnvironment.unsupported(),
|
|
activeHomeName: null,
|
|
failure: null,
|
|
rescanSummary: null,
|
|
provisionedDevices: const [],
|
|
timeline: const [],
|
|
notice: null,
|
|
);
|
|
|
|
bool get isBusy =>
|
|
status == WizProvisioningStatus.loadingEnvironment ||
|
|
status == WizProvisioningStatus.provisioning ||
|
|
status == WizProvisioningStatus.rescanning;
|
|
|
|
bool get canStart =>
|
|
status == WizProvisioningStatus.ready ||
|
|
status == WizProvisioningStatus.failure ||
|
|
status == WizProvisioningStatus.attentionRequired;
|
|
|
|
WizProvisioningState copyWith({
|
|
WizProvisioningStatus? status,
|
|
WizProvisioningEnvironment? environment,
|
|
String? activeHomeName,
|
|
WizProvisioningFailure? failure,
|
|
bool clearFailure = false,
|
|
WizRescanSummary? rescanSummary,
|
|
bool clearRescanSummary = false,
|
|
List<WizProvisioningDevice>? provisionedDevices,
|
|
List<String>? timeline,
|
|
String? notice,
|
|
bool clearNotice = false,
|
|
}) {
|
|
return WizProvisioningState(
|
|
status: status ?? this.status,
|
|
environment: environment ?? this.environment,
|
|
activeHomeName: activeHomeName ?? this.activeHomeName,
|
|
failure: clearFailure ? null : (failure ?? this.failure),
|
|
rescanSummary: clearRescanSummary
|
|
? null
|
|
: (rescanSummary ?? this.rescanSummary),
|
|
provisionedDevices: provisionedDevices ?? this.provisionedDevices,
|
|
timeline: timeline ?? this.timeline,
|
|
notice: clearNotice ? null : (notice ?? this.notice),
|
|
);
|
|
}
|
|
}
|