Fix not syncing favorites in share folder

This commit is contained in:
Ming Ming 2022-09-24 00:46:12 +08:00
parent 42f5ce5a67
commit aa68035b88

View file

@ -3,6 +3,7 @@ import 'package:nc_photos/account.dart';
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util; import 'package:nc_photos/entity/file_util.dart' as file_util;
import 'package:nc_photos/pref.dart';
import 'package:nc_photos/use_case/cache_favorite.dart'; import 'package:nc_photos/use_case/cache_favorite.dart';
class SyncFavorite { class SyncFavorite {
@ -22,10 +23,22 @@ class SyncFavorite {
} }
Future<List<int>> _getRemoteFavoriteFileIds(Account account) async { Future<List<int>> _getRemoteFavoriteFileIds(Account account) async {
final settings = AccountPref.of(account);
final shareDir =
File(path: file_util.unstripPath(account, settings.getShareFolderOr()));
bool isShareDirIncluded = false;
final fileIds = <int>[]; final fileIds = <int>[];
for (final r in account.roots) { for (final r in account.roots) {
final favorites = await _c.favoriteRepo final dir = File(path: file_util.unstripPath(account, r));
.list(account, File(path: file_util.unstripPath(account, r))); final favorites = await _c.favoriteRepo.list(account, dir);
fileIds.addAll(favorites.map((f) => f.fileId));
isShareDirIncluded |= file_util.isOrUnderDir(shareDir, dir);
}
if (!isShareDirIncluded) {
_log.info("[_getRemoteFavoriteFileIds] Explicitly querying share folder");
final favorites = await _c.favoriteRepo.list(account, shareDir);
fileIds.addAll(favorites.map((f) => f.fileId)); fileIds.addAll(favorites.map((f) => f.fileId));
} }
return fileIds; return fileIds;