mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-01-22 16:56:19 +01:00
Refactor: extract fn to check if file under dir
This commit is contained in:
parent
d72f64d4f4
commit
87d2696a99
3 changed files with 19 additions and 7 deletions
|
@ -25,6 +25,19 @@ bool isTrash(Account account, File file) =>
|
||||||
bool isAlbumFile(Account account, File file) =>
|
bool isAlbumFile(Account account, File file) =>
|
||||||
file.path.startsWith(remote_storage_util.getRemoteAlbumsDir(account));
|
file.path.startsWith(remote_storage_util.getRemoteAlbumsDir(account));
|
||||||
|
|
||||||
|
/// Return if [file] is located under [dir]
|
||||||
|
///
|
||||||
|
/// Return false if [file] is [dir] itself (since it's not "under")
|
||||||
|
///
|
||||||
|
/// See [isOrUnderDir]
|
||||||
|
bool isUnderDir(File file, File dir) => file.path.startsWith("${dir.path}/");
|
||||||
|
|
||||||
|
/// Return if [file] is [dir] or located under [dir]
|
||||||
|
///
|
||||||
|
/// See [isUnderDir]
|
||||||
|
bool isOrUnderDir(File file, File dir) =>
|
||||||
|
file.path == dir.path || isUnderDir(file, dir);
|
||||||
|
|
||||||
/// For a path "remote.php/dav/files/foo/bar.jpg", return foo
|
/// For a path "remote.php/dav/files/foo/bar.jpg", return foo
|
||||||
CiString getUserDirName(File file) {
|
CiString getUserDirName(File file) {
|
||||||
if (file.path.startsWith("remote.php/dav/files/")) {
|
if (file.path.startsWith("remote.php/dav/files/")) {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import 'package:nc_photos/app_localizations.dart';
|
||||||
import 'package:nc_photos/bloc/ls_dir.dart';
|
import 'package:nc_photos/bloc/ls_dir.dart';
|
||||||
import 'package:nc_photos/entity/file.dart';
|
import 'package:nc_photos/entity/file.dart';
|
||||||
import 'package:nc_photos/entity/file/data_source.dart';
|
import 'package:nc_photos/entity/file/data_source.dart';
|
||||||
|
import 'package:nc_photos/entity/file_util.dart' as file_util;
|
||||||
import 'package:nc_photos/exception_util.dart' as exception_util;
|
import 'package:nc_photos/exception_util.dart' as exception_util;
|
||||||
import 'package:nc_photos/k.dart' as k;
|
import 'package:nc_photos/k.dart' as k;
|
||||||
import 'package:nc_photos/snack_bar_manager.dart';
|
import 'package:nc_photos/snack_bar_manager.dart';
|
||||||
|
@ -331,8 +332,7 @@ class DirPickerState extends State<DirPicker> {
|
||||||
"[_pickedAllExclude] Unpicking '${item.file.path}' and picking children");
|
"[_pickedAllExclude] Unpicking '${item.file.path}' and picking children");
|
||||||
final products = <LsDirBlocItem>[];
|
final products = <LsDirBlocItem>[];
|
||||||
for (final i in item.children ?? []) {
|
for (final i in item.children ?? []) {
|
||||||
if (exclude.file.path == i.file.path ||
|
if (file_util.isOrUnderDir(exclude.file, i.file)) {
|
||||||
exclude.file.path.startsWith("${i.file.path}/")) {
|
|
||||||
// [i] is a parent of exclude
|
// [i] is a parent of exclude
|
||||||
products.addAll(_pickedAllExclude(item: i, exclude: exclude));
|
products.addAll(_pickedAllExclude(item: i, exclude: exclude));
|
||||||
} else {
|
} else {
|
||||||
|
@ -362,12 +362,12 @@ class DirPickerState extends State<DirPicker> {
|
||||||
var product = _PickState.notPicked;
|
var product = _PickState.notPicked;
|
||||||
for (final p in _picks) {
|
for (final p in _picks) {
|
||||||
// exact match, or parent is picked
|
// exact match, or parent is picked
|
||||||
if (p.path == item.file.path || item.file.path.startsWith("${p.path}/")) {
|
if (file_util.isOrUnderDir(item.file, p)) {
|
||||||
product = _PickState.picked;
|
product = _PickState.picked;
|
||||||
// no need to check the remaining ones
|
// no need to check the remaining ones
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (p.path.startsWith("${item.file.path}/")) {
|
if (file_util.isUnderDir(p, item.file)) {
|
||||||
product = _PickState.childPicked;
|
product = _PickState.childPicked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import 'package:nc_photos/app_db.dart';
|
||||||
import 'package:nc_photos/ci_string.dart';
|
import 'package:nc_photos/ci_string.dart';
|
||||||
import 'package:nc_photos/entity/album.dart';
|
import 'package:nc_photos/entity/album.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/share.dart';
|
import 'package:nc_photos/entity/share.dart';
|
||||||
import 'package:nc_photos/entity/sharee.dart';
|
import 'package:nc_photos/entity/sharee.dart';
|
||||||
import 'package:nc_photos/or_null.dart';
|
import 'package:nc_photos/or_null.dart';
|
||||||
|
@ -180,9 +181,7 @@ class MockFileMemoryRepo extends MockFileRepo {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
list(Account account, File root) async {
|
list(Account account, File root) async {
|
||||||
return files
|
return files.where((f) => file_util.isOrUnderDir(f, root)).toList();
|
||||||
.where((f) => f.path == root.path || f.path.startsWith("${root.path}/"))
|
|
||||||
.toList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<File> files;
|
final List<File> files;
|
||||||
|
|
Loading…
Reference in a new issue