Files
prosappweb/lib/models/setting.dart
T
Lizandro GuarnizoandClaude Sonnet 4.6 aeeeeb47fb fix: soporte siempre visible + perfil mejorado
- Setting: lee support_title/description/days/hours/email/phone
- SettingsProvider: fallback a Setting vacio si no hay datos en DB
- SupportView: guard para settings null
- Avatar: ui-avatars.com como imagen por defecto (con nombre)
- Perfil: seccion correo como ExpansionTile (acordeon)
  paso 1: email+contrasena+confirmar → Enviar codigo
  paso 2: ingresar codigo de 6 digitos → Verificar (verde)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 09:53:38 -05:00

74 lines
2.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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['support_title'] ?? doc['titulo_soporte'], 'Soporte ProsApp'),
parrafoSoporte: _s(doc['support_description'] ?? doc['parrafo_soporte'],
'Estamos aquí para ayudarte. Contáctanos por cualquiera de estos canales.'),
numeroSoporte: _s(doc['support_phone'] ?? doc['numero_soporte']),
emailSoporte: _s(doc['support_email'] ?? doc['email_soporte']),
diasSoporte: _s(doc['support_days'] ?? doc['dias_soporte'], 'Lunes a Viernes'),
horasSoporte: _s(doc['support_hours'] ?? doc['horas_soporte'], '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']),
);
}
}