rename method

  1. @override
Future<Directory> rename(
  1. String newPath
)

Renames this file system entity.

Returns a Future<FileSystemEntity> that completes with a FileSystemEntity instance for the renamed file system entity.

Implementation

@override
Future<Directory> rename(String newPath) async {
  client.log('WebDAV: MOVE (Folder) $path -> $newPath');
  final newName = p.basename(newPath);
  final newParentPath = p.dirname(newPath);
  final oldParentPath = p.dirname(path);

  final resolved = await client.resolvePath(path);

  if (newParentPath == oldParentPath) {
    // Just rename
    await client.renameItem(resolved['uuid'], newName, 'folder');
  } else {
    // Move to new parent
    final destResolved = await client.resolvePath(newParentPath);
    await client.moveItem(resolved['uuid'], destResolved['uuid'], 'folder');

    // Then rename if needed
    if (p.basename(path) != newName) {
      await client.renameItem(resolved['uuid'], newName, 'folder');
    }
  }

  return fs.directory(newPath);
}