- Setting.fromDocument con valores por defecto (null-safe) - SettingsProvider crea Setting vacio si el backend falla - support_view: guard para settings null - profile_view: seccion 'Acceso con correo' con toggle, campos email/password/confirmar, envia OTP, verifica codigo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
74 lines
2.7 KiB
Dart
74 lines
2.7 KiB
Dart
class Setting {
|
|
final bool tarifas;
|
|
final bool domicilios;
|
|
final bool google;
|
|
final String versionIos;
|
|
final String versionAndroid;
|
|
final String horaNotificacion;
|
|
final String tituloSoporte;
|
|
final String parrafoSoporte;
|
|
final String numeroSoporte;
|
|
final String emailSoporte;
|
|
final String diasSoporte;
|
|
final String horasSoporte;
|
|
final String politicasPrivacidad;
|
|
final String politicasPrivacidadTitle;
|
|
final String politicasPrivacidadBody;
|
|
final String terminosCondiciones;
|
|
final String terminosCondicionesTitle;
|
|
final String terminosCondicionesBody;
|
|
|
|
const Setting({
|
|
required this.tarifas,
|
|
required this.domicilios,
|
|
required this.google,
|
|
required this.versionIos,
|
|
required this.versionAndroid,
|
|
required this.horaNotificacion,
|
|
required this.tituloSoporte,
|
|
required this.parrafoSoporte,
|
|
required this.numeroSoporte,
|
|
required this.emailSoporte,
|
|
required this.diasSoporte,
|
|
required this.horasSoporte,
|
|
required this.politicasPrivacidad,
|
|
required this.politicasPrivacidadTitle,
|
|
required this.politicasPrivacidadBody,
|
|
required this.terminosCondiciones,
|
|
required this.terminosCondicionesTitle,
|
|
required this.terminosCondicionesBody,
|
|
});
|
|
|
|
static bool _b(dynamic v, [bool d = false]) {
|
|
if (v == null) return d;
|
|
if (v is bool) return v;
|
|
return v.toString() == 'true';
|
|
}
|
|
|
|
static String _s(dynamic v, [String d = '']) => v?.toString() ?? d;
|
|
|
|
static Setting fromDocument(Map<String, dynamic> doc) {
|
|
return Setting(
|
|
tarifas: _b(doc['tarifas']),
|
|
domicilios: _b(doc['domicilios']),
|
|
google: _b(doc['google']),
|
|
versionIos: _s(doc['version_ios']),
|
|
versionAndroid: _s(doc['version_android']),
|
|
horaNotificacion: _s(doc['hora_notificacion']),
|
|
tituloSoporte: _s(doc['titulo_soporte'], 'Soporte ProsApp'),
|
|
parrafoSoporte: _s(doc['parrafo_soporte'],
|
|
'Estamos aquí para ayudarte. Contáctanos por cualquiera de estos canales.'),
|
|
numeroSoporte: _s(doc['numero_soporte'] ?? doc['support_phone']),
|
|
emailSoporte: _s(doc['email_soporte'] ?? doc['support_email']),
|
|
diasSoporte: _s(doc['dias_soporte'] ?? doc['support_days'], 'Lunes a Viernes'),
|
|
horasSoporte: _s(doc['horas_soporte'] ?? doc['support_hours'], '8:00 am - 6:00 pm'),
|
|
politicasPrivacidad: _s(doc['politicas_privacidad']),
|
|
politicasPrivacidadTitle: _s(doc['politicas_privacidad_title']),
|
|
politicasPrivacidadBody: _s(doc['politicas_privacidad_body']),
|
|
terminosCondiciones: _s(doc['terminos_condiciones']),
|
|
terminosCondicionesTitle: _s(doc['terminos_condiciones_title']),
|
|
terminosCondicionesBody: _s(doc['terminos_condiciones_body']),
|
|
);
|
|
}
|
|
}
|