sync media cache after file renames
This commit is contained in:
@@ -314,7 +314,17 @@ class _FileSearchResultsPageState extends ConsumerState<FileSearchResultsPage> {
|
||||
onSelect: () => _selectFile(files, file),
|
||||
onOpen: () => notifier.downloadFile(file),
|
||||
onRenameConfirm: (name) async {
|
||||
await notifier.renameFile(file, name);
|
||||
final renamed = await notifier.renameFile(
|
||||
file,
|
||||
name,
|
||||
);
|
||||
if (renamed) {
|
||||
await ref
|
||||
.read(mediaLibraryProvider.notifier)
|
||||
.synchronizeRenamedFiles([
|
||||
file.copyWith(name: name),
|
||||
]);
|
||||
}
|
||||
if (mounted) setState(() => _results = _search());
|
||||
},
|
||||
onCopy: () => notifier.copyToClipboard([file]),
|
||||
|
||||
@@ -1407,7 +1407,14 @@ class _PrimaryFilePane extends ConsumerWidget {
|
||||
onOpen: file.isDirectory
|
||||
? () => notifier.navigateToFolder(file)
|
||||
: () => _openCloudFile(context, ref, file),
|
||||
onRenameConfirm: (name) => notifier.renameFile(file, name),
|
||||
onRenameConfirm: (name) async {
|
||||
final renamed = await notifier.renameFile(file, name);
|
||||
if (renamed) {
|
||||
await ref
|
||||
.read(mediaLibraryProvider.notifier)
|
||||
.synchronizeRenamedFiles([file.copyWith(name: name)]);
|
||||
}
|
||||
},
|
||||
onCopy: () => notifier.copyToClipboard([file]),
|
||||
onCut: () => notifier.cutToClipboard([file]),
|
||||
onDownload: () => notifier.downloadFile(file),
|
||||
@@ -2066,6 +2073,9 @@ class _ColumnFileBrowserState extends ConsumerState<_ColumnFileBrowser> {
|
||||
controller.dispose();
|
||||
if (newName == null || newName.isEmpty || newName == file.name) return;
|
||||
await ref.read(authProvider.notifier).api.fsRename(file.id, newName);
|
||||
await ref.read(mediaLibraryProvider.notifier).synchronizeRenamedFiles([
|
||||
file.copyWith(name: newName),
|
||||
]);
|
||||
final affected = <int>{};
|
||||
for (var index = 0; index < _columns.length; index++) {
|
||||
if (_columns[index].files.any((item) => item.id == file.id)) {
|
||||
@@ -3086,7 +3096,14 @@ class _SecondaryFilePaneState extends ConsumerState<_SecondaryFilePane> {
|
||||
onCut: () =>
|
||||
ref.read(fileProvider.notifier).cutToClipboard([file]),
|
||||
onRenameConfirm: (name) async {
|
||||
await ref.read(fileProvider.notifier).renameFile(file, name);
|
||||
final renamed = await ref
|
||||
.read(fileProvider.notifier)
|
||||
.renameFile(file, name);
|
||||
if (renamed) {
|
||||
await ref
|
||||
.read(mediaLibraryProvider.notifier)
|
||||
.synchronizeRenamedFiles([file.copyWith(name: name)]);
|
||||
}
|
||||
if (!mounted) return;
|
||||
setState(() {
|
||||
_files = _files
|
||||
|
||||
@@ -14,6 +14,7 @@ import '../models/fast_transfer.dart';
|
||||
import '../models/media_library.dart';
|
||||
import '../providers/auth_provider.dart';
|
||||
import '../providers/file_provider.dart';
|
||||
import '../providers/media_library_provider.dart';
|
||||
import 'media_library_page.dart';
|
||||
|
||||
enum WorkspaceTool { scan, rename, fastTransfer, tmdb, categories }
|
||||
@@ -985,6 +986,7 @@ class _BatchRenameToolState extends ConsumerState<_BatchRenameTool> {
|
||||
final api = ref.read(authProvider.notifier).api;
|
||||
var succeeded = 0;
|
||||
var failed = 0;
|
||||
final renamedFiles = <CloudFile>[];
|
||||
try {
|
||||
for (final change in changes) {
|
||||
if (!mounted) return;
|
||||
@@ -992,12 +994,18 @@ class _BatchRenameToolState extends ConsumerState<_BatchRenameTool> {
|
||||
try {
|
||||
await api.fsRename(change.file.id, change.newName);
|
||||
succeeded += 1;
|
||||
renamedFiles.add(change.file.copyWith(name: change.newName));
|
||||
} catch (_) {
|
||||
failed += 1;
|
||||
}
|
||||
if (mounted) setState(() => _completed += 1);
|
||||
}
|
||||
await ref.read(fileProvider.notifier).loadFiles();
|
||||
if (renamedFiles.isNotEmpty) {
|
||||
await ref
|
||||
.read(mediaLibraryProvider.notifier)
|
||||
.synchronizeRenamedFiles(renamedFiles);
|
||||
}
|
||||
} finally {
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
|
||||
Reference in New Issue
Block a user