From 63c601f59adbbc958c56970d39e0555fd3a7987e Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Sat, 10 Aug 2024 21:26:25 +0800 Subject: [PATCH] Workaround server bug where REPORT api no longer respect the path --- app/lib/use_case/find_file.dart | 2 +- app/lib/use_case/list_tagged_file.dart | 3 ++- np_api/lib/src/files_api.dart | 1 + np_db/lib/src/api.dart | 2 +- np_db_sqlite/lib/src/database/file_extension.dart | 2 +- np_db_sqlite/lib/src/sqlite_api.dart | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/lib/use_case/find_file.dart b/app/lib/use_case/find_file.dart index 6dd805ee..16f0fc97 100644 --- a/app/lib/use_case/find_file.dart +++ b/app/lib/use_case/find_file.dart @@ -18,7 +18,7 @@ class FindFile { /// [onFileNotFound] is null, a [StateError] will be thrown Future> call( Account account, - List fileIds, { + Iterable fileIds, { void Function(int fileId)? onFileNotFound, }) async { _log.info("[call] fileIds: ${fileIds.toReadableString()}"); diff --git a/app/lib/use_case/list_tagged_file.dart b/app/lib/use_case/list_tagged_file.dart index 4e31ae3f..99e909d7 100644 --- a/app/lib/use_case/list_tagged_file.dart +++ b/app/lib/use_case/list_tagged_file.dart @@ -24,9 +24,10 @@ class ListTaggedFile { taggedFiles.addAll(await _c.taggedFileRepo .list(account, File(path: file_util.unstripPath(account, r)), tags)); } + // server bug workaround, filter out repeated files final files = await FindFile(_c)( account, - taggedFiles.map((f) => f.fileId).toList(), + taggedFiles.map((f) => f.fileId).toSet(), onFileNotFound: (id) { // ignore missing file _log.warning("[call] Missing file: $id"); diff --git a/np_api/lib/src/files_api.dart b/np_api/lib/src/files_api.dart index 403ba72a..656a143e 100644 --- a/np_api/lib/src/files_api.dart +++ b/np_api/lib/src/files_api.dart @@ -293,6 +293,7 @@ class ApiFiles { } } + // SERVER_BUG: 26 to unknown. path is ignored by server Future report({ required String path, bool? favorite, diff --git a/np_db/lib/src/api.dart b/np_db/lib/src/api.dart index 1c988b24..565b1469 100644 --- a/np_db/lib/src/api.dart +++ b/np_db/lib/src/api.dart @@ -293,7 +293,7 @@ abstract class NpDb { /// Returned files are NOT guaranteed to be sorted as [fileIds] Future> getFilesByFileIds({ required DbAccount account, - required List fileIds, + required Iterable fileIds, }); /// Return [DbFile]s by their date time value diff --git a/np_db_sqlite/lib/src/database/file_extension.dart b/np_db_sqlite/lib/src/database/file_extension.dart index b8f22531..ecf4ef4c 100644 --- a/np_db_sqlite/lib/src/database/file_extension.dart +++ b/np_db_sqlite/lib/src/database/file_extension.dart @@ -111,7 +111,7 @@ extension SqliteDbFileExtension on SqliteDb { /// Returned files are NOT guaranteed to be sorted as [fileIds] Future> queryFilesByFileIds({ required ByAccount account, - required List fileIds, + required Iterable fileIds, }) { _log.info("[queryFilesByFileIds] fileIds: ${fileIds.toReadableString()}"); return fileIds.withPartition((sublist) { diff --git a/np_db_sqlite/lib/src/sqlite_api.dart b/np_db_sqlite/lib/src/sqlite_api.dart index bff7c0aa..eeca157a 100644 --- a/np_db_sqlite/lib/src/sqlite_api.dart +++ b/np_db_sqlite/lib/src/sqlite_api.dart @@ -236,7 +236,7 @@ class NpDbSqlite implements NpDb { @override Future> getFilesByFileIds({ required DbAccount account, - required List fileIds, + required Iterable fileIds, }) async { final sqlObjs = await _db.use((db) async { return await db.queryFilesByFileIds(