// 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 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; } }