39 lines
1.3 KiB
Dart
39 lines
1.3 KiB
Dart
// lib/remote/run_remote_sync.dart
|
|
import 'package:sqflite/sqflite.dart';
|
|
import 'remote_client.dart';
|
|
import 'remote_repository.dart';
|
|
import 'auth_client.dart';
|
|
|
|
/// Esegue login, scarica /photos e fa upsert nel DB.
|
|
/// Configura qui baseUrl/indexPath/email/password (o spostali in Settings).
|
|
Future<void> runRemoteSyncOnce({
|
|
required Database db,
|
|
String baseUrl = 'https://prova.patachina.it',
|
|
String indexPath = 'photos/', // rotta protetta dal tuo server
|
|
String email = 'fabio@gmail.com', // TODO: passare da Settings/secure storage
|
|
String password = 'master66', // idem
|
|
}) async {
|
|
try {
|
|
final auth = RemoteAuth(baseUrl: baseUrl, email: email, password: password);
|
|
// login (facoltativo: RemoteJsonClient lo chiamerebbe on-demand)
|
|
await auth.login();
|
|
|
|
final client = RemoteJsonClient(baseUrl, indexPath, auth: auth);
|
|
final items = await client.fetchAll();
|
|
|
|
print("TIPO ITEMS: ${items.runtimeType}");
|
|
print("TIPO ELEMENTO 0: ${items.first.runtimeType}");
|
|
|
|
|
|
final repo = RemoteRepository(db);
|
|
await repo.upsertAll(items);
|
|
final c = await repo.countRemote();
|
|
|
|
// ignore: avoid_print
|
|
print('[remote-sync] importati remoti: $c (base=$baseUrl, index=$indexPath)');
|
|
} catch (e, st) {
|
|
// ignore: avoid_print
|
|
print('[remote-sync][ERROR] $e\n$st');
|
|
rethrow;
|
|
}
|
|
}
|