58 lines
1.9 KiB
Dart
58 lines
1.9 KiB
Dart
// lib/remote/collection_source_remote_ext.dart
|
|
//
|
|
// Versione riscritta, semplice e stabile.
|
|
// Nessuna cache remota, nessun diff complicato.
|
|
// Aggiunge sempre i remoti dal DB alla Collection.
|
|
// Compatibile con il tuo remote_controller attuale.
|
|
|
|
import 'package:aves/model/source/collection_source.dart';
|
|
import 'package:aves/model/source/events.dart';
|
|
import 'package:aves/services/common/services.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'remote_origin.dart';
|
|
import 'package:aves/remote/remote_sync_bus.dart';
|
|
|
|
extension CollectionSourceRemoteExt on CollectionSource {
|
|
// ============================================================
|
|
// CARICAMENTO REMOTI DAL DB (VERSIONE SEMPLICE)
|
|
// ============================================================
|
|
|
|
Future<void> appendRemoteEntriesFromDb() async {
|
|
try {
|
|
// 1) carica tutte le entry remote dal DB
|
|
final remotiDb = await localMediaDb.loadEntries(origin: RemoteOrigin.value);
|
|
|
|
if (remotiDb.isEmpty) {
|
|
debugPrint('[remote-append] nessun remoto nel DB');
|
|
return;
|
|
}
|
|
|
|
// 2) tieni solo quelli non cestinati
|
|
final visibili = remotiDb.where((e) => !e.trashed).toSet();
|
|
if (visibili.isEmpty) {
|
|
debugPrint('[remote-append] tutti remoti cestinati → nessun add');
|
|
return;
|
|
}
|
|
|
|
// 3) aggiungi alla Collection (merge automatico)
|
|
addEntries(visibili);
|
|
|
|
// 4) notifica la UI
|
|
eventBus.fire(EntryAddedEvent(visibili));
|
|
|
|
debugPrint('[remote-append] aggiunti=${visibili.length}');
|
|
} catch (e, st) {
|
|
debugPrint('[remote-append] errore: $e\n$st');
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Visibilità dei remoti (usata da CollectionLens)
|
|
extension RemoteVisibilityExt on CollectionSource {
|
|
bool get remoteVisible {
|
|
final state = RemoteSyncBus.instance.stateNotifier.value;
|
|
return state == RemoteSyncState.syncing ||
|
|
state == RemoteSyncState.upToDate;
|
|
}
|
|
}
|