importData method

Future<void> importData(
  1. Map<String, dynamic> data
)

Implementation

Future<void> importData(Map<String, dynamic> data) async {
  try {
    _stateSubject.add(currentState.copyWith(isLoading: true));

    final version = data['version'] as String?;
    if (version == null) {
      throw StorageException('Datos de importación inválidos: sin versión');
    }

    if (data.containsKey('auth')) {
      await auth.import(data['auth'] as Map<String, dynamic>);
    }

    if (data.containsKey('secure')) {
      final secureData = data['secure'] as Map<String, dynamic>;
      for (var entry in secureData.entries) {
        await secure.write(entry.key, entry.value);
      }
    }

    if (data.containsKey('prefs')) {
      final prefsData = data['prefs'] as Map<String, dynamic>;
      for (var entry in prefsData.entries) {
        await prefs.write(entry.key, entry.value);
      }
    }

    _stateSubject.add(currentState.copyWith(
      isLoading: false,
      lastImportedAt: DateTime.now(),
    ));
  } catch (e) {
    _stateSubject.add(currentState.copyWith(
      error: 'Error importando datos: $e',
      isLoading: false,
    ));
    rethrow;
  }
}