Add alert when selecting invalid folder for storing files

This commit is contained in:
Leon Böttger committed 2025-09-09 13:58:36 +02:00
1 parent 12ef87c4da
commit fd6978cc90
4 files changed
+495 -7

No files matched your search

@@ -43,7 +43,7 @@
"location" : "https://github.com/leonboe1/LUI.git",
"state" : {
"branch" : "main",
"revision" : "5b2fe7161069c2314c5be17810ec7471b9decc8a"
"revision" : "23696658386572725bc8a8e38ad3675829185921"
}
},
{
+466
View File
@@ -10481,6 +10481,472 @@
}
}
},
"FolderSelectionFailedMessage" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "لا يمكن استخدام هذا المجلد لتخزين الملفات الواردة. يرجى استخدام مجلد مختلف."
}
},
"ca" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aquesta carpeta no es pot utilitzar per emmagatzemar fitxers entrants. Si us plau, utilitzeu una carpeta diferent."
}
},
"cs" : {
"stringUnit" : {
"state" : "translated",
"value" : "Tuto složku nelze použít k ukládání příchozích souborů. Použijte prosím jinou složku."
}
},
"da" : {
"stringUnit" : {
"state" : "translated",
"value" : "Denne mappe kan ikke bruges til at gemme indkommende filer. Brug venligst en anden mappe."
}
},
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dieser Ordner kann nicht zum Speichern eingehender Dateien verwendet werden. Bitte benutze einen anderen Ordner."
}
},
"el" : {
"stringUnit" : {
"state" : "translated",
"value" : "Αυτός ο φάκελος δεν μπορεί να χρησιμοποιηθεί για την αποθήκευση εισερχόμενων αρχείων. Παρακαλώ χρησιμοποιήστε έναν διαφορετικό φάκελο."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "This folder cannot be used for storing incoming files. Please use a different folder."
}
},
"en-AU" : {
"stringUnit" : {
"state" : "translated",
"value" : "This folder can't be used for storing incoming files. Please pick a different folder."
}
},
"en-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "This folder can't be used for storing incoming files. Please choose another folder."
}
},
"en-GB" : {
"stringUnit" : {
"state" : "translated",
"value" : "This folder cannot be used for storing incoming files. Please choose a different folder."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esta carpeta no se puede usar para almacenar archivos entrantes. Por favor, utiliza una carpeta diferente."
}
},
"es-419" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esta carpeta no se puede usar para almacenar archivos entrantes. Por favor, usa una carpeta diferente."
}
},
"fi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Tätä kansiota ei voi käyttää saapuvien tiedostojen tallentamiseen. Käytä toista kansiota."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ce dossier ne peut pas être utilisé pour stocker les fichiers entrants. Veuillez utiliser un autre dossier."
}
},
"fr-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ce dossier ne peut pas être utilisé pour stocker les fichiers entrants. Veuillez utiliser un autre dossier."
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "לא ניתן להשתמש בתיקייה זו לאחסון קבצים נכנסים. אנא השתמשו בתיקייה אחרת."
}
},
"hi" : {
"stringUnit" : {
"state" : "translated",
"value" : "इस फ़ोल्डर का उपयोग आने वाली फ़ाइलों को संग्रहीत करने के लिए नहीं किया जा सकता। कृपया किसी अन्य फ़ोल्डर का उपयोग करें।"
}
},
"hr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ova mapa ne može se koristiti za pohranu dolaznih datoteka. Molimo koristite drugu mapu."
}
},
"hu" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ez a mappa nem használható beérkező fájlok tárolására. Kérjük, használjon másik mappát."
}
},
"id" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder ini tidak dapat digunakan untuk menyimpan file masuk. Silakan gunakan folder lain."
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Questa cartella non può essere utilizzata per archiviare file in arrivo. Per favore, usa una cartella diversa."
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "このフォルダは受信ファイルの保存に使用できません。別のフォルダを使用してください。"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "이 폴더는 들어오는 파일을 저장하는 데 사용할 수 없습니다. 다른 폴더를 사용하세요."
}
},
"ms" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder ini tidak boleh digunakan untuk menyimpan fail yang diterima. Sila gunakan folder lain."
}
},
"nb" : {
"stringUnit" : {
"state" : "translated",
"value" : "Denne mappen kan ikke brukes til lagring av innkommende filer. Vennligst bruk en annen mappe."
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Deze map kan niet worden gebruikt voor het opslaan van binnenkomende bestanden. Gebruik een andere map."
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ten folder nie może być używany do przechowywania otrzymywanych plików. Proszę użyć innego folderu."
}
},
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esta pasta não pode ser usada para armazenar arquivos recebidos. Por favor, use uma pasta diferente."
}
},
"pt-PT" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esta pasta não pode ser usada para armazenar ficheiros recebidos. Por favor, utilize uma pasta diferente."
}
},
"ro" : {
"stringUnit" : {
"state" : "translated",
"value" : "Acest folder nu poate fi utilizat pentru stocarea fișierelor primite. Vă rugăm să folosiți un alt folder."
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Эту папку нельзя использовать для хранения входящих файлов. Пожалуйста, выберите другую папку."
}
},
"sv" : {
"stringUnit" : {
"state" : "translated",
"value" : "Den här mappen kan inte användas för att lagra inkommande filer. Använd en annan mapp."
}
},
"th" : {
"stringUnit" : {
"state" : "translated",
"value" : "ไม่สามารถใช้โฟลเดอร์นี้ในการจัดเก็บไฟล์ที่เข้ามาได้ กรุณาใช้โฟลเดอร์อื่น"
}
},
"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bu klasör gelen dosyaların depolanması için kullanılamaz. Lütfen başka bir klasör kullanın."
}
},
"uk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Цю папку не можна використовувати для збереження вхідних файлів. Будь ласка, використовуйте іншу папку."
}
},
"vi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Thư mục này không thể được sử dụng để lưu trữ tập tin nhận. Vui lòng sử dụng một thư mục khác."
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "此文件夹无法用于存储接收的文件。请使用其他文件夹。"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "此文件夾無法用於存儲接收的檔案。請使用其他文件夾。"
}
}
}
},
"FolderSelectionFailedTitle" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "المجلد غير مدعوم"
}
},
"ca" : {
"stringUnit" : {
"state" : "translated",
"value" : "Carpeta no compatible"
}
},
"cs" : {
"stringUnit" : {
"state" : "translated",
"value" : "Složka není podporována"
}
},
"da" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mappen understøttes ikke"
}
},
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ordner wird nicht unterstützt"
}
},
"el" : {
"stringUnit" : {
"state" : "translated",
"value" : "Μη υποστηριζόμενος φάκελος"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder Unsupported"
}
},
"en-AU" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder Not Supported"
}
},
"en-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Unsupported Folder"
}
},
"en-GB" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder Not Supported"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Carpeta no compatible"
}
},
"es-419" : {
"stringUnit" : {
"state" : "translated",
"value" : "Carpeta no compatible"
}
},
"fi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Kansio ei tuettu"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dossier non pris en charge"
}
},
"fr-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dossier non pris en charge"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "תיקייה לא נתמכת"
}
},
"hi" : {
"stringUnit" : {
"state" : "translated",
"value" : "फ़ोल्डर असमर्थित"
}
},
"hr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mapa nije podržana"
}
},
"hu" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mappa nem támogatott"
}
},
"id" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder Tidak Didukung"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cartella non supportata"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "フォルダがサポートされていません"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "폴더 지원되지 않음"
}
},
"ms" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder Tidak Disokong"
}
},
"nb" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mappe ikke støttet"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Map niet ondersteund"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder nieobsługiwany"
}
},
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pasta não suportada"
}
},
"pt-PT" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pasta não suportada"
}
},
"ro" : {
"stringUnit" : {
"state" : "translated",
"value" : "Folder nesuportat"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Папка не поддерживается"
}
},
"sv" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mapp stöds inte"
}
},
"th" : {
"stringUnit" : {
"state" : "translated",
"value" : "โฟลเดอร์ไม่รองรับ"
}
},
"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Klasör Desteklenmiyor"
}
},
"uk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Папка не підтримується"
}
},
"vi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Thư mục không được hỗ trợ"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "文件夹不支持"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "文件夾不支援"
}
}
}
},
"GetSupport" : {
"extractionState" : "manual",
"localizations" : {
+10 -6
View File
@@ -13,11 +13,15 @@ func sendToSharingService(items: [Any]) {
sharingService.perform(withItems: items)
}
else {
// show alert
let alert = NSAlert()
alert.alertStyle = .critical
alert.messageText = "ShareExtensionDisabledTitle".localized()
alert.informativeText = "ShareExtensionDisabledDescription".localized()
alert.runModal()
DispatchQueue.main.async {
// show alert
AudioManager.playErrorSound()
let alert = NSAlert()
alert.alertStyle = .critical
alert.messageText = "ShareExtensionDisabledTitle".localized()
alert.informativeText = "ShareExtensionDisabledDescription".localized()
alert.addButton(withTitle: "CloseAlert".localized())
alert.runModal()
}
}
}
+18
View File
@@ -94,11 +94,29 @@ struct SettingsView: View {
do {
log("Selected folder: \(url)")
if url.description == "file:///" {
throw NSError(domain: "InvalidSelection", code: 0, userInfo: [NSLocalizedDescriptionKey: "Cannot select root directory. Please choose a specific folder."])
}
let bookmarkData = try url.bookmarkData(options: .withSecurityScope, includingResourceValuesForKeys: nil, relativeTo: nil)
Settings.shared.saveFolderBookmark = bookmarkData
} catch {
log("Failed to save security-scoped bookmark: \(error)")
DispatchQueue.main.asyncAfter(deadline: .now()) {
AudioManager.playErrorSound()
// show alert
let alert = NSAlert()
alert.alertStyle = .critical
alert.messageText = "FolderSelectionFailedTitle".localized()
alert.informativeText = "FolderSelectionFailedMessage".localized()
alert.addButton(withTitle: "CloseAlert".localized())
alert.runModal()
}
}
}
}