feat(do-not-disturb): add DND schedule feature with capabilities-driven UI
This commit is contained in:
@@ -70,6 +70,7 @@ class AppRoutes {
|
||||
static const activityMeter = '$deviceManagement/activity_meter';
|
||||
static const appsUse = '$deviceManagement/apps_use';
|
||||
static const volumeControl = '$deviceManagement/volume_control';
|
||||
static const doNotDisturb = '$deviceManagement/do_not_disturb';
|
||||
static const callHistory = '$deviceManagement/call_history';
|
||||
static const backgroundImage = '$deviceManagement/background_image';
|
||||
|
||||
|
||||
@@ -668,7 +668,8 @@
|
||||
"errorActivityData": "Aktivitätsdaten konnten nicht geladen werden",
|
||||
"errorPedometer": "Der Schrittzähler konnte nicht aktualisiert werden",
|
||||
"errorContactsMin": "Das Gerät muss mindestens einen Kontakt haben",
|
||||
"errorContactsMax": "Das Gerät kann nicht mehr als 10 Kontakte haben",
|
||||
"errorContactsMax": "Maximale Kontaktanzahl für dieses Gerät erreicht",
|
||||
"errorSosContactsMax": "Maximale SOS-Kontaktanzahl für dieses Gerät erreicht",
|
||||
"customBackground": "Benutzerdefiniertes Hintergrundbild",
|
||||
"backgroundImageDescription": "Legen Sie ein Foto als benutzerdefinierten Bildschirmschoner für das Gerät fest",
|
||||
"backgroundImageTapToSelect": "Tippen Sie, um ein Foto auszuwählen",
|
||||
@@ -773,6 +774,29 @@
|
||||
"deviceSettings": "Einstellungen",
|
||||
"disableFunctions": "Funktionen deaktivieren",
|
||||
"doNotDisturb": "Nicht stören",
|
||||
"doNotDisturbDescription": "Wenn aktiviert, werden alle Benachrichtigungen, Anrufe und Alarme auf der Uhr stummgeschaltet. Nur Anrufe von SOS-Kontakten werden zugelassen.",
|
||||
"doNotDisturbStatusOn": "Aktiviert",
|
||||
"doNotDisturbStatusOff": "Deaktiviert",
|
||||
"doNotDisturbEnabled": "Nicht stören aktiviert",
|
||||
"doNotDisturbDisabled": "Nicht stören deaktiviert",
|
||||
"doNotDisturbError": "Fehler beim Ändern des Nicht-stören-Modus",
|
||||
"doNotDisturbEmpty": "Keine Zeiträume konfiguriert",
|
||||
"doNotDisturbAddPeriod": "Zeitraum hinzufügen",
|
||||
"doNotDisturbEditPeriod": "Zeitraum bearbeiten",
|
||||
"doNotDisturbMaxPeriods": "Maximal {max} Zeiträume erlaubt",
|
||||
"doNotDisturbSave": "Änderungen speichern",
|
||||
"doNotDisturbSaved": "Zeiträume gespeichert",
|
||||
"doNotDisturbConfirm": "Bestätigen",
|
||||
"doNotDisturbStart": "Beginn",
|
||||
"doNotDisturbEnd": "Ende",
|
||||
"doNotDisturbDays": "Wochentage",
|
||||
"weekdayMonShort": "M",
|
||||
"weekdayTueShort": "D",
|
||||
"weekdayWedShort": "M",
|
||||
"weekdayThuShort": "D",
|
||||
"weekdayFriShort": "F",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "S",
|
||||
"editDeviceTitle": "Gerät bearbeiten",
|
||||
"enterEmail": "Geben Sie Ihre E-Mail ein",
|
||||
"enterMessage": "Ihre Nachricht",
|
||||
|
||||
@@ -531,6 +531,29 @@
|
||||
"activityScheduleTitle": "Calendar",
|
||||
"contactsAgendaTitle": "Contacts",
|
||||
"doNotDisturb": "Do not disturb",
|
||||
"doNotDisturbDescription": "When enabled, the watch will silence all notifications, calls, and alerts. Only SOS contacts calls will be allowed.",
|
||||
"doNotDisturbStatusOn": "Enabled",
|
||||
"doNotDisturbStatusOff": "Disabled",
|
||||
"doNotDisturbEnabled": "Do not disturb enabled",
|
||||
"doNotDisturbDisabled": "Do not disturb disabled",
|
||||
"doNotDisturbError": "Error changing do not disturb mode",
|
||||
"doNotDisturbEmpty": "No periods configured",
|
||||
"doNotDisturbAddPeriod": "Add period",
|
||||
"doNotDisturbEditPeriod": "Edit period",
|
||||
"doNotDisturbMaxPeriods": "Maximum {max} periods allowed",
|
||||
"doNotDisturbSave": "Save changes",
|
||||
"doNotDisturbSaved": "Periods saved successfully",
|
||||
"doNotDisturbConfirm": "Confirm",
|
||||
"doNotDisturbStart": "Start",
|
||||
"doNotDisturbEnd": "End",
|
||||
"doNotDisturbDays": "Days of the week",
|
||||
"weekdayMonShort": "M",
|
||||
"weekdayTueShort": "T",
|
||||
"weekdayWedShort": "W",
|
||||
"weekdayThuShort": "T",
|
||||
"weekdayFriShort": "F",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "S",
|
||||
"videoCall": "Video call",
|
||||
"healthTitle": "Health",
|
||||
"healthEmpty": "No health data",
|
||||
@@ -797,7 +820,8 @@
|
||||
"errorActivityData": "Could not load activity data",
|
||||
"errorPedometer": "Could not update pedometer",
|
||||
"errorContactsMin": "The device must have at least one contact",
|
||||
"errorContactsMax": "The device cannot have more than 10 contacts",
|
||||
"errorContactsMax": "Maximum contacts reached for this device",
|
||||
"errorSosContactsMax": "Maximum SOS contacts reached for this device",
|
||||
"customBackground": "Custom background image",
|
||||
"backgroundImageDescription": "Set a photo as a custom screensaver for the device",
|
||||
"backgroundImageTapToSelect": "Tap to select a photo",
|
||||
|
||||
@@ -532,6 +532,29 @@
|
||||
"activityScheduleTitle": "Horario de actividades",
|
||||
"contactsAgendaTitle": "Agenda",
|
||||
"doNotDisturb": "No molestar",
|
||||
"doNotDisturbDescription": "Cuando está activado, el reloj silenciará todas las notificaciones, llamadas y alertas. Solo se permitirán llamadas de contactos SOS.",
|
||||
"doNotDisturbStatusOn": "Activado",
|
||||
"doNotDisturbStatusOff": "Desactivado",
|
||||
"doNotDisturbEnabled": "No molestar activado",
|
||||
"doNotDisturbDisabled": "No molestar desactivado",
|
||||
"doNotDisturbError": "Error al cambiar modo no molestar",
|
||||
"doNotDisturbEmpty": "Sin periodos configurados",
|
||||
"doNotDisturbAddPeriod": "Añadir periodo",
|
||||
"doNotDisturbEditPeriod": "Editar periodo",
|
||||
"doNotDisturbMaxPeriods": "Máximo {max} periodos permitidos",
|
||||
"doNotDisturbSave": "Guardar cambios",
|
||||
"doNotDisturbSaved": "Periodos guardados correctamente",
|
||||
"doNotDisturbConfirm": "Confirmar",
|
||||
"doNotDisturbStart": "Inicio",
|
||||
"doNotDisturbEnd": "Fin",
|
||||
"doNotDisturbDays": "Días de la semana",
|
||||
"weekdayMonShort": "L",
|
||||
"weekdayTueShort": "M",
|
||||
"weekdayWedShort": "X",
|
||||
"weekdayThuShort": "J",
|
||||
"weekdayFriShort": "V",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "D",
|
||||
"videoCall": "Video llamada",
|
||||
"healthTitle": "Salud",
|
||||
"healthEmpty": "Sin datos de salud",
|
||||
@@ -798,7 +821,8 @@
|
||||
"errorActivityData": "No se pudieron cargar los datos de actividad",
|
||||
"errorPedometer": "No se pudo actualizar el podómetro",
|
||||
"errorContactsMin": "El dispositivo debe tener al menos un contacto",
|
||||
"errorContactsMax": "El dispositivo no puede tener más de 10 contactos",
|
||||
"errorContactsMax": "Se ha alcanzado el máximo de contactos para este dispositivo",
|
||||
"errorSosContactsMax": "Se ha alcanzado el máximo de contactos SOS para este dispositivo",
|
||||
"customBackground": "Fondo de pantalla personalizado",
|
||||
"backgroundImageDescription": "Configura una foto como protector de pantalla exclusivo para el dispositivo",
|
||||
"backgroundImageTapToSelect": "Pulsa para seleccionar una foto",
|
||||
|
||||
@@ -668,7 +668,8 @@
|
||||
"errorActivityData": "Impossible de charger les données d'activité",
|
||||
"errorPedometer": "Impossible de mettre à jour le podomètre",
|
||||
"errorContactsMin": "L'appareil doit avoir au moins un contact",
|
||||
"errorContactsMax": "L'appareil ne peut pas avoir plus de 10 contacts",
|
||||
"errorContactsMax": "Nombre maximum de contacts atteint pour cet appareil",
|
||||
"errorSosContactsMax": "Nombre maximum de contacts SOS atteint pour cet appareil",
|
||||
"customBackground": "Image de fond personnalisée",
|
||||
"backgroundImageDescription": "Définissez une photo comme écran de veille personnalisé pour l'appareil",
|
||||
"backgroundImageTapToSelect": "Appuyez pour sélectionner une photo",
|
||||
@@ -773,6 +774,29 @@
|
||||
"deviceSettings": "Paramètres",
|
||||
"disableFunctions": "Désactiver les fonctions",
|
||||
"doNotDisturb": "Ne pas déranger",
|
||||
"doNotDisturbDescription": "Lorsqu'il est activé, la montre désactivera toutes les notifications, appels et alertes. Seuls les appels des contacts SOS seront autorisés.",
|
||||
"doNotDisturbStatusOn": "Activé",
|
||||
"doNotDisturbStatusOff": "Désactivé",
|
||||
"doNotDisturbEnabled": "Ne pas déranger activé",
|
||||
"doNotDisturbDisabled": "Ne pas déranger désactivé",
|
||||
"doNotDisturbError": "Erreur lors du changement du mode ne pas déranger",
|
||||
"doNotDisturbEmpty": "Aucune période configurée",
|
||||
"doNotDisturbAddPeriod": "Ajouter une période",
|
||||
"doNotDisturbEditPeriod": "Modifier la période",
|
||||
"doNotDisturbMaxPeriods": "Maximum {max} périodes autorisées",
|
||||
"doNotDisturbSave": "Enregistrer",
|
||||
"doNotDisturbSaved": "Périodes enregistrées",
|
||||
"doNotDisturbConfirm": "Confirmer",
|
||||
"doNotDisturbStart": "Début",
|
||||
"doNotDisturbEnd": "Fin",
|
||||
"doNotDisturbDays": "Jours de la semaine",
|
||||
"weekdayMonShort": "L",
|
||||
"weekdayTueShort": "M",
|
||||
"weekdayWedShort": "M",
|
||||
"weekdayThuShort": "J",
|
||||
"weekdayFriShort": "V",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "D",
|
||||
"editDeviceTitle": "Modifier l'appareil",
|
||||
"enterEmail": "Entrez votre e-mail",
|
||||
"enterMessage": "Votre message",
|
||||
|
||||
@@ -668,7 +668,8 @@
|
||||
"errorActivityData": "Impossibile caricare i dati di attività",
|
||||
"errorPedometer": "Impossibile aggiornare il contapassi",
|
||||
"errorContactsMin": "Il dispositivo deve avere almeno un contatto",
|
||||
"errorContactsMax": "Il dispositivo non può avere più di 10 contatti",
|
||||
"errorContactsMax": "Numero massimo di contatti raggiunto per questo dispositivo",
|
||||
"errorSosContactsMax": "Numero massimo di contatti SOS raggiunto per questo dispositivo",
|
||||
"customBackground": "Immagine di sfondo personalizzata",
|
||||
"backgroundImageDescription": "Imposta una foto come screensaver personalizzato per il dispositivo",
|
||||
"backgroundImageTapToSelect": "Tocca per selezionare una foto",
|
||||
@@ -773,6 +774,29 @@
|
||||
"deviceSettings": "Impostazioni",
|
||||
"disableFunctions": "Disattiva funzioni",
|
||||
"doNotDisturb": "Non disturbare",
|
||||
"doNotDisturbDescription": "Quando attivato, l'orologio disattiverà tutte le notifiche, chiamate e avvisi. Saranno consentite solo le chiamate dai contatti SOS.",
|
||||
"doNotDisturbStatusOn": "Attivato",
|
||||
"doNotDisturbStatusOff": "Disattivato",
|
||||
"doNotDisturbEnabled": "Non disturbare attivato",
|
||||
"doNotDisturbDisabled": "Non disturbare disattivato",
|
||||
"doNotDisturbError": "Errore nel cambiare la modalità non disturbare",
|
||||
"doNotDisturbEmpty": "Nessun periodo configurato",
|
||||
"doNotDisturbAddPeriod": "Aggiungi periodo",
|
||||
"doNotDisturbEditPeriod": "Modifica periodo",
|
||||
"doNotDisturbMaxPeriods": "Massimo {max} periodi consentiti",
|
||||
"doNotDisturbSave": "Salva modifiche",
|
||||
"doNotDisturbSaved": "Periodi salvati",
|
||||
"doNotDisturbConfirm": "Conferma",
|
||||
"doNotDisturbStart": "Inizio",
|
||||
"doNotDisturbEnd": "Fine",
|
||||
"doNotDisturbDays": "Giorni della settimana",
|
||||
"weekdayMonShort": "L",
|
||||
"weekdayTueShort": "M",
|
||||
"weekdayWedShort": "M",
|
||||
"weekdayThuShort": "G",
|
||||
"weekdayFriShort": "V",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "D",
|
||||
"editDeviceTitle": "Modifica dispositivo",
|
||||
"enterEmail": "Inserisci la tua email",
|
||||
"enterMessage": "Il tuo messaggio",
|
||||
|
||||
@@ -668,7 +668,8 @@
|
||||
"errorActivityData": "Não foi possível carregar os dados de atividade",
|
||||
"errorPedometer": "Não foi possível atualizar o pedómetro",
|
||||
"errorContactsMin": "O dispositivo deve ter pelo menos um contacto",
|
||||
"errorContactsMax": "O dispositivo não pode ter mais de 10 contactos",
|
||||
"errorContactsMax": "Número máximo de contactos atingido para este dispositivo",
|
||||
"errorSosContactsMax": "Número máximo de contactos SOS atingido para este dispositivo",
|
||||
"customBackground": "Imagem de fundo personalizada",
|
||||
"backgroundImageDescription": "Defina uma foto como protetor de ecrã personalizado para o dispositivo",
|
||||
"backgroundImageTapToSelect": "Toque para selecionar uma foto",
|
||||
@@ -773,6 +774,29 @@
|
||||
"deviceSettings": "Configurações",
|
||||
"disableFunctions": "Desativar funções",
|
||||
"doNotDisturb": "Não perturbe",
|
||||
"doNotDisturbDescription": "Quando ativado, o relógio silenciará todas as notificações, chamadas e alertas. Apenas chamadas de contactos SOS serão permitidas.",
|
||||
"doNotDisturbStatusOn": "Ativado",
|
||||
"doNotDisturbStatusOff": "Desativado",
|
||||
"doNotDisturbEnabled": "Não perturbe ativado",
|
||||
"doNotDisturbDisabled": "Não perturbe desativado",
|
||||
"doNotDisturbError": "Erro ao alterar o modo não perturbe",
|
||||
"doNotDisturbEmpty": "Sem períodos configurados",
|
||||
"doNotDisturbAddPeriod": "Adicionar período",
|
||||
"doNotDisturbEditPeriod": "Editar período",
|
||||
"doNotDisturbMaxPeriods": "Máximo {max} períodos permitidos",
|
||||
"doNotDisturbSave": "Guardar alterações",
|
||||
"doNotDisturbSaved": "Períodos guardados",
|
||||
"doNotDisturbConfirm": "Confirmar",
|
||||
"doNotDisturbStart": "Início",
|
||||
"doNotDisturbEnd": "Fim",
|
||||
"doNotDisturbDays": "Dias da semana",
|
||||
"weekdayMonShort": "S",
|
||||
"weekdayTueShort": "T",
|
||||
"weekdayWedShort": "Q",
|
||||
"weekdayThuShort": "Q",
|
||||
"weekdayFriShort": "S",
|
||||
"weekdaySatShort": "S",
|
||||
"weekdaySunShort": "D",
|
||||
"editDeviceTitle": "Editar dispositivo",
|
||||
"enterEmail": "Insira seu e-mail",
|
||||
"enterMessage": "Sua mensagem",
|
||||
|
||||
@@ -317,6 +317,29 @@ class I18n {
|
||||
static const String documentTypeNie = 'documentTypeNie';
|
||||
static const String documentTypePassport = 'documentTypePassport';
|
||||
static const String doNotDisturb = 'doNotDisturb';
|
||||
static const String doNotDisturbDescription = 'doNotDisturbDescription';
|
||||
static const String doNotDisturbStatusOn = 'doNotDisturbStatusOn';
|
||||
static const String doNotDisturbStatusOff = 'doNotDisturbStatusOff';
|
||||
static const String doNotDisturbEnabled = 'doNotDisturbEnabled';
|
||||
static const String doNotDisturbDisabled = 'doNotDisturbDisabled';
|
||||
static const String doNotDisturbError = 'doNotDisturbError';
|
||||
static const String doNotDisturbEmpty = 'doNotDisturbEmpty';
|
||||
static const String doNotDisturbAddPeriod = 'doNotDisturbAddPeriod';
|
||||
static const String doNotDisturbEditPeriod = 'doNotDisturbEditPeriod';
|
||||
static const String doNotDisturbMaxPeriods = 'doNotDisturbMaxPeriods';
|
||||
static const String doNotDisturbSave = 'doNotDisturbSave';
|
||||
static const String doNotDisturbSaved = 'doNotDisturbSaved';
|
||||
static const String doNotDisturbConfirm = 'doNotDisturbConfirm';
|
||||
static const String doNotDisturbStart = 'doNotDisturbStart';
|
||||
static const String doNotDisturbEnd = 'doNotDisturbEnd';
|
||||
static const String doNotDisturbDays = 'doNotDisturbDays';
|
||||
static const String weekdayMonShort = 'weekdayMonShort';
|
||||
static const String weekdayTueShort = 'weekdayTueShort';
|
||||
static const String weekdayWedShort = 'weekdayWedShort';
|
||||
static const String weekdayThuShort = 'weekdayThuShort';
|
||||
static const String weekdayFriShort = 'weekdayFriShort';
|
||||
static const String weekdaySatShort = 'weekdaySatShort';
|
||||
static const String weekdaySunShort = 'weekdaySunShort';
|
||||
static const String dontHaveAccount = 'dontHaveAccount';
|
||||
static const String download = 'download';
|
||||
static const String editAlarm = 'editAlarm';
|
||||
@@ -350,6 +373,7 @@ class I18n {
|
||||
static const String errorBirthDateRequired = 'errorBirthDateRequired';
|
||||
static const String errorCall = 'errorCall';
|
||||
static const String errorContactsMax = 'errorContactsMax';
|
||||
static const String errorSosContactsMax = 'errorSosContactsMax';
|
||||
static const String errorContactsMin = 'errorContactsMin';
|
||||
static const String errorDisableFunctions = 'errorDisableFunctions';
|
||||
static const String errorDocumentNumberRequired =
|
||||
|
||||
@@ -18,6 +18,13 @@ abstract class DeviceCapabilitiesModel with _$DeviceCapabilitiesModel {
|
||||
DeviceCapabilityTakepillsModel? takepills,
|
||||
DeviceCapabilityOptionModel? location,
|
||||
DeviceCapabilityCameraModel? camera,
|
||||
DeviceCapabilityDoNotDisturbModel? doNotDisturbs,
|
||||
DeviceCapabilityAlarmsModel? alarms,
|
||||
DeviceCapabilityAppUsageModel? appUsageSchedules,
|
||||
DeviceCapabilityEnabledModel? keyboard,
|
||||
DeviceCapabilityEnabledModel? nightMode,
|
||||
DeviceCapabilityEnabledModel? wifi,
|
||||
DeviceCapabilityEnabledModel? deviceBackground,
|
||||
}) = _DeviceCapabilitiesModel;
|
||||
|
||||
factory DeviceCapabilitiesModel.fromJson(Map<String, dynamic> json) =>
|
||||
@@ -131,6 +138,39 @@ abstract class DeviceCapabilityCameraModel with _$DeviceCapabilityCameraModel {
|
||||
_$DeviceCapabilityCameraModelFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityDoNotDisturbModel with _$DeviceCapabilityDoNotDisturbModel {
|
||||
const factory DeviceCapabilityDoNotDisturbModel({
|
||||
@Default(4) int maxPeriods,
|
||||
}) = _DeviceCapabilityDoNotDisturbModel;
|
||||
|
||||
factory DeviceCapabilityDoNotDisturbModel.fromJson(Map<String, dynamic> json) =>
|
||||
_$DeviceCapabilityDoNotDisturbModelFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityAlarmsModel
|
||||
with _$DeviceCapabilityAlarmsModel {
|
||||
const factory DeviceCapabilityAlarmsModel({
|
||||
@Default(false) bool enabled,
|
||||
@Default(3) int maxAlarms,
|
||||
}) = _DeviceCapabilityAlarmsModel;
|
||||
|
||||
factory DeviceCapabilityAlarmsModel.fromJson(Map<String, dynamic> json) =>
|
||||
_$DeviceCapabilityAlarmsModelFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityAppUsageModel
|
||||
with _$DeviceCapabilityAppUsageModel {
|
||||
const factory DeviceCapabilityAppUsageModel({
|
||||
@Default(3) int maxPeriods,
|
||||
}) = _DeviceCapabilityAppUsageModel;
|
||||
|
||||
factory DeviceCapabilityAppUsageModel.fromJson(Map<String, dynamic> json) =>
|
||||
_$DeviceCapabilityAppUsageModelFromJson(json);
|
||||
}
|
||||
|
||||
extension DeviceCapabilitiesModelMapper on DeviceCapabilitiesModel {
|
||||
DeviceCapabilitiesEntity toEntity() => DeviceCapabilitiesEntity(
|
||||
heartbeats: heartbeats != null
|
||||
@@ -198,5 +238,31 @@ extension DeviceCapabilitiesModelMapper on DeviceCapabilitiesModel {
|
||||
enabled: camera!.enabled,
|
||||
)
|
||||
: null,
|
||||
doNotDisturbs: doNotDisturbs != null
|
||||
? DeviceCapabilityDoNotDisturbEntity(maxPeriods: doNotDisturbs!.maxPeriods)
|
||||
: null,
|
||||
alarms: alarms != null
|
||||
? DeviceCapabilityAlarmsEntity(
|
||||
enabled: alarms!.enabled,
|
||||
maxAlarms: alarms!.maxAlarms,
|
||||
)
|
||||
: null,
|
||||
appUsageSchedules: appUsageSchedules != null
|
||||
? DeviceCapabilityAppUsageEntity(
|
||||
maxPeriods: appUsageSchedules!.maxPeriods,
|
||||
)
|
||||
: null,
|
||||
keyboard: keyboard != null
|
||||
? DeviceCapabilityEnabledEntity(enabled: keyboard!.enabled)
|
||||
: null,
|
||||
nightMode: nightMode != null
|
||||
? DeviceCapabilityEnabledEntity(enabled: nightMode!.enabled)
|
||||
: null,
|
||||
wifi: wifi != null
|
||||
? DeviceCapabilityEnabledEntity(enabled: wifi!.enabled)
|
||||
: null,
|
||||
deviceBackground: deviceBackground != null
|
||||
? DeviceCapabilityEnabledEntity(enabled: deviceBackground!.enabled)
|
||||
: null,
|
||||
);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,6 +59,41 @@ _DeviceCapabilitiesModel _$DeviceCapabilitiesModelFromJson(
|
||||
: DeviceCapabilityCameraModel.fromJson(
|
||||
json['camera'] as Map<String, dynamic>,
|
||||
),
|
||||
doNotDisturbs: json['doNotDisturbs'] == null
|
||||
? null
|
||||
: DeviceCapabilityDoNotDisturbModel.fromJson(
|
||||
json['doNotDisturbs'] as Map<String, dynamic>,
|
||||
),
|
||||
alarms: json['alarms'] == null
|
||||
? null
|
||||
: DeviceCapabilityAlarmsModel.fromJson(
|
||||
json['alarms'] as Map<String, dynamic>,
|
||||
),
|
||||
appUsageSchedules: json['appUsageSchedules'] == null
|
||||
? null
|
||||
: DeviceCapabilityAppUsageModel.fromJson(
|
||||
json['appUsageSchedules'] as Map<String, dynamic>,
|
||||
),
|
||||
keyboard: json['keyboard'] == null
|
||||
? null
|
||||
: DeviceCapabilityEnabledModel.fromJson(
|
||||
json['keyboard'] as Map<String, dynamic>,
|
||||
),
|
||||
nightMode: json['nightMode'] == null
|
||||
? null
|
||||
: DeviceCapabilityEnabledModel.fromJson(
|
||||
json['nightMode'] as Map<String, dynamic>,
|
||||
),
|
||||
wifi: json['wifi'] == null
|
||||
? null
|
||||
: DeviceCapabilityEnabledModel.fromJson(
|
||||
json['wifi'] as Map<String, dynamic>,
|
||||
),
|
||||
deviceBackground: json['deviceBackground'] == null
|
||||
? null
|
||||
: DeviceCapabilityEnabledModel.fromJson(
|
||||
json['deviceBackground'] as Map<String, dynamic>,
|
||||
),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$DeviceCapabilitiesModelToJson(
|
||||
@@ -74,6 +109,13 @@ Map<String, dynamic> _$DeviceCapabilitiesModelToJson(
|
||||
'takepills': instance.takepills,
|
||||
'location': instance.location,
|
||||
'camera': instance.camera,
|
||||
'doNotDisturbs': instance.doNotDisturbs,
|
||||
'alarms': instance.alarms,
|
||||
'appUsageSchedules': instance.appUsageSchedules,
|
||||
'keyboard': instance.keyboard,
|
||||
'nightMode': instance.nightMode,
|
||||
'wifi': instance.wifi,
|
||||
'deviceBackground': instance.deviceBackground,
|
||||
};
|
||||
|
||||
_DeviceCapabilityEnabledModel _$DeviceCapabilityEnabledModelFromJson(
|
||||
@@ -209,3 +251,37 @@ _DeviceCapabilityCameraModel _$DeviceCapabilityCameraModelFromJson(
|
||||
Map<String, dynamic> _$DeviceCapabilityCameraModelToJson(
|
||||
_DeviceCapabilityCameraModel instance,
|
||||
) => <String, dynamic>{'format': instance.format, 'enabled': instance.enabled};
|
||||
|
||||
_DeviceCapabilityDoNotDisturbModel _$DeviceCapabilityDoNotDisturbModelFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _DeviceCapabilityDoNotDisturbModel(
|
||||
maxPeriods: (json['maxPeriods'] as num?)?.toInt() ?? 4,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$DeviceCapabilityDoNotDisturbModelToJson(
|
||||
_DeviceCapabilityDoNotDisturbModel instance,
|
||||
) => <String, dynamic>{'maxPeriods': instance.maxPeriods};
|
||||
|
||||
_DeviceCapabilityAlarmsModel _$DeviceCapabilityAlarmsModelFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _DeviceCapabilityAlarmsModel(
|
||||
enabled: json['enabled'] as bool? ?? false,
|
||||
maxAlarms: (json['maxAlarms'] as num?)?.toInt() ?? 3,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$DeviceCapabilityAlarmsModelToJson(
|
||||
_DeviceCapabilityAlarmsModel instance,
|
||||
) => <String, dynamic>{
|
||||
'enabled': instance.enabled,
|
||||
'maxAlarms': instance.maxAlarms,
|
||||
};
|
||||
|
||||
_DeviceCapabilityAppUsageModel _$DeviceCapabilityAppUsageModelFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _DeviceCapabilityAppUsageModel(
|
||||
maxPeriods: (json['maxPeriods'] as num?)?.toInt() ?? 3,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$DeviceCapabilityAppUsageModelToJson(
|
||||
_DeviceCapabilityAppUsageModel instance,
|
||||
) => <String, dynamic>{'maxPeriods': instance.maxPeriods};
|
||||
|
||||
@@ -15,6 +15,13 @@ abstract class DeviceCapabilitiesEntity with _$DeviceCapabilitiesEntity {
|
||||
DeviceCapabilityTakepillsEntity? takepills,
|
||||
DeviceCapabilityOptionEntity? location,
|
||||
DeviceCapabilityCameraEntity? camera,
|
||||
DeviceCapabilityDoNotDisturbEntity? doNotDisturbs,
|
||||
DeviceCapabilityAlarmsEntity? alarms,
|
||||
DeviceCapabilityAppUsageEntity? appUsageSchedules,
|
||||
DeviceCapabilityEnabledEntity? keyboard,
|
||||
DeviceCapabilityEnabledEntity? nightMode,
|
||||
DeviceCapabilityEnabledEntity? wifi,
|
||||
DeviceCapabilityEnabledEntity? deviceBackground,
|
||||
}) = _DeviceCapabilitiesEntity;
|
||||
}
|
||||
|
||||
@@ -63,6 +70,11 @@ abstract class DeviceCapabilityContactTypeEntity
|
||||
}) = _DeviceCapabilityContactTypeEntity;
|
||||
}
|
||||
|
||||
extension DeviceCapabilityContactsX on DeviceCapabilityContactsEntity {
|
||||
int maxForType(String type, {int fallback = 10}) =>
|
||||
types.where((t) => t.type == type).firstOrNull?.amount ?? fallback;
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilitySettingsEntity
|
||||
with _$DeviceCapabilitySettingsEntity {
|
||||
@@ -99,3 +111,27 @@ abstract class DeviceCapabilityCameraEntity
|
||||
@Default(false) bool enabled,
|
||||
}) = _DeviceCapabilityCameraEntity;
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityDoNotDisturbEntity with _$DeviceCapabilityDoNotDisturbEntity {
|
||||
const factory DeviceCapabilityDoNotDisturbEntity({
|
||||
@Default(4) int maxPeriods,
|
||||
}) = _DeviceCapabilityDoNotDisturbEntity;
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityAlarmsEntity
|
||||
with _$DeviceCapabilityAlarmsEntity {
|
||||
const factory DeviceCapabilityAlarmsEntity({
|
||||
@Default(false) bool enabled,
|
||||
@Default(3) int maxAlarms,
|
||||
}) = _DeviceCapabilityAlarmsEntity;
|
||||
}
|
||||
|
||||
@freezed
|
||||
abstract class DeviceCapabilityAppUsageEntity
|
||||
with _$DeviceCapabilityAppUsageEntity {
|
||||
const factory DeviceCapabilityAppUsageEntity({
|
||||
@Default(3) int maxPeriods,
|
||||
}) = _DeviceCapabilityAppUsageEntity;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,6 +34,11 @@ mixin DeviceTracking on Tracking {
|
||||
'level': level,
|
||||
});
|
||||
|
||||
Future<void> legacyDeviceDoNotDisturbScheduleSaved(int periodsCount) =>
|
||||
trackEvent('${_prefix}_do_not_disturb_schedule_saved', {
|
||||
'periods_count': periodsCount,
|
||||
});
|
||||
|
||||
Future<void> legacyDeviceBackgroundImageChanged() =>
|
||||
trackEvent('${_prefix}_background_image_changed');
|
||||
|
||||
|
||||
5
packages/utils/lib/src/duration_format.dart
Normal file
5
packages/utils/lib/src/duration_format.dart
Normal file
@@ -0,0 +1,5 @@
|
||||
String formatSecondsCompact(int seconds) {
|
||||
if (seconds >= 3600) return '${seconds ~/ 3600}h';
|
||||
if (seconds >= 60) return '${seconds ~/ 60}m';
|
||||
return '${seconds}s';
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
export 'src/date_utils.dart';
|
||||
export 'src/duration_format.dart';
|
||||
export 'src/size_utils.dart';
|
||||
export 'src/test.dart';
|
||||
|
||||
Reference in New Issue
Block a user