App móvil Flutter para capturar contenido multimedia, etiquetarlo con hashes y enviarlo a backends configurables. Features: - Captura de fotos, audio, video y archivos - Sistema de etiquetas con bibliotecas externas (HST) - Packs de etiquetas predefinidos - Cola de reintentos (hasta 20 contenedores) - Soporte GPS - Hash SHA-256 auto-generado por contenedor - Persistencia SQLite local - Múltiples destinos configurables Stack: Flutter 3.38.5, flutter_bloc, sqflite, dio 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
46 lines
1.2 KiB
Dart
46 lines
1.2 KiB
Dart
class AppConstants {
|
|
static const int maxPendientes = 20;
|
|
static const int maxReintentos = 20;
|
|
static const int hashLength = 64;
|
|
static const int chunkSize = 512 * 1024; // 512KB
|
|
|
|
static const String hstBibliotecaHash =
|
|
'b7149f9e2106c566032aeb29a26e4c6cdd5f5c16b4421025c58166ee345740d1';
|
|
static const String hstApiUrl = 'https://tzrtech.org';
|
|
static const String hstApiEndpoint = '/api/tags';
|
|
|
|
static const Duration httpTimeout = Duration(seconds: 30);
|
|
static const Duration retryCheckInterval = Duration(seconds: 30);
|
|
}
|
|
|
|
class RetryDelays {
|
|
static const List<Duration> delays = [
|
|
Duration(minutes: 1),
|
|
Duration(minutes: 2),
|
|
Duration(minutes: 5),
|
|
Duration(minutes: 10),
|
|
Duration(minutes: 20),
|
|
Duration(minutes: 30),
|
|
Duration(hours: 1),
|
|
Duration(hours: 2),
|
|
Duration(hours: 3),
|
|
Duration(hours: 4),
|
|
Duration(hours: 5),
|
|
Duration(hours: 6),
|
|
Duration(hours: 6),
|
|
Duration(hours: 6),
|
|
Duration(hours: 8),
|
|
Duration(hours: 8),
|
|
Duration(hours: 8),
|
|
Duration(hours: 8),
|
|
Duration(hours: 6),
|
|
];
|
|
|
|
static Duration getDelay(int intento) {
|
|
if (intento < 0 || intento >= delays.length) {
|
|
return Duration.zero;
|
|
}
|
|
return delays[intento];
|
|
}
|
|
}
|