Add WiZ provisioning wizard
This commit is contained in:
114
lib/features/provisioning/models/wiz_provisioning_state.dart
Normal file
114
lib/features/provisioning/models/wiz_provisioning_state.dart
Normal file
@@ -0,0 +1,114 @@
|
||||
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),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user