diff --git a/app/src/main/java/com/ivanovsky/passnotes/data/entity/OperationError.java b/app/src/main/java/com/ivanovsky/passnotes/data/entity/OperationError.java index 7e03a191..0ffe9fd9 100644 --- a/app/src/main/java/com/ivanovsky/passnotes/data/entity/OperationError.java +++ b/app/src/main/java/com/ivanovsky/passnotes/data/entity/OperationError.java @@ -157,11 +157,11 @@ public static OperationError newNetworkIOError(Exception cause) { } public static OperationError newFileAlreadyExistsError(String message, Stacktrace stacktrace) { - return new OperationError(Type.FILE_IS_ALREADY_EXISTS, message, stacktrace); + return new OperationError(Type.FILE_ALREADY_EXISTS, message, stacktrace); } public static OperationError newFileAlreadyExistsError(Stacktrace stacktrace) { - return new OperationError(Type.FILE_IS_ALREADY_EXISTS, null, stacktrace); + return new OperationError(Type.FILE_ALREADY_EXISTS, null, stacktrace); } public static OperationError newCacheError(String message, Stacktrace stacktrace) { @@ -203,7 +203,7 @@ public enum Type { GENERIC_IO_ERROR, AUTH_ERROR, NETWORK_IO_ERROR, - FILE_IS_ALREADY_EXISTS, + FILE_ALREADY_EXISTS, // inconsistent cached data, CACHE_ERROR, REMOTE_API_ERROR, diff --git a/app/src/main/kotlin/com/ivanovsky/passnotes/domain/interactor/newdb/NewDatabaseInteractor.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/interactor/newdb/NewDatabaseInteractor.kt index c0e2def2..a7d2dc02 100644 --- a/app/src/main/kotlin/com/ivanovsky/passnotes/domain/interactor/newdb/NewDatabaseInteractor.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/interactor/newdb/NewDatabaseInteractor.kt @@ -1,5 +1,6 @@ package com.ivanovsky.passnotes.domain.interactor.newdb +import com.ivanovsky.passnotes.R import com.ivanovsky.passnotes.data.entity.FileDescriptor import com.ivanovsky.passnotes.data.entity.OperationError.MESSAGE_DEFERRED_OPERATIONS_ARE_NOT_SUPPORTED import com.ivanovsky.passnotes.data.entity.OperationError.newFileAccessError @@ -12,6 +13,7 @@ import com.ivanovsky.passnotes.data.repository.file.FileSystemResolver import com.ivanovsky.passnotes.data.repository.keepass.KeepassImplementation import com.ivanovsky.passnotes.data.repository.keepass.PasswordKeepassKey import com.ivanovsky.passnotes.domain.DispatcherProvider +import com.ivanovsky.passnotes.domain.ResourceProvider import com.ivanovsky.passnotes.domain.entity.exception.Stacktrace import com.ivanovsky.passnotes.extensions.toUsedFile import kotlinx.coroutines.withContext @@ -20,6 +22,7 @@ class NewDatabaseInteractor( private val dbRepo: EncryptedDatabaseRepository, private val usedFileRepository: UsedFileRepository, private val fileSystemResolver: FileSystemResolver, + private val resourceProvider: ResourceProvider, private val dispatchers: DispatcherProvider ) { @@ -38,7 +41,14 @@ class NewDatabaseInteractor( val isExists = existsResult.obj if (isExists) { - return@withContext OperationResult.error(newFileAlreadyExistsError(Stacktrace())) + val message = + resourceProvider.getString(R.string.file_already_exists_detailed, file.name) + return@withContext OperationResult.error( + newFileAlreadyExistsError( + message, + Stacktrace() + ) + ) } val creationResult = dbRepo.createNew( diff --git a/app/src/main/kotlin/com/ivanovsky/passnotes/extensions/OperationErrorExt.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/extensions/OperationErrorExt.kt index 10b1e2e1..5e4daca2 100644 --- a/app/src/main/kotlin/com/ivanovsky/passnotes/extensions/OperationErrorExt.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/extensions/OperationErrorExt.kt @@ -22,6 +22,10 @@ fun OperationError.formatReadableMessage( resourceProvider.getString(R.string.file_not_found) } + OperationError.Type.FILE_ALREADY_EXISTS -> { + resourceProvider.getString(R.string.file_already_exists) + } + else -> null } diff --git a/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/UiModule.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/UiModule.kt index 66a0fcac..58228fd3 100644 --- a/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/UiModule.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/UiModule.kt @@ -126,7 +126,7 @@ object UiModule { ) } single { StorageListInteractor(get(), get(), get()) } - single { NewDatabaseInteractor(get(), get(), get(), get()) } + single { NewDatabaseInteractor(get(), get(), get(), get(), get()) } single { GroupEditorInteractor(get(), get(), get(), get(), get()) } single { DebugMenuInteractor(get(), get(), get(), get(), get()) } single { diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 755e4af6..804fdeb6 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -71,7 +71,7 @@ Трапилась помилка Сталася помилка мережі, перевірте підключення до Інтернету Неможливо отримати доступ до файлу, надайте дозвіл для програми - Файл вже існує + Файл вже існує Порожнє поле Локальна та віддалена бази даних кофліктують. Будь ласка, вирішіть цей конфлікт. Не вдається знайти файл бази даних на віддаленому сервері. Спробуйте видалити цей файл і додати його знову. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 2dda95ba..3bd6e211 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -64,7 +64,7 @@ 发生错误 发生网络错误,请检查网络连接 无法访问文件,请为应用授予文件权限 - 文件已存在 + 文件已存在 字段不能为空 本地数据库与远程数据库版本存在冲突,请先解决冲突再访问数据库。 在远程服务器上找不到数据库文件,请尝试删除该文件后重新添加。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a24e82f7..c3bb4c62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,7 +71,8 @@ Error has been occurred Network error has been occurred, check internet connection Unable to access to file, please provider permission for application - File is already exist + File already exists + File %s already exists Empty field There is a conflict between version of local and remote databases. Please resolve this conflict before accessing database. Unable to find database file on remote server. Please try to remove this file and add it again. diff --git a/app/src/main/res/values/untranslatable-strings.xml b/app/src/main/res/values/untranslatable-strings.xml index 2f97cf01..6be17a16 100644 --- a/app/src/main/res/values/untranslatable-strings.xml +++ b/app/src/main/res/values/untranslatable-strings.xml @@ -43,7 +43,6 @@ Failed to parse test data Test data successfully imported File created successfully - File already exists Test data removed Biometric data is invalidated Lorem Ipsum is simply dummy.