Skip to content

Commit

Permalink
Fixed: Kiwix cannot import ZIM files from the filesystem.
Browse files Browse the repository at this point in the history
* Displaying a proper error message with the full ZIM path when there is an issue opening the ZIM file or if the selected file is not a valid ZIM file.
* Refactored `CopyMoveFileHandlerTest` to align with this change.
* Updated the documentation to help translators understand this update.
* To resolve the lint error, all string files have been updated. These files will be automatically updated in the latest TranslateWiki PR.
  • Loading branch information
MohitMaliDeveloper committed Feb 8, 2025
1 parent a88884a commit f0e9fc9
Show file tree
Hide file tree
Showing 98 changed files with 208 additions and 191 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ class CopyMoveFileHandler @Inject constructor(
FileUtils.isSplittedZimFile(destinationFile.name) || validateZimFileValid(destinationFile)

fun handleInvalidZimFile(destinationFile: File, sourceUri: Uri) {
val errorMessage = activity.getString(R.string.error_file_invalid)
val errorMessage = activity.getString(R.string.error_file_invalid, destinationFile.path)
if (isMoveOperation) {
val moveSuccessful = tryMoveWithDocumentContract(
destinationFile.toUri(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ class LocalLibraryFragment : BaseFragment(), CopyMoveFileHandler.FileCopyMoveCal
// and we will handle this later.
val fileName = documentFile?.name
if (fileName != null && !isValidZimFile(fileName)) {
activity.toast(string.error_file_invalid)
activity.toast(getString(string.error_file_invalid, "$uri"))
return@launch
}
copyMoveFileHandler?.showMoveFileToPublicDirectoryDialog(
Expand Down Expand Up @@ -456,12 +456,12 @@ class LocalLibraryFragment : BaseFragment(), CopyMoveFileHandler.FileCopyMoveCal
requireActivity().applicationContext, uri
)
if (filePath == null || !File(filePath).isFileExist()) {
activity.toast(string.error_file_not_found)
activity.toast(getString(string.error_file_not_found, "$uri"))
return null
}
val file = File(filePath)
return if (!FileUtils.isValidZimFile(file.path)) {
activity.toast(string.error_file_invalid)
activity.toast(getString(string.error_file_invalid, file.path))
null
} else {
file
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ class KiwixReaderFragment : CoreReaderFragment() {
// it will attempt to open the last opened ZIM file with the last loaded URL,
// which is inside the non-existing ZIM file. This leads to unexpected behavior.
exitBook()
activity.toast(string.error_file_not_found)
activity.toast(getString(string.error_file_not_found, zimFileUri))
return
}
val zimReaderSource = ZimReaderSource(File(filePath))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ data class OpenFileWithNavigation(private val bookOnDisk: BooksOnDiskListItem.Bo
zimReaderSource.canOpenInLibkiwix()
}
if (!canOpenInLibkiwix) {
activity.toast(R.string.error_file_not_found)
activity.toast(
activity.getString(R.string.error_file_not_found, zimReaderSource.toDatabase())
)
} else {
activity.navigate(
actionNavigationLibraryToNavigationReader().apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,17 +350,26 @@ class CopyMoveFileHandlerTest {
fileHandler = spyk(fileHandler)
every { fileHandler.tryMoveWithDocumentContract(any(), any(), any()) } returns true
every { destinationFile.parentFile } returns mockk()
every { destinationFile.path } returns ""
fileHandler.isMoveOperation = true

fileHandler.handleInvalidZimFile(destinationFile, sourceUri)

verify { fileHandler.dismissProgressDialog() }
verify { fileCopyMoveCallback.onError(activity.getString(R.string.error_file_invalid)) }
verify {
fileCopyMoveCallback.onError(
activity.getString(
R.string.error_file_invalid,
destinationFile.path
)
)
}
}

@Test
fun `handleInvalidZimFile should delete file and show error if move fails`() {
fileHandler = spyk(fileHandler)
every { destinationFile.path } returns ""
every { fileHandler.tryMoveWithDocumentContract(any(), any(), any()) } returns false
every { destinationFile.parentFile } returns mockk()
fileHandler.isMoveOperation = true
Expand All @@ -369,7 +378,7 @@ class CopyMoveFileHandlerTest {

verify {
fileHandler.handleFileOperationError(
activity.getString(R.string.error_file_invalid),
activity.getString(R.string.error_file_invalid, destinationFile.path),
destinationFile
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ class AddNoteDialog : DialogFragment() {
private fun isZimFileExist() = zimFileName != null

private fun onFailureToCreateAddNoteDialog() {
context.toast(R.string.error_file_not_found, Toast.LENGTH_LONG)
context.toast(getString(R.string.error_file_not_found, zimFileName), Toast.LENGTH_LONG)
parentFragmentManager.beginTransaction().remove(this).commit()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1774,7 +1774,10 @@ abstract class CoreReaderFragment :
} else {
exitBook()
Log.w(TAG_KIWIX, "ZIM file doesn't exist at " + zimReaderSource.toDatabase())
requireActivity().toast(R.string.error_file_not_found, Toast.LENGTH_LONG)
requireActivity().toast(
getString(R.string.error_file_not_found, zimReaderSource.toDatabase()),
Toast.LENGTH_LONG
)
}
} else {
this.zimReaderSource = zimReaderSource
Expand Down Expand Up @@ -1818,7 +1821,10 @@ abstract class CoreReaderFragment :
// disable all controls for this ZIM file. This prevents potential crashes.
// See issue #4161 for more details.
exitBook()
requireActivity().toast(R.string.error_file_invalid, Toast.LENGTH_LONG)
requireActivity().toast(
getString(R.string.error_file_invalid, zimReaderSource.toDatabase()),
Toast.LENGTH_LONG
)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-af/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
<string name="search_label">Soek</string>
<string name="choose_file">Kies ’n inhoudslêer (*.zim)</string>
<string name="open_in_new_tab">Open skakel in nuwe oortjie?</string>
<string name="error_file_not_found">Fout: die geselekteerde ZIM-lêer kon nie gevind word nie.</string>
<string name="error_file_invalid">Fout: die geselekteerde lêer is nie ’n geldige ZIM-lêer nie.</string>
<string name="error_file_not_found">Fout: die geselekteerde ZIM-lêer kon nie gevind word nie. %s</string>
<string name="error_file_invalid">Fout: die geselekteerde lêer is nie ’n geldige ZIM-lêer nie. %s</string>
<string name="error_article_url_not_found">Fout: Laai van bladsy (URL: %1$s) het gefaal.</string>
<string name="pref_display_title">Wys</string>
<string name="pref_info_title">Inligting</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@
<string name="server_started_message">أدخل عنوان الآيبي هذا في متصفحك للوصول إلى الخادم %s</string>
<string name="qr_code">رمز QR المقدَم</string>
<string name="share_host_address">مشاركة URL عبر تطبيقات أخرى</string>
<string name="error_file_not_found">خطأ: تعذر العثور على الملف زيم (ZIM) المحدد</string>
<string name="error_file_not_found">خطأ: تعذر العثور على الملف زيم (ZIM) المحدد %s</string>
<string name="unable_to_read_zim_file">غير قادر على قراءة هذا الملف ZIM!</string>
<string name="zim_not_opened">غير قادر على فتح ملف ZIM</string>
<string name="error_file_invalid">خطأ: ملف زيم (ZIM) المحدد ليس صالحًا.</string>
<string name="error_file_invalid">%s خطأ: ملف زيم (ZIM) المحدد ليس صالحًا.</string>
<string name="error_article_url_not_found">خطأ: لم ينجح تحميل المقالة (Url: %1$s).</string>
<string name="pref_display_title">العرض</string>
<string name="pref_info_title">معلومات</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-ast/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@
<string name="start_server_label">Aniciar el sirvidor</string>
<string name="stop_server_label">Parar el sirvidor</string>
<string name="server_started_message">Escribi esta direición ip nel restolador pa tener accesu al sirvidor %s</string>
<string name="error_file_not_found">Error: Nun pudo alcontrase ficheru ZIM seleicionáu.</string>
<string name="error_file_not_found">Error: Nun pudo alcontrase ficheru ZIM seleicionáu. %s</string>
<string name="zim_not_opened" fuzzy="true">Nun pudo abrise l ficheru zim</string>
<string name="error_file_invalid">Error: El ficheru seleicionáu nun ye un ficheru ZIM válidu.</string>
<string name="error_file_invalid">Error: El ficheru seleicionáu nun ye un ficheru ZIM válidu. %s</string>
<string name="error_article_url_not_found">Error: Falló la carga del artículu (Url: %1$s).</string>
<string name="pref_display_title">Amosar</string>
<string name="pref_info_title">Información</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-az/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
<string name="search_label">Axtar</string>
<string name="choose_file" fuzzy="true">ZIM məzmunlu fayl seç (*.zim)</string>
<string name="open_in_new_tab">Linki yeni pəncərədə aç?</string>
<string name="error_file_not_found">Xəta: Seçilmiş ZIM fayl mövcud deyil.</string>
<string name="error_file_invalid">Xəta: Seçilmiş ZIM faylı yararlı deyil.</string>
<string name="error_file_not_found">Xəta: Seçilmiş ZIM fayl mövcud deyil. %s</string>
<string name="error_file_invalid">Xəta: Seçilmiş ZIM faylı yararlı deyil. %s</string>
<string name="error_article_url_not_found">Xəta: Məqalənin (Url: %1$s) yüklənməsi alınmadı.</string>
<string name="pref_display_title">Ekran</string>
<string name="pref_info_title">Məlumat</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-be/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
<string name="search_label">Пошук</string>
<string name="choose_file" fuzzy="true">Абярыце ZIM-файл (*.zim)</string>
<string name="open_in_new_tab">Адкрыць спасылку ў новым вакенцы?</string>
<string name="error_file_not_found">Памылка: абраны ZIM-файл не знойдзены.</string>
<string name="error_file_invalid">Памылка: абраны файл не з’яўляецца слушным ZIM-файлам.</string>
<string name="error_file_not_found">Памылка: абраны ZIM-файл не знойдзены. %s</string>
<string name="error_file_invalid">Памылка: абраны файл не з’яўляецца слушным ZIM-файлам. %s</string>
<string name="error_article_url_not_found">Памылка: загрузка артыкула не атрымалася (Url: %1$s).</string>
<string name="pref_display_title">Паказаць</string>
<string name="pref_info_title">Інфармацыя</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-bg/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
<string name="search_label">Търсене</string>
<string name="choose_file">Изберете файл със съдържание (*.zim)</string>
<string name="open_in_new_tab">Отваряне на препратката в нов раздел?</string>
<string name="error_file_not_found">Грешка: Избраният ZIM файл не е намерен.</string>
<string name="error_file_invalid">Грешка: Избраният файл не е валиден ZIM файл.</string>
<string name="error_file_not_found">Грешка: Избраният ZIM файл не е намерен. %s</string>
<string name="error_file_invalid">Грешка: Избраният файл не е валиден ZIM файл. %s</string>
<string name="error_article_url_not_found">Грешка: Зареждането на статия (Url: %1$s) е неуспешно.</string>
<string name="pref_display_title">Покажете</string>
<string name="pref_info_title">Информация</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-bm/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
<string name="menu_exit_full_screen">Bɔ ekaran falen na</string>
<string name="search_label">Ɲinini kɛ</string>
<string name="choose_file" fuzzy="true">I mago bɛ fisiye min na ZIMU kɔnɔ, o suganti yan.</string>
<string name="error_file_not_found">Fili: Fisiye sugantilen ma se ka ye fan si.</string>
<string name="error_file_invalid">Fili: fisiye sugantilen tɛ fisiye yamaruyalen ye.</string>
<string name="error_file_not_found">Fili: Fisiye sugantilen ma se ka ye fan si. %s</string>
<string name="error_file_invalid">Fili: fisiye sugantilen tɛ fisiye yamaruyalen ye. %s</string>
<string name="error_article_url_not_found">Fili: Kunnafoni (Url: %1$s) sariziyeli tigɛra sira la.</string>
<string name="pref_display_title">Jirayɔrɔ</string>
<string name="pref_info_title">Kunnafoni</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-bn/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
<string name="connection_refused">সংযোগ প্রত্যাখান করা হয়েছে।</string>
<string name="error_server_already_running">সার্ভার ইতিমধ্যেই চলছে। দয়া করে এটি বন্ধ করে আবার চেষ্টা করুন।</string>
<string name="error_ip_address_not_found">আইপি ঠিকানা খুঁজে পাওয়া যায়নি।</string>
<string name="error_file_not_found">ত্রুটি: নির্বাচিত ZIM ফাইলটি খুঁজে পাওয়া যায় নি।</string>
<string name="error_file_invalid">ত্রুটি: নির্বাচিত ফাইলটি বৈধ ZIM ফাইল নয়।</string>
<string name="error_file_not_found">ত্রুটি: নির্বাচিত ZIM ফাইলটি খুঁজে পাওয়া যায় নি। %s</string>
<string name="error_file_invalid">ত্রুটি: নির্বাচিত ফাইলটি বৈধ ZIM ফাইল নয়। %s</string>
<string name="error_article_url_not_found">ত্রুটি: নিবন্ধ লোডে (Url: %1$s) ব্যর্থ।</string>
<string name="pref_display_title">প্রদর্শন</string>
<string name="pref_info_title">তথ্য</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-br/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@
<string name="error_ip_address_not_found">N’haller ket kavout ar chomlec’h IP.</string>
<string name="server_started_message">Enankit ar chomlec’h IP-mañ e-barzh ho merdeer evit kaout ar servijer %s</string>
<string name="share_host_address">Rannañ an URL war-bouez arloadoù all</string>
<string name="error_file_not_found">Fazi : N’eus ket bet gallet kavout ar restr ZIM diuzet.</string>
<string name="error_file_not_found">Fazi : N’eus ket bet gallet kavout ar restr ZIM diuzet. %s</string>
<string name="unable_to_read_zim_file" fuzzy="true">N’haller ket lenn ar restr ZIM-mañ!</string>
<string name="zim_not_opened" fuzzy="true">Dibosupl digeriñ ar restr zim</string>
<string name="error_file_invalid">Fazi : Ar restr diuzet n’eo ket ur restr ZIM reizh.</string>
<string name="error_file_invalid">Fazi : Ar restr diuzet n’eo ket ur restr ZIM reizh. %s</string>
<string name="error_article_url_not_found">Fazi : N’eus ket bet gallet kargañ ar pennad “%1$s”</string>
<string name="pref_display_title">Diskwel</string>
<string name="pref_info_title">Titouroù</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-ca/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
<string name="hotspot_dialog_neutral_button">CONTINUA</string>
<string name="start_server_label">Inicia el servidor</string>
<string name="stop_server_label">Atura el servidor</string>
<string name="error_file_not_found">Error: no s’ha trobat el fitxer ZIM.</string>
<string name="error_file_invalid">Error: el fitxer seleccionat no és un fitxer ZIM vàlid.</string>
<string name="error_file_not_found">Error: no s’ha trobat el fitxer ZIM. %s</string>
<string name="error_file_invalid">Error: el fitxer seleccionat no és un fitxer ZIM vàlid. %s</string>
<string name="error_article_url_not_found">Error: no s’ha pogut carregar l’article (Url: %1$s).</string>
<string name="pref_display_title">Visualitzar</string>
<string name="pref_info_title">Informació</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@
<string name="stop_server_label">Zastavit server</string>
<string name="server_started_message">Vložte tuto IP adresu do svého prohlížeče pro přístup na server %s</string>
<string name="share_host_address">Sdílet URL přes jiné aplikace</string>
<string name="error_file_not_found">Chyba: Nelze najít vybraný soubor ZIM.</string>
<string name="error_file_not_found">Chyba: Nelze najít vybraný soubor ZIM. %s</string>
<string name="unable_to_read_zim_file" fuzzy="true">Tento soubor zim nelze přečíst!</string>
<string name="zim_not_opened" fuzzy="true">Nelze otevřít soubor zim</string>
<string name="error_file_invalid">Chyba: Vybraný soubor není platným souborem ZIM.</string>
<string name="error_file_invalid">Chyba: Vybraný soubor není platným souborem ZIM. %s</string>
<string name="error_article_url_not_found">Chyba: Načtení článku (Url: %1$s ) se nezdařilo.</string>
<string name="pref_display_title">Zobrazení</string>
<string name="pref_info_title">Informace</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-cy/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
<string name="search_label">Chwilio</string>
<string name="choose_file">Dewisiwch Ffeil Gynnwys (*.zim)</string>
<string name="open_in_new_tab">Agor y ddolen mewn tab newydd?</string>
<string name="error_file_not_found">Gwall: Doedd dim modd canfod y ffeil ZIM dan sylw.</string>
<string name="error_file_invalid">Gwall: Dydy yr ffeil dan sylw ddim yn ffeil ZIM dilys.</string>
<string name="error_file_not_found">Gwall: Doedd dim modd canfod y ffeil ZIM dan sylw. %s</string>
<string name="error_file_invalid">Gwall: Dydy yr ffeil dan sylw ddim yn ffeil ZIM dilys. %s</string>
<string name="error_article_url_not_found">Gwall: Methwyd a llwytho yr erthygl: (Url: %1$s).</string>
<string name="pref_display_title">Golwg</string>
<string name="pref_info_title">Gwybodaeth</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-da/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@
<string name="progress_dialog_starting_server">Starter serveren</string>
<string name="start_server_label">Start server</string>
<string name="stop_server_label">Stop server</string>
<string name="error_file_not_found">Fejl: Den valgte ZIM fil blev ikke fundet.</string>
<string name="error_file_not_found">Fejl: Den valgte ZIM fil blev ikke fundet. %s</string>
<string name="unable_to_read_zim_file" fuzzy="true">Kan ikke åbne den zim fil!</string>
<string name="zim_not_opened" fuzzy="true">Kan ikke åbne zim fil</string>
<string name="error_file_invalid">Fejl: Den valgte fil er ikke en gyldig ZIM fil.</string>
<string name="error_file_invalid">Fejl: Den valgte fil er ikke en gyldig ZIM fil. %s</string>
<string name="error_article_url_not_found">Fejl: Indlæsning af artikel (Url: %1$s) mislykkedes.</string>
<string name="pref_display_title">Visning</string>
<string name="pref_info_title">Information</string>
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/res/values-dag/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@
<string name="error_ip_address_not_found">N bi nya ip addreesi</string>
<string name="server_started_message">Kpɛhimi a ip fasara a browzɛr ni din yɛn chɛ ka a nya niŋsim niŋda %s</string>
<string name="share_host_address">Shiriki URL kupitia programu zingine</string>
<string name="error_file_not_found">Chiriŋ: ZIM mazagali shɛli bɛ ni daa piigi ŋɔ bi tooi nya.</string>
<string name="error_file_not_found">Chiriŋ: ZIM mazagali shɛli bɛ ni daa piigi ŋɔ bi tooi nya. %s</string>
<string name="unable_to_read_zim_file" fuzzy="true">Di bi tooi karim zim mazagali ŋɔ!</string>
<string name="zim_not_opened" fuzzy="true">Di bi tooi yoogi zim mazagali</string>
<string name="error_file_invalid">Chiriŋ: Mazagali shɛli bɛ ni daa piigi ŋɔ pala ZIM mazagali din niŋ viɛnyɛla.</string>
<string name="error_file_invalid">Chiriŋ: Mazagali shɛli bɛ ni daa piigi ŋɔ pala ZIM mazagali din niŋ viɛnyɛla. %s</string>
<string name="error_article_url_not_found">Chiriŋ: Yaɣ’shɛli dini yoori a (Url: %1$s) bi yooi</string>
<string name="pref_display_title">Zaŋ wuhi</string>
<string name="pref_info_title">Lahabali</string>
Expand Down
Loading

0 comments on commit f0e9fc9

Please sign in to comment.