Skip to content

Commit a487f6d

Browse files
Manage rename and move files in cache
1 parent ea217f9 commit a487f6d

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplDecorator.kt

+12
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ abstract class CryptoImplDecorator(
9595
}
9696
}
9797
}
98+
protected fun renameFileInCache(source: CryptoFile, target: CryptoFile){
99+
val oldCacheKey = generateCacheKey(source.cloudFile)
100+
val newCacheKey = generateCacheKey(target.cloudFile)
101+
source.cloudFile.cloud?.type()?.let { cloudType ->
102+
getLruCacheFor(cloudType)?.let { diskCache ->
103+
if (diskCache[oldCacheKey] != null) {
104+
target.thumbnail = diskCache.put(newCacheKey, diskCache[oldCacheKey])
105+
diskCache.delete(oldCacheKey)
106+
}
107+
}
108+
}
109+
}
98110

99111
private fun getCacheTypeFromCloudType(type: CloudType): LruFileCacheUtil.Cache {
100112
return when (type) {

data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormat7.kt

+1
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ open class CryptoImplVaultFormat7 : CryptoImplDecorator {
391391

392392
@Throws(BackendException::class)
393393
override fun move(source: CryptoFile, target: CryptoFile): CryptoFile {
394+
renameFileInCache(source, target)
394395
return if (source.cloudFile.parent.name.endsWith(LONG_NODE_FILE_EXT)) {
395396
val targetDirFolder = cloudContentRepository.folder(target.cloudFile.parent, target.cloudFile.name)
396397
val cryptoFile: CryptoFile = if (target.cloudFile.name.endsWith(LONG_NODE_FILE_EXT)) {

data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormatPre7.kt

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ internal class CryptoImplVaultFormatPre7(
240240
@Throws(BackendException::class)
241241
override fun move(source: CryptoFile, target: CryptoFile): CryptoFile {
242242
assertCryptoFileAlreadyExists(target)
243+
renameFileInCache(source, target)
243244
return file(target, cloudContentRepository.move(source.cloudFile, target.cloudFile), source.size)
244245
}
245246

0 commit comments

Comments
 (0)