exportAll method

Future<Map<String, dynamic>> exportAll()

Implementation

Future<Map<String, dynamic>> exportAll() async {
  try {
    final secureKeys = await secure.getKeys();
    final prefsKeys = prefs.getKeys();
    final cacheInfo = await images.getCacheInfo();

    final Map<String, dynamic> exportData = {
      'version': '1.0.0',
      'exportedAt': DateTime.now().toIso8601String(),
      'auth': auth.export(),
      'secure': {},
      'prefs': {},
      'images': {
        'count': cacheInfo.fileCount,
        'size': cacheInfo.totalSize,
        'metadata': images.getImagesMetadata().map(
              (url, date) => MapEntry(url, date.toIso8601String()),
        ),
      },
    };

    for (var key in secureKeys) {
      exportData['secure'][key] = await secure.read(key);
    }

    for (var key in prefsKeys) {
      exportData['prefs'][key] = await prefs.read(key);
    }

    return exportData;
  } catch (e) {
    throw StorageException(
      'Error exportando datos',
      details: e.toString(),
    );
  }
}