generated from dellevin/template
回收站-云同步
This commit is contained in:
@@ -497,81 +497,96 @@ class AppProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
/// 获取已删除的影视
|
/// 获取已删除的影视
|
||||||
Future<List<Movie>> getDeletedMovies() async {
|
Future<List<Movie>> getDeletedMovies() async {
|
||||||
|
if (_useRemote) return ServerDataService.instance.getDeletedMovies();
|
||||||
return await _movieDao.getDeletedMovies();
|
return await _movieDao.getDeletedMovies();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 恢复影视
|
/// 恢复影视
|
||||||
Future<void> restoreMovie(String id) async {
|
Future<void> restoreMovie(String id) async {
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.restoreMovie(id);
|
||||||
|
} else {
|
||||||
await _movieDao.restoreMovie(id);
|
await _movieDao.restoreMovie(id);
|
||||||
|
}
|
||||||
await loadMovies();
|
await loadMovies();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 彻底删除影视
|
/// 彻底删除影视
|
||||||
Future<void> permanentDeleteMovie(String id) async {
|
Future<void> permanentDeleteMovie(String id) async {
|
||||||
// 删除影视对应的图片目录(包括海报和海报墙)
|
|
||||||
await ImagePathHelper.instance.deleteMovieImages(id);
|
await ImagePathHelper.instance.deleteMovieImages(id);
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.permanentDeleteMovie(id);
|
||||||
|
} else {
|
||||||
await _movieDao.permanentDeleteMovie(id);
|
await _movieDao.permanentDeleteMovie(id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// 获取已删除的书籍
|
/// 获取已删除的书籍
|
||||||
Future<List<Book>> getDeletedBooks() async {
|
Future<List<Book>> getDeletedBooks() async {
|
||||||
|
if (_useRemote) return ServerDataService.instance.getDeletedBooks();
|
||||||
return await _bookDao.getDeletedBooks();
|
return await _bookDao.getDeletedBooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 恢复书籍
|
/// 恢复书籍
|
||||||
Future<void> restoreBook(String id) async {
|
Future<void> restoreBook(String id) async {
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.restoreBook(id);
|
||||||
|
} else {
|
||||||
await _bookDao.restoreBook(id);
|
await _bookDao.restoreBook(id);
|
||||||
|
}
|
||||||
await loadBooks();
|
await loadBooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 彻底删除书籍
|
/// 彻底删除书籍
|
||||||
Future<void> permanentDeleteBook(String id) async {
|
Future<void> permanentDeleteBook(String id) async {
|
||||||
// 删除书籍对应的图片目录
|
|
||||||
await ImagePathHelper.instance.deleteBookImages(id);
|
await ImagePathHelper.instance.deleteBookImages(id);
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.permanentDeleteBook(id);
|
||||||
|
} else {
|
||||||
await _bookDao.permanentDeleteBook(id);
|
await _bookDao.permanentDeleteBook(id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// 获取已删除的笔记
|
/// 获取已删除的笔记
|
||||||
Future<List<Note>> getDeletedNotes() async {
|
Future<List<Note>> getDeletedNotes() async {
|
||||||
|
if (_useRemote) return ServerDataService.instance.getDeletedNotes();
|
||||||
return await _noteDao.getDeletedNotes();
|
return await _noteDao.getDeletedNotes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 恢复笔记
|
/// 恢复笔记
|
||||||
Future<void> restoreNote(String id) async {
|
Future<void> restoreNote(String id) async {
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.restoreNote(id);
|
||||||
|
} else {
|
||||||
await _noteDao.restoreNote(id);
|
await _noteDao.restoreNote(id);
|
||||||
|
}
|
||||||
await loadNotes();
|
await loadNotes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 彻底删除笔记
|
/// 彻底删除笔记
|
||||||
Future<void> permanentDeleteNote(String id) async {
|
Future<void> permanentDeleteNote(String id) async {
|
||||||
// 删除笔记对应的图片目录
|
|
||||||
await ImagePathHelper.instance.deleteNoteImages(id);
|
await ImagePathHelper.instance.deleteNoteImages(id);
|
||||||
|
if (_useRemote) {
|
||||||
|
await ServerDataService.instance.permanentDeleteNote(id);
|
||||||
|
} else {
|
||||||
await _noteDao.permanentDeleteNote(id);
|
await _noteDao.permanentDeleteNote(id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// 清空回收站
|
/// 清空回收站
|
||||||
Future<void> clearRecycleBin() async {
|
Future<void> clearRecycleBin() async {
|
||||||
final deletedMovies = await _movieDao.getDeletedMovies();
|
final deletedMovies = await getDeletedMovies();
|
||||||
final deletedBooks = await _bookDao.getDeletedBooks();
|
final deletedBooks = await getDeletedBooks();
|
||||||
final deletedNotes = await _noteDao.getDeletedNotes();
|
final deletedNotes = await getDeletedNotes();
|
||||||
|
|
||||||
for (final movie in deletedMovies) {
|
for (final movie in deletedMovies) {
|
||||||
// 删除影视对应的图片目录(包括海报和海报墙)
|
await permanentDeleteMovie(movie.id);
|
||||||
await ImagePathHelper.instance.deleteMovieImages(movie.id);
|
|
||||||
await _movieDao.permanentDeleteMovie(movie.id);
|
|
||||||
}
|
}
|
||||||
for (final book in deletedBooks) {
|
for (final book in deletedBooks) {
|
||||||
// 删除书籍对应的图片目录
|
await permanentDeleteBook(book.id);
|
||||||
await ImagePathHelper.instance.deleteBookImages(book.id);
|
|
||||||
await _bookDao.permanentDeleteBook(book.id);
|
|
||||||
}
|
}
|
||||||
for (final note in deletedNotes) {
|
for (final note in deletedNotes) {
|
||||||
// 删除笔记对应的图片目录
|
await permanentDeleteNote(note.id);
|
||||||
await ImagePathHelper.instance.deleteNoteImages(note.id);
|
|
||||||
await _noteDao.permanentDeleteNote(note.id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await loadMovies();
|
await loadMovies();
|
||||||
|
|||||||
@@ -108,6 +108,56 @@ class ServerDataService {
|
|||||||
return data != null;
|
return data != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ─── 回收站 ────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
Future<List<Movie>> 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<String, dynamic>)).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> restoreMovie(String id) async {
|
||||||
|
final data = await _post('/api/data/movie/restore', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> permanentDeleteMovie(String id) async {
|
||||||
|
final data = await _post('/api/data/movie/permanent_delete', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<Book>> 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<String, dynamic>)).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> restoreBook(String id) async {
|
||||||
|
final data = await _post('/api/data/book/restore', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> permanentDeleteBook(String id) async {
|
||||||
|
final data = await _post('/api/data/book/permanent_delete', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<Note>> 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<String, dynamic>)).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> restoreNote(String id) async {
|
||||||
|
final data = await _post('/api/data/note/restore', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> permanentDeleteNote(String id) async {
|
||||||
|
final data = await _post('/api/data/note/permanent_delete', {'id': id});
|
||||||
|
return data != null;
|
||||||
|
}
|
||||||
|
|
||||||
// ─── 影评 ────────────────────────────────────────────────────
|
// ─── 影评 ────────────────────────────────────────────────────
|
||||||
|
|
||||||
Future<List<MovieReview>> getMovieReviews(String movieId) async {
|
Future<List<MovieReview>> getMovieReviews(String movieId) async {
|
||||||
|
|||||||
Reference in New Issue
Block a user