Specific message when no permission for export dir (#105)
This commit is contained in:
@@ -39,6 +39,7 @@ import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.fairscan.app.AppContainer
|
||||
import org.fairscan.app.R
|
||||
import org.fairscan.app.RecentDocument
|
||||
import org.fairscan.app.data.FileManager
|
||||
import org.fairscan.app.data.ImageRepository
|
||||
@@ -194,6 +195,12 @@ class ExportViewModel(container: AppContainer, val imageRepository: ImageReposit
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
save(context)
|
||||
} catch (e: MissingExportDirPermissionException) {
|
||||
logger.e("FairScan", "Missing export dir permission", e)
|
||||
_uiState.update {
|
||||
it.copy(errorMessage =
|
||||
context.getString(R.string.error_export_dir_permission_lost))
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logger.e("FairScan", "Failed to save PDF", e)
|
||||
_events.emit(ExportEvent.SaveError)
|
||||
@@ -223,6 +230,11 @@ class ExportViewModel(container: AppContainer, val imageRepository: ImageReposit
|
||||
}
|
||||
} else {
|
||||
// Use Storage Access Framework to save to the chosen directory
|
||||
if (!context.contentResolver.persistedUriPermissions.any { perm ->
|
||||
perm.uri == exportDir && perm.isWritePermission
|
||||
}) {
|
||||
throw MissingExportDirPermissionException(exportDir)
|
||||
}
|
||||
val safFile = saveViaSaf(context, file, exportDir, exportFormat)
|
||||
SavedItem(safFile.uri, safFile.name ?: file.name, exportFormat)
|
||||
}
|
||||
@@ -373,3 +385,9 @@ data class ExportActions(
|
||||
val save: () -> Unit,
|
||||
val open: (SavedItem) -> Unit,
|
||||
)
|
||||
|
||||
class MissingExportDirPermissionException(
|
||||
val uri: Uri
|
||||
) : IllegalStateException(
|
||||
"Missing persisted write permission for export dir: $uri"
|
||||
)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">stažených</string>
|
||||
<string name="end_scan">Ukončit skenování</string>
|
||||
<string name="error">Chyba: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">Vybraná složka pro export již není dostupná. Vyberte prosím jinou složku.</string>
|
||||
<string name="error_no_app">Nebyla nalezena žádná aplikace pro otevření tohoto souboru</string>
|
||||
<string name="error_no_document">Nebyl rozpoznán žádná dokument</string>
|
||||
<string name="error_save">Soubor se nepodařilo uložit</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Downloads</string>
|
||||
<string name="end_scan">Scan beenden</string>
|
||||
<string name="error">Fehler: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">Der ausgewählte Exportordner ist nicht mehr zugänglich. Bitte wählen Sie einen anderen Ordner.</string>
|
||||
<string name="error_no_app">Keine App zum Öffnen dieser Datei gefunden</string>
|
||||
<string name="error_no_document">Kein Dokument erkannt</string>
|
||||
<string name="error_save">Datei konnte nicht gespeichert werden</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Descargas</string>
|
||||
<string name="end_scan">Finalizar escaneo</string>
|
||||
<string name="error">Error: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">La carpeta de exportación seleccionada ya no es accesible. Por favor, elija otra carpeta.</string>
|
||||
<string name="error_no_app">No se encontró ninguna aplicación para abrir este archivo</string>
|
||||
<string name="error_no_document">No se detectó ningún documento</string>
|
||||
<string name="error_save">No se pudo guardar el archivo</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Téléchargements</string>
|
||||
<string name="end_scan">Terminer le scan</string>
|
||||
<string name="error">Erreur : %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">Le dossier d’export sélectionné n’est plus accessible. Veuillez choisir un autre dossier.</string>
|
||||
<string name="error_no_app">Aucune application trouvée pour ouvrir ce fichier</string>
|
||||
<string name="error_no_document">Aucun document détecté</string>
|
||||
<string name="error_save">Échec de l\'enregistrement du fichier</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Download</string>
|
||||
<string name="end_scan">Termina scansione</string>
|
||||
<string name="error">Errore: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">La cartella di esportazione selezionata non è più accessibile. Scegli un’altra cartella.</string>
|
||||
<string name="error_no_app">Nessuna app trovata per aprire questo file</string>
|
||||
<string name="error_no_document">Nessun documento rilevato</string>
|
||||
<string name="error_save">Impossibile salvare il file</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Downloads</string>
|
||||
<string name="end_scan">Finalizar digitalização</string>
|
||||
<string name="error">Erro: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">A pasta de exportação selecionada não está mais acessível. Escolha outra pasta.</string>
|
||||
<string name="error_no_app">Nenhum app encontrado para abrir este arquivo</string>
|
||||
<string name="error_no_document">Nenhum documento detectado</string>
|
||||
<string name="error_save">Falha ao salvar o arquivo</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">Download</string>
|
||||
<string name="end_scan">Закончить</string>
|
||||
<string name="error">Ошибка: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">Выбранная папка экспорта больше недоступна. Пожалуйста, выберите другую папку.</string>
|
||||
<string name="error_no_app">Не найдено приложение для открытия этого файла</string>
|
||||
<string name="error_no_document">Документ не обнаружен</string>
|
||||
<string name="error_save">Не удалось сохранить файл</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">İndirilenler</string>
|
||||
<string name="end_scan">Taramayı bitir</string>
|
||||
<string name="error">Error: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">Seçilen dışa aktarma dizini artık erişilebilir değil. Lütfen başka bir dizin seçin.</string>
|
||||
<string name="error_no_app">No app found to open this file</string>
|
||||
<string name="error_no_document">No document detected</string>
|
||||
<string name="error_save">Failed to save file</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">下載 (Downloads)</string>
|
||||
<string name="end_scan">結束掃描</string>
|
||||
<string name="error">錯誤:%1$s</string>
|
||||
<string name="error_export_dir_permission_lost">所選的匯出目錄已無法存取。請選擇其他目錄。</string>
|
||||
<string name="error_no_app">找不到可開啟此檔案的應用程式</string>
|
||||
<string name="error_no_document">未偵測到文件</string>
|
||||
<string name="error_save">儲存檔案失敗</string>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<string name="download_dirname">下载</string>
|
||||
<string name="end_scan">结束扫描</string>
|
||||
<string name="error">错误: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">所选的导出目录已无法访问。请选择其他目录。</string>
|
||||
<string name="error_no_app">未找到可打开此文件的应用</string>
|
||||
<string name="error_no_document">未检测到任何文档</string>
|
||||
<string name="error_save">无法保存文件</string>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<string name="camera_permission_denied">Camera permission was denied</string>
|
||||
<string name="camera_permission_rationale">The app requires camera access to scan documents. Captured images are stored only on this device and will be deleted when you close the current document.</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="change_directory">Change directory</string>
|
||||
<string name="change_directory">Change folder</string>
|
||||
<string name="clear_text">Clear text</string>
|
||||
<string name="contact">Contact</string>
|
||||
<string name="copied_logs">Logs copied to clipboard</string>
|
||||
@@ -20,6 +20,7 @@
|
||||
<string name="download_dirname">Downloads</string>
|
||||
<string name="end_scan">End scan</string>
|
||||
<string name="error">Error: %1$s</string>
|
||||
<string name="error_export_dir_permission_lost">The selected export folder is no longer accessible. Please choose another folder.</string>
|
||||
<!-- Rare error messages should not be translated -->
|
||||
<string name="error_file_picker_launch" translatable="false">Failed to launch system file picker on this device</string>
|
||||
<string name="error_file_picker_result" translatable="false">Failed to set export directory</string>
|
||||
@@ -28,7 +29,7 @@
|
||||
<string name="error_save">Failed to save file</string>
|
||||
<string name="export">Export</string>
|
||||
<string name="export_as">Export as %1$s</string>
|
||||
<string name="export_directory">Export directory</string>
|
||||
<string name="export_directory">Export folder</string>
|
||||
<string name="export_format">Export format</string>
|
||||
<string name="export_quality">Export quality</string>
|
||||
<string name="export_quality_low">Low</string>
|
||||
|
||||
Reference in New Issue
Block a user