renameItem method
Implementation
Future<void> renameItem(String uuid, String newName, String type) async {
await cache.clearParentCache(uuid, type, api, crypto, masterKeys);
final mk = masterKeys.last;
if (mk.isEmpty) throw Exception('No master keys available');
final nameHashed = await crypto.hashFileName(newName, masterKeys, email);
if (type == 'folder') {
final encName =
await crypto.encryptMetadata002(json.encode({'name': newName}), mk);
await api.post('/v3/dir/rename',
{'uuid': uuid, 'name': encName, 'nameHashed': nameHashed});
} else {
final metaRaw = await getFileMetadata(uuid);
final metadata = metaRaw['data'] ?? metaRaw;
final metaStr = await crypto.tryDecrypt(metadata['metadata'], masterKeys);
final metaJson = json.decode(metaStr);
metaJson['name'] = newName;
final fileKey = metaJson['key'];
final nameEncrypted = await crypto.encryptMetadata002(newName, fileKey);
final metadataEncrypted =
await crypto.encryptMetadata002(json.encode(metaJson), mk);
await api.post('/v3/file/rename', {
'uuid': uuid,
'name': nameEncrypted,
'metadata': metadataEncrypted,
'nameHashed': nameHashed
});
}
cache.clearPathCache();
}