diff --git a/lib/providers/app_provider.dart b/lib/providers/app_provider.dart index 2d470b7..7c95d9b 100644 --- a/lib/providers/app_provider.dart +++ b/lib/providers/app_provider.dart @@ -497,81 +497,96 @@ class AppProvider extends ChangeNotifier { /// 获取已删除的影视 Future> getDeletedMovies() async { + if (_useRemote) return ServerDataService.instance.getDeletedMovies(); return await _movieDao.getDeletedMovies(); } - + /// 恢复影视 Future restoreMovie(String id) async { - await _movieDao.restoreMovie(id); + if (_useRemote) { + await ServerDataService.instance.restoreMovie(id); + } else { + await _movieDao.restoreMovie(id); + } await loadMovies(); } - + /// 彻底删除影视 Future permanentDeleteMovie(String id) async { - // 删除影视对应的图片目录(包括海报和海报墙) await ImagePathHelper.instance.deleteMovieImages(id); - - await _movieDao.permanentDeleteMovie(id); + if (_useRemote) { + await ServerDataService.instance.permanentDeleteMovie(id); + } else { + await _movieDao.permanentDeleteMovie(id); + } } - + /// 获取已删除的书籍 Future> getDeletedBooks() async { + if (_useRemote) return ServerDataService.instance.getDeletedBooks(); return await _bookDao.getDeletedBooks(); } - + /// 恢复书籍 Future restoreBook(String id) async { - await _bookDao.restoreBook(id); + if (_useRemote) { + await ServerDataService.instance.restoreBook(id); + } else { + await _bookDao.restoreBook(id); + } await loadBooks(); } - + /// 彻底删除书籍 Future permanentDeleteBook(String id) async { - // 删除书籍对应的图片目录 await ImagePathHelper.instance.deleteBookImages(id); - - await _bookDao.permanentDeleteBook(id); + if (_useRemote) { + await ServerDataService.instance.permanentDeleteBook(id); + } else { + await _bookDao.permanentDeleteBook(id); + } } - + /// 获取已删除的笔记 Future> getDeletedNotes() async { + if (_useRemote) return ServerDataService.instance.getDeletedNotes(); return await _noteDao.getDeletedNotes(); } - + /// 恢复笔记 Future restoreNote(String id) async { - await _noteDao.restoreNote(id); + if (_useRemote) { + await ServerDataService.instance.restoreNote(id); + } else { + await _noteDao.restoreNote(id); + } await loadNotes(); } - + /// 彻底删除笔记 Future permanentDeleteNote(String id) async { - // 删除笔记对应的图片目录 await ImagePathHelper.instance.deleteNoteImages(id); - - await _noteDao.permanentDeleteNote(id); + if (_useRemote) { + await ServerDataService.instance.permanentDeleteNote(id); + } else { + await _noteDao.permanentDeleteNote(id); + } } /// 清空回收站 Future clearRecycleBin() async { - final deletedMovies = await _movieDao.getDeletedMovies(); - final deletedBooks = await _bookDao.getDeletedBooks(); - final deletedNotes = await _noteDao.getDeletedNotes(); - + final deletedMovies = await getDeletedMovies(); + final deletedBooks = await getDeletedBooks(); + final deletedNotes = await getDeletedNotes(); + for (final movie in deletedMovies) { - // 删除影视对应的图片目录(包括海报和海报墙) - await ImagePathHelper.instance.deleteMovieImages(movie.id); - await _movieDao.permanentDeleteMovie(movie.id); + await permanentDeleteMovie(movie.id); } for (final book in deletedBooks) { - // 删除书籍对应的图片目录 - await ImagePathHelper.instance.deleteBookImages(book.id); - await _bookDao.permanentDeleteBook(book.id); + await permanentDeleteBook(book.id); } for (final note in deletedNotes) { - // 删除笔记对应的图片目录 - await ImagePathHelper.instance.deleteNoteImages(note.id); - await _noteDao.permanentDeleteNote(note.id); + await permanentDeleteNote(note.id); } await loadMovies(); diff --git a/lib/utils/sync/server_data_service.dart b/lib/utils/sync/server_data_service.dart index 19ef300..6ebd740 100644 --- a/lib/utils/sync/server_data_service.dart +++ b/lib/utils/sync/server_data_service.dart @@ -108,6 +108,56 @@ class ServerDataService { return data != null; } + // ─── 回收站 ──────────────────────────────────────────────────── + + Future> getDeletedMovies() async { + final data = await _post('/api/data/movies/deleted'); + if (data == null || data['movies'] == null) return []; + return (data['movies'] as List).map((m) => Movie.fromJson(m as Map)).toList(); + } + + Future restoreMovie(String id) async { + final data = await _post('/api/data/movie/restore', {'id': id}); + return data != null; + } + + Future permanentDeleteMovie(String id) async { + final data = await _post('/api/data/movie/permanent_delete', {'id': id}); + return data != null; + } + + Future> getDeletedBooks() async { + final data = await _post('/api/data/books/deleted'); + if (data == null || data['books'] == null) return []; + return (data['books'] as List).map((b) => Book.fromJson(b as Map)).toList(); + } + + Future restoreBook(String id) async { + final data = await _post('/api/data/book/restore', {'id': id}); + return data != null; + } + + Future permanentDeleteBook(String id) async { + final data = await _post('/api/data/book/permanent_delete', {'id': id}); + return data != null; + } + + Future> getDeletedNotes() async { + final data = await _post('/api/data/notes/deleted'); + if (data == null || data['notes'] == null) return []; + return (data['notes'] as List).map((n) => Note.fromJson(n as Map)).toList(); + } + + Future restoreNote(String id) async { + final data = await _post('/api/data/note/restore', {'id': id}); + return data != null; + } + + Future permanentDeleteNote(String id) async { + final data = await _post('/api/data/note/permanent_delete', {'id': id}); + return data != null; + } + // ─── 影评 ──────────────────────────────────────────────────── Future> getMovieReviews(String movieId) async {