display images thumbnail
This commit is contained in:
@@ -10,6 +10,7 @@ import com.vaultdrop.mobile.data.local.entity.FileEntity
|
|||||||
import com.vaultdrop.mobile.data.local.entity.FileStatus
|
import com.vaultdrop.mobile.data.local.entity.FileStatus
|
||||||
import com.vaultdrop.mobile.data.repository.FileRepository
|
import com.vaultdrop.mobile.data.repository.FileRepository
|
||||||
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
||||||
|
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@@ -33,6 +34,7 @@ class FileDeleter @Inject constructor(
|
|||||||
private val fileRepository: FileRepository,
|
private val fileRepository: FileRepository,
|
||||||
private val outboxRepository: OutboxRepository,
|
private val outboxRepository: OutboxRepository,
|
||||||
private val appDatabase: AppDatabase,
|
private val appDatabase: AppDatabase,
|
||||||
|
private val thumbnailStore: ThumbnailStore,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val resolver: ContentResolver get() = context.contentResolver
|
private val resolver: ContentResolver get() = context.contentResolver
|
||||||
@@ -68,6 +70,7 @@ class FileDeleter @Inject constructor(
|
|||||||
}.onSuccess { deleted ->
|
}.onSuccess { deleted ->
|
||||||
if (deleted) {
|
if (deleted) {
|
||||||
fileRepository.markMissing(file.resourceId, System.currentTimeMillis())
|
fileRepository.markMissing(file.resourceId, System.currentTimeMillis())
|
||||||
|
thumbnailStore.delete(file.resourceId)
|
||||||
Timber.d("deleted locally %s", uri)
|
Timber.d("deleted locally %s", uri)
|
||||||
} else {
|
} else {
|
||||||
Timber.w("deleteDocument returned false for %s", uri)
|
Timber.w("deleteDocument returned false for %s", uri)
|
||||||
@@ -115,6 +118,7 @@ class FileDeleter @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Timber.d("deleted full %s", uri)
|
Timber.d("deleted full %s", uri)
|
||||||
|
thumbnailStore.delete(file.resourceId)
|
||||||
} else {
|
} else {
|
||||||
Timber.w("deleteDocument returned false for %s", uri)
|
Timber.w("deleteDocument returned false for %s", uri)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.vaultdrop.mobile.data.local.entity.FolderEntity
|
|||||||
import com.vaultdrop.mobile.data.repository.FileRepository
|
import com.vaultdrop.mobile.data.repository.FileRepository
|
||||||
import com.vaultdrop.mobile.data.repository.FolderRepository
|
import com.vaultdrop.mobile.data.repository.FolderRepository
|
||||||
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
||||||
|
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@@ -39,6 +40,7 @@ class FolderDeleter @Inject constructor(
|
|||||||
private val fileRepository: FileRepository,
|
private val fileRepository: FileRepository,
|
||||||
private val outboxRepository: OutboxRepository,
|
private val outboxRepository: OutboxRepository,
|
||||||
private val appDatabase: AppDatabase,
|
private val appDatabase: AppDatabase,
|
||||||
|
private val thumbnailStore: ThumbnailStore,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val resolver: ContentResolver get() = context.contentResolver
|
private val resolver: ContentResolver get() = context.contentResolver
|
||||||
@@ -77,6 +79,7 @@ class FolderDeleter @Inject constructor(
|
|||||||
tree.files.forEach { fileRepository.markMissing(it.resourceId, now) }
|
tree.files.forEach { fileRepository.markMissing(it.resourceId, now) }
|
||||||
tree.folders.forEach { folderRepository.markMissing(it.resourceId, now) }
|
tree.folders.forEach { folderRepository.markMissing(it.resourceId, now) }
|
||||||
folderRepository.markMissing(folder.resourceId, now)
|
folderRepository.markMissing(folder.resourceId, now)
|
||||||
|
tree.files.forEach { thumbnailStore.delete(it.resourceId) }
|
||||||
Timber.d("deleted folder locally %s", uri)
|
Timber.d("deleted folder locally %s", uri)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -109,6 +112,7 @@ class FolderDeleter @Inject constructor(
|
|||||||
appDatabase.withTransaction {
|
appDatabase.withTransaction {
|
||||||
treeMarkMissing(folder, tree, now)
|
treeMarkMissing(folder, tree, now)
|
||||||
}
|
}
|
||||||
|
tree.files.forEach { thumbnailStore.delete(it.resourceId) }
|
||||||
Timber.d("deleted folder full %s", uri)
|
Timber.d("deleted folder full %s", uri)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.vaultdrop.mobile.data.local.AppDatabase
|
|||||||
import com.vaultdrop.mobile.data.local.entity.FileEntity
|
import com.vaultdrop.mobile.data.local.entity.FileEntity
|
||||||
import com.vaultdrop.mobile.data.repository.FileRepository
|
import com.vaultdrop.mobile.data.repository.FileRepository
|
||||||
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
import com.vaultdrop.mobile.data.repository.OutboxRepository
|
||||||
|
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@@ -35,6 +36,7 @@ class SafFileDeleter @Inject constructor(
|
|||||||
private val fileRepository: FileRepository,
|
private val fileRepository: FileRepository,
|
||||||
private val outboxRepository: OutboxRepository,
|
private val outboxRepository: OutboxRepository,
|
||||||
private val appDatabase: AppDatabase,
|
private val appDatabase: AppDatabase,
|
||||||
|
private val thumbnailStore: ThumbnailStore,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val resolver: ContentResolver get() = context.contentResolver
|
private val resolver: ContentResolver get() = context.contentResolver
|
||||||
@@ -58,6 +60,7 @@ class SafFileDeleter @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Timber.d("deleted %s", uri)
|
Timber.d("deleted %s", uri)
|
||||||
|
thumbnailStore.delete(file.resourceId)
|
||||||
} else {
|
} else {
|
||||||
Timber.w("deleteDocument returned false for %s", uri)
|
Timber.w("deleteDocument returned false for %s", uri)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -53,9 +53,9 @@ import com.vaultdrop.mobile.data.local.entity.FileEntity
|
|||||||
import com.vaultdrop.mobile.data.local.entity.FolderEntity
|
import com.vaultdrop.mobile.data.local.entity.FolderEntity
|
||||||
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
|
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
|
||||||
import com.vaultdrop.mobile.features.sync.SyncViewModel
|
import com.vaultdrop.mobile.features.sync.SyncViewModel
|
||||||
import com.vaultdrop.mobile.ui.components.FileCategoryIcon
|
|
||||||
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
|
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
|
||||||
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
|
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
|
||||||
|
import com.vaultdrop.mobile.ui.components.FileThumbnail
|
||||||
import com.vaultdrop.mobile.ui.components.FolderNameDialog
|
import com.vaultdrop.mobile.ui.components.FolderNameDialog
|
||||||
import com.vaultdrop.mobile.ui.components.MoveFolderPickerDialog
|
import com.vaultdrop.mobile.ui.components.MoveFolderPickerDialog
|
||||||
import com.vaultdrop.mobile.ui.components.SelectionState
|
import com.vaultdrop.mobile.ui.components.SelectionState
|
||||||
@@ -457,7 +457,7 @@ private fun FileRow(
|
|||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
) {
|
) {
|
||||||
FileCategoryIcon(file = file, size = 24.dp)
|
FileThumbnail(file = file, size = 40.dp)
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f)) {
|
||||||
Text(
|
Text(
|
||||||
text = file.name,
|
text = file.name,
|
||||||
|
|||||||
+3
-3
@@ -89,9 +89,9 @@ import com.vaultdrop.mobile.features.saf.FileDeleter
|
|||||||
import com.vaultdrop.mobile.ui.components.DeleteConfirmDialog
|
import com.vaultdrop.mobile.ui.components.DeleteConfirmDialog
|
||||||
import com.vaultdrop.mobile.ui.components.DeleteReview
|
import com.vaultdrop.mobile.ui.components.DeleteReview
|
||||||
import com.vaultdrop.mobile.ui.components.DeleteWarningDialog
|
import com.vaultdrop.mobile.ui.components.DeleteWarningDialog
|
||||||
import com.vaultdrop.mobile.ui.components.FileCategoryIcon
|
|
||||||
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
|
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
|
||||||
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
|
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
|
||||||
|
import com.vaultdrop.mobile.ui.components.FileThumbnail
|
||||||
import com.vaultdrop.mobile.ui.components.FolderNameDialog
|
import com.vaultdrop.mobile.ui.components.FolderNameDialog
|
||||||
|
|
||||||
import com.vaultdrop.mobile.ui.components.SelectionState
|
import com.vaultdrop.mobile.ui.components.SelectionState
|
||||||
@@ -1059,7 +1059,7 @@ private fun FileCard(
|
|||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.padding(12.dp)) {
|
Column(modifier = Modifier.padding(12.dp)) {
|
||||||
Row(verticalAlignment = androidx.compose.ui.Alignment.CenterVertically) {
|
Row(verticalAlignment = androidx.compose.ui.Alignment.CenterVertically) {
|
||||||
FileCategoryIcon(file = file, size = 36.dp)
|
FileThumbnail(file = file, size = 56.dp)
|
||||||
Spacer(Modifier.weight(1f))
|
Spacer(Modifier.weight(1f))
|
||||||
if (selection.active) {
|
if (selection.active) {
|
||||||
SelectionStatusIcon(selected = selected)
|
SelectionStatusIcon(selected = selected)
|
||||||
@@ -1122,7 +1122,7 @@ private fun BrowseFileRow(
|
|||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
) {
|
) {
|
||||||
FileCategoryIcon(file = file, size = 26.dp)
|
FileThumbnail(file = file, size = 40.dp)
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f)) {
|
||||||
Text(
|
Text(
|
||||||
text = file.name,
|
text = file.name,
|
||||||
|
|||||||
Reference in New Issue
Block a user