From a076c9f420240108add43fd80d94c530df3f9df3 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Jul 2022 17:32:22 +0300 Subject: [PATCH 01/10] Make NotFoundException resolvable --- app/build.gradle | 2 +- .../core/exceptions/MangaNotFoundException.kt | 3 --- .../core/exceptions/resolve/ExceptionResolver.kt | 12 ++++++++++++ .../kotatsu/details/ui/MangaDetailsDelegate.kt | 5 ++--- .../koitharu/kotatsu/reader/ui/ReaderViewModel.kt | 4 ++-- .../org/koitharu/kotatsu/utils/ext/ThrowableExt.kt | 4 +++- app/src/main/res/values/strings.xml | 1 + 7 files changed, 21 insertions(+), 10 deletions(-) delete mode 100644 app/src/main/java/org/koitharu/kotatsu/core/exceptions/MangaNotFoundException.kt diff --git a/app/build.gradle b/app/build.gradle index b1a41250d..665ca1378 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -79,7 +79,7 @@ afterEvaluate { } } dependencies { - implementation('com.github.nv95:kotatsu-parsers:30071709af') { + implementation('com.github.nv95:kotatsu-parsers:6495ddf277') { exclude group: 'org.json', module: 'json' } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/MangaNotFoundException.kt b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/MangaNotFoundException.kt deleted file mode 100644 index 9731f97b1..000000000 --- a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/MangaNotFoundException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.koitharu.kotatsu.core.exceptions - -class MangaNotFoundException(s: String? = null) : RuntimeException(s) \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt index 50f991b47..d0165c7ca 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt @@ -8,9 +8,11 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import kotlinx.coroutines.suspendCancellableCoroutine import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.browser.BrowserActivity import org.koitharu.kotatsu.browser.cloudflare.CloudFlareDialog import org.koitharu.kotatsu.core.exceptions.CloudFlareProtectedException import org.koitharu.kotatsu.parsers.exception.AuthRequiredException +import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.settings.sources.auth.SourceAuthActivity import org.koitharu.kotatsu.utils.TaggedActivityResult @@ -43,6 +45,10 @@ class ExceptionResolver private constructor( suspend fun resolve(e: Throwable): Boolean = when (e) { is CloudFlareProtectedException -> resolveCF(e.url) is AuthRequiredException -> resolveAuthException(e.source) + is NotFoundException -> { + openInBrowser(e.url) + false + } else -> false } @@ -69,6 +75,11 @@ class ExceptionResolver private constructor( sourceAuthContract.launch(source) } + private fun openInBrowser(url: String) { + val context = activity ?: fragment?.activity ?: return + context.startActivity(BrowserActivity.newIntent(context, url, null)) + } + private fun getFragmentManager() = checkNotNull(fragment?.childFragmentManager ?: activity?.supportFragmentManager) companion object { @@ -77,6 +88,7 @@ class ExceptionResolver private constructor( fun getResolveStringId(e: Throwable) = when (e) { is CloudFlareProtectedException -> R.string.captcha_solve is AuthRequiredException -> R.string.sign_in + is NotFoundException -> if (e.url.isNotEmpty()) R.string.open_in_browser else 0 else -> 0 } diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt index 39ad3003b..3a4eca7ca 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/MangaDetailsDelegate.kt @@ -5,7 +5,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import org.koitharu.kotatsu.base.domain.MangaDataRepository import org.koitharu.kotatsu.base.domain.MangaIntent -import org.koitharu.kotatsu.core.exceptions.MangaNotFoundException import org.koitharu.kotatsu.core.model.MangaHistory import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.prefs.AppSettings @@ -13,6 +12,7 @@ import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.details.ui.model.toListItem import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.local.domain.LocalMangaRepository +import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource @@ -40,8 +40,7 @@ class MangaDetailsDelegate( val mangaId = intent.manga?.id ?: intent.mangaId suspend fun doLoad() { - var manga = mangaDataRepository.resolveIntent(intent) - ?: throw MangaNotFoundException("Cannot find manga") + var manga = mangaDataRepository.resolveIntent(intent) ?: throw NotFoundException("Cannot find manga", "") mangaData.value = manga manga = MangaRepository(manga.source).getDetails(manga) // find default branch diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt index 6d8b1f0f6..895bb6628 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt @@ -15,11 +15,11 @@ import org.koitharu.kotatsu.base.domain.MangaUtils import org.koitharu.kotatsu.base.ui.BaseViewModel import org.koitharu.kotatsu.bookmarks.domain.Bookmark import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository -import org.koitharu.kotatsu.core.exceptions.MangaNotFoundException import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.prefs.* import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.history.domain.PROGRESS_NONE +import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage @@ -259,7 +259,7 @@ class ReaderViewModel( private fun loadImpl() { loadingJob = launchLoadingJob(Dispatchers.Default) { - var manga = dataRepository.resolveIntent(intent) ?: throw MangaNotFoundException("Cannot find manga") + var manga = dataRepository.resolveIntent(intent) ?: throw NotFoundException("Cannot find manga", "") mangaData.value = manga val repo = MangaRepository(manga.source) manga = repo.getDetails(manga) diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt index 79ee12775..88d60f45c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt @@ -8,6 +8,7 @@ import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.exceptions.* import org.koitharu.kotatsu.parsers.exception.AuthRequiredException import org.koitharu.kotatsu.parsers.exception.ContentUnavailableException +import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.exception.ParseException import java.net.SocketTimeoutException @@ -23,6 +24,7 @@ fun Throwable.getDisplayMessage(resources: Resources): String = when (this) { is ParseException -> shortMessage is SocketTimeoutException -> resources.getString(R.string.network_error) is WrongPasswordException -> resources.getString(R.string.wrong_password) + is NotFoundException -> resources.getString(R.string.not_found_404) else -> localizedMessage } ?: resources.getString(R.string.error_occurred) @@ -31,7 +33,7 @@ fun Throwable.isReportable(): Boolean { return true } return this is ParseException || this is IllegalArgumentException || - this is IllegalStateException || this is RuntimeException + this is IllegalStateException || this.javaClass == RuntimeException::class.java } fun Throwable.report(message: String?) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2cac495a1..a34f0fc89 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -322,4 +322,5 @@ Show all Invalid domain Select range + Content not found or removed \ No newline at end of file From 23b28672d41f1171242831aac54ece89a9630d60 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Jul 2022 18:03:46 +0300 Subject: [PATCH 02/10] Fix sharing files from sdcard --- app/src/main/res/xml/filepaths.xml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/xml/filepaths.xml b/app/src/main/res/xml/filepaths.xml index 7dac5f16b..aa2d1a744 100644 --- a/app/src/main/res/xml/filepaths.xml +++ b/app/src/main/res/xml/filepaths.xml @@ -1,15 +1,8 @@ - - - - + + + \ No newline at end of file From d000a825d3aaf6a40b39f445963fd548e1c2cb86 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Jul 2022 18:32:38 +0300 Subject: [PATCH 03/10] Update parsers --- app/build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 665ca1378..8638d77c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -79,7 +79,7 @@ afterEvaluate { } } dependencies { - implementation('com.github.nv95:kotatsu-parsers:6495ddf277') { + implementation('com.github.nv95:kotatsu-parsers:c4abb758f3') { exclude group: 'org.json', module: 'json' } @@ -122,7 +122,6 @@ dependencies { implementation 'ch.acra:acra-mail:5.9.5' implementation 'ch.acra:acra-dialog:5.9.5' - debugImplementation 'org.jsoup:jsoup:1.15.2' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1' testImplementation 'junit:junit:4.13.2' From 3c0420f42f86ffca50a5df2254231d623852683d Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 20 Jul 2022 14:17:38 +0200 Subject: [PATCH 04/10] Translated using Weblate (Finnish) Currently translated at 96.2% (310 of 322 strings) Translated using Weblate (French) Currently translated at 100.0% (322 of 322 strings) Translated using Weblate (Italian) Currently translated at 99.0% (319 of 322 strings) Translated using Weblate (German) Currently translated at 97.8% (315 of 322 strings) Translated using Weblate (French) Currently translated at 100.0% (321 of 321 strings) Translated using Weblate (Italian) Currently translated at 99.3% (319 of 321 strings) Translated using Weblate (German) Currently translated at 97.8% (314 of 321 strings) Co-authored-by: J. Lavoie Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/de/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fi/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fr/ Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/it/ Translation: Kotatsu/Strings --- app/src/main/res/values-de/strings.xml | 3 +++ app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values-it/strings.xml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index cf18cd5fd..7e357f987 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -314,4 +314,7 @@ Abgeschlossen Manga, die als NSFW markiert sind, werden nicht in den Verlauf aufgenommen und Ihr Fortschritt wird nicht gespeichert. Datenlöschung + Ungültige Domäne + Lesen + Bereich auswählen \ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index eb44dda48..eaefdaa71 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -308,4 +308,5 @@ Lukemassa uudelleen Tietojen poistaminen Näytä kaikki + Valitse alue \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0c178fb89..5766fde42 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -317,4 +317,6 @@ Se déconnecter Terminé Relecture + Domaine invalide + Sélectionner une plage \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 201ea3b6b..88eb65044 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -317,4 +317,6 @@ Pianificato Finito Abbandonato + Dominio non valido + Seleziona l\'intervallo \ No newline at end of file From 1d35d951e6c521ce840139dc011b851a1cb7c5d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 20 Jul 2022 14:17:38 +0200 Subject: [PATCH 05/10] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (322 of 322 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (321 of 321 strings) Co-authored-by: Oğuz Ersen Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/tr/ Translation: Kotatsu/Strings --- app/src/main/res/values-tr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4b4f904d2..a28015222 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -317,4 +317,6 @@ Planlandı Yeniden okunuyor Tümünü göster + Geçersiz etki alanı + Aralık seç \ No newline at end of file From fa8a526642c5340438bd8874c9962e5647639863 Mon Sep 17 00:00:00 2001 From: kuragehime Date: Wed, 20 Jul 2022 14:17:39 +0200 Subject: [PATCH 06/10] Translated using Weblate (Japanese) Currently translated at 100.0% (321 of 321 strings) Co-authored-by: kuragehime Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ja/ Translation: Kotatsu/Strings --- app/src/main/res/values-ja/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index bc61dc708..55469e6a2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -317,4 +317,5 @@ 読書の進行状況インジケーターを表示 NSFWとマークされたマンガは履歴に追加されず、進行状況も保存されない すべて表示 + 無効なドメイン \ No newline at end of file From 69d8459b1c8a4e57e05ec4010115f2e6e643ff88 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Wed, 20 Jul 2022 14:17:39 +0200 Subject: [PATCH 07/10] Translated using Weblate (Spanish) Currently translated at 100.0% (321 of 321 strings) Co-authored-by: Sergio Varela Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/ Translation: Kotatsu/Strings --- app/src/main/res/values-es/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 6491afd0a..418ae8b88 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -317,4 +317,5 @@ El manga marcado como NSFW nunca se añadirá al historial y no se guardará tu progreso Puede ayudar en caso de algunos problemas. Todas las autorizaciones serán invalidadas Mostrar todo + Dominio no válido \ No newline at end of file From 093f766d1dcf568efd0c7dc66cbca21506324d8c Mon Sep 17 00:00:00 2001 From: Dpper Date: Wed, 20 Jul 2022 14:17:39 +0200 Subject: [PATCH 08/10] Translated using Weblate (Ukrainian) Currently translated at 100.0% (321 of 321 strings) Co-authored-by: Dpper Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/ Translation: Kotatsu/Strings --- app/src/main/res/values-uk/strings.xml | 618 +++++++++++++------------ 1 file changed, 317 insertions(+), 301 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 2e3e1ceb2..c46882135 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1,305 +1,321 @@ - Дочекайтеся завершення завантаження… - Видалити - Нічого не знайдено - Додати до улюблених - Очистити історію - Історії ще немає - Додати - Зберегти - Локальне сховище - Не вдалося підключитися до Інтернету - Деталі - Спробуйте ще раз - Відкрити меню - Улюблених ще немає - Нова категорія - Введіть назву категорії - Завантажено - Уподобання - Історія - Сталася помилка - Розділи - Список - Детальний список - Режим списку - Налаштування - Віддалені джерела - Завантаження… - Обчислення… - Розділ %1$d із %2$d - Закрити - Читати - Таблиця - Поділитися - Створити ярлик… - Поділитися %s - Пошук - Пошук манґи - Обробка… - Ім\'я - Популярна - Оновлена - Нова - Рейтинг - Порядок сортування - Фільтр - Тема - Світла - Темна - Сторінки - Очистити всю історію читання перманентно\? - Видалити - \"%s\" видалено з історії - \"%s\" видалено з локального сховища - Зберегти сторінку - Збережено - Поділитись зображенням - Ця операція не підтримується - Виберіть файл ZIP або CBZ. - Немає опису - Історія та кеш - Очистити кеш сторінок - Кеш - Б|кБ|МБ|ГБ|ТБ - Стандартний - Вебтун - Режим читання - Розмір сітки - Пошук по %s - Видалити манґу - Видалити \"%s\" з пристрою перманентно\? - Налаштування читача - Перегортання сторінок - Кнопки гучності - Скасування… - Помилка - Очистити кеш мініатюр - Очистити історію пошуку - Очищено - Тільки жести - Внутрішнє сховище - Зовнішнє сховище - Домен - Перевірити наявність нових версій додатка - Доступна нова версія додатка - Ця манґа має %s. Зберегти все це\? - Зберегти - Сповіщення - Увімкнено %1$d з %2$d - Нові розділи - Завантажити - Читати з початку - Перезавантажити - Вібрація - Улюблені категорії - Вилучити категорію \"%s\" зі своїх уподобань\? + Дочекайтеся завершення завантаження… + Видалити + Нічого не знайдено + Додати до улюблених + Очистити історію + Історії ще немає + Додати + Зберегти + Локальне сховище + Не вдалося підключитися до Інтернету + Деталі + Спробуйте ще раз + Відкрити меню + Улюблених ще немає + Нова категорія + Введіть назву категорії + Завантажено + Уподобання + Історія + Сталася помилка + Розділи + Список + Детальний список + Режим списку + Налаштування + Віддалені джерела + Завантаження… + Обчислення… + Розділ %1$d із %2$d + Закрити + Читати + Таблиця + Поділитися + Створити ярлик… + Поділитися %s + Пошук + Пошук манґи + Обробка… + Ім\'я + Популярна + Оновлена + Нова + Рейтинг + Порядок сортування + Фільтр + Тема + Світла + Темна + Сторінки + Очистити всю історію читання перманентно\? + Видалити + \"%s\" видалено з історії + \"%s\" видалено з локального сховища + Зберегти сторінку + Збережено + Поділитись зображенням + Ця операція не підтримується + Виберіть файл ZIP або CBZ. + Немає опису + Історія та кеш + Очистити кеш сторінок + Кеш + Б|кБ|МБ|ГБ|ТБ + Стандартний + Вебтун + Режим читання + Розмір сітки + Пошук по %s + Видалити манґу + Видалити \"%s\" з пристрою перманентно\? + Налаштування читача + Перегортання сторінок + Кнопки гучності + Скасування… + Помилка + Очистити кеш мініатюр + Очистити історію пошуку + Очищено + Тільки жести + Внутрішнє сховище + Зовнішнє сховище + Домен + Перевірити наявність нових версій додатка + Доступна нова версія додатка + Ця манґа має %s. Зберегти все це\? + Зберегти + Сповіщення + Увімкнено %1$d з %2$d + Нові розділи + Завантажити + Читати з початку + Перезавантажити + Вібрація + Улюблені категорії + Вилучити категорію \"%s\" зі своїх уподобань\? \nВся манґа в ній буде втрачена. - Видалити - Тут якось пусто… - Спробуйте переформулювати запит. - Те, що ви читаєте, буде показано тут - Знайдіть, що читати, у бічному меню. - Спочатку збережіть щось - Збережіть його з онлайн-джерела або імпортуйте файли. - Полиця - Недавні - Анімація перегортання - Тека для завантажень - Інше сховище - Готово - Усі улюблені - Порожня категорія - Прочитати пізніше - Оновлення - Схожі - Нова версія: %s - Розмір: %s - Очікування мережі… - Очистити стрічку оновлень - Очищено - Повернути екран - Оновити - Оновлення скоро почнеться - Стежити за оновленнями - Не перевіряти - Неправильний пароль - Захистити додаток - Запитувати пароль під час запуску Kotatsu - Повторіть пароль - Паролі не співпадають - Про програму - Версія %s - Перевірити наявність оновлень - Перевірка наявності оновлень… - Не вдалося перевірити оновлення - Немає доступних оновлень - Нова категорія - Режим масштабування - Вмістити в екран - Підігнати по висоті - Підігнати по ширині - Вихідний розмір - Чорна - Споживає менше енергії на екранах AMOLED - Резервне копіювання та відновлення - Відновлено - Підготовка… - Створити проблему на GitHub - Файл не знайдено - Дані відновлено, але є деякі помилки - Ви можете створити резервну копію своєї історії та уподобань і відновити їх - Тільки що - Торкніться, щоб спробувати ще раз - Обраний режим буде запам\'ятован для цієї манги - Потрібна CAPTCHA - Пройти - Очистити кукі - Всі кукі були видалені - Очистити стрічку - Перевірити нові розділи - В зворотньому порядку - Увійти - Увійдіть, щоб переглянути цей вміст - За замовчуванням: %s - …і ще %1$d - Далі - Введіть пароль для запуску програми - Підтвердити - Пароль має містити 4 символи або більше - Пошук лише на %s - Ласкаво просимо - Резервна копія збережена - Докладніше - У черзі - Немає активних завантажень - Допомогти з перекладом програми - Переклад - Тема на 4PDA - Авторизація виконана - Вхід на %s не підтримується - Ви вийдете з усіх джерел - Завершена - Триває - Формат дати - Виключити NSFW манґу з історії - Ви повинні ввести ім’я - Показувати номери сторінок - Включені джерела - Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої - Імпорт манґи: %1$d з %2$d - Політика щодо знімків екрана - Дозволити - Пропонувати манґу на основі ваших уподобань - Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється - Почніть читати манґу, і ви отримаєте персоналізовані пропозиції - Увімкнено - Вимкнено - Скинути фільтр - Знайти жанр - Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях. - Тільки по Wi-Fi - Попереднє завантаження сторінок - Ви увійшли як %s - 18+ - Різні мови - Знайти розділ - Немає розділів у цій манзі - %1$s%% - Зміст - Оновлення пропозицій - Видалити вибрані елементи з пристрою назавжди\? - Видалення завершено - Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті - Завантажувати паралельно - Сповільнення завантаження - Обробка збереженої манґи - Приховати - Доступні нові джерела манґи - Закрити меню - Завантаження… - Очистити - Завантаження - Як в системі - Завантажте або прочитайте цей відсутній розділ онлайн. - Розділ відсутній - Зворотній зв\'язок - Жанри - За замовчуванням - Завжди - Продовжити - Імпорт - Натискання по краях - Попередження - Це може призвести до витрати великої кількості трафіку - Більше не питати - Налаштування сповіщень - Перейменувати - Показувати сповіщення, якщо доступна нова версія - Відкрити у веб-браузері - Недоступно - Немає доступного сховища - Нові розділи того, що ви читаєте, показано тут - Результати пошуку - Введіть пароль - Звук сповіщень - Світлодіодний індикатор - Категорії… - Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію - Учора - Справа наліво (←) - Створити резервну копію - Відновити з резервної копії - Всі дані були відновлені - Групувати - Сьогодні - Без звуку - Давно - Перевірка наявності нових розділів: %1$d з %2$d - Очистити всю історію оновлень назавжди\? - Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання. - Видалити всі останні пошукові запити назавжди\? - Інше - Доступні джерела - Динамічна тема - Блок на NSFW - Завжди блокувати - Пропозиції - Увімкнути пропозиції - Не пропонувати NSFW манґу - Не вдалося завантажити список жанрів - Ніколи - Зовнішній вигляд - Виключити жанри - Укажіть жанри, які ви не хочете бачити в пропозиціях - Допомагає уникнути блокування вашої IP-адреси - Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час - Перевіряти наявність нових розділів і повідомляти про них - Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте - Увімкнути сповіщення - Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку - Немає улюблених категорій - Назва - Змінити - Змінити категорію - Додати закладку - Видалити закладку - Закладки - Закладка видалена - Додано закладку - Відмінити - Видалено з історії - DNS через HTTPS - Режим за замовчуванням - Автоматично визначати, чи є манга вебтуном - Автовизначення режиму читання - Вимкнути оптимізацію акумулятора - Допомагає з перевірками фонових оновлень - Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити. - Надіслати - Вимкнути все - Використовувати відбиток пальця, якщо доступно - Манга з Вашого улюбленого - Манга, яку Ви нещодавно читали + Видалити + Тут якось пусто… + Спробуйте переформулювати запит. + Те, що ви читаєте, буде показано тут + Знайдіть, що читати, у бічному меню. + Спочатку збережіть щось + Збережіть його з онлайн-джерела або імпортуйте файли. + Полиця + Недавні + Анімація перегортання + Тека для завантажень + Інше сховище + Готово + Усі улюблені + Порожня категорія + Прочитати пізніше + Оновлення + Схожі + Нова версія: %s + Розмір: %s + Очікування мережі… + Очистити стрічку оновлень + Очищено + Повернути екран + Оновити + Оновлення скоро почнеться + Стежити за оновленнями + Не перевіряти + Неправильний пароль + Захистити додаток + Запитувати пароль під час запуску Kotatsu + Повторіть пароль + Паролі не співпадають + Про програму + Версія %s + Перевірити наявність оновлень + Перевірка наявності оновлень… + Не вдалося перевірити оновлення + Немає доступних оновлень + Нова категорія + Режим масштабування + Вмістити в екран + Підігнати по висоті + Підігнати по ширині + Вихідний розмір + Чорна + Споживає менше енергії на екранах AMOLED + Резервне копіювання та відновлення + Відновлено + Підготовка… + Створити проблему на GitHub + Файл не знайдено + Дані відновлено, але є деякі помилки + Ви можете створити резервну копію своєї історії та уподобань і відновити їх + Тільки що + Торкніться, щоб спробувати ще раз + Обраний режим буде запам\'ятован для цієї манги + Потрібна CAPTCHA + Пройти + Очистити кукі + Всі кукі були видалені + Очистити стрічку + Перевірити нові розділи + В зворотньому порядку + Увійти + Увійдіть, щоб переглянути цей вміст + За замовчуванням: %s + …і ще %1$d + Далі + Введіть пароль для запуску програми + Підтвердити + Пароль має містити 4 символи або більше + Пошук лише на %s + Ласкаво просимо + Резервна копія збережена + Докладніше + У черзі + Немає активних завантажень + Допомогти з перекладом програми + Переклад + Тема на 4PDA + Авторизація виконана + Вхід на %s не підтримується + Ви вийдете з усіх джерел + Завершена + Триває + Формат дати + Виключити NSFW манґу з історії + Ви повинні ввести ім’я + Показувати номери сторінок + Включені джерела + Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої + Імпорт манґи: %1$d з %2$d + Політика щодо знімків екрана + Дозволити + Пропонувати манґу на основі ваших уподобань + Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється + Почніть читати манґу, і ви отримаєте персоналізовані пропозиції + Увімкнено + Вимкнено + Скинути фільтр + Знайти жанр + Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях. + Тільки по Wi-Fi + Попереднє завантаження сторінок + Ви увійшли як %s + 18+ + Різні мови + Знайти розділ + Немає розділів у цій манзі + %1$s%% + Зміст + Оновлення пропозицій + Видалити вибрані елементи з пристрою назавжди\? + Видалення завершено + Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті + Завантажувати паралельно + Сповільнення завантаження + Обробка збереженої манґи + Приховати + Доступні нові джерела манґи + Закрити меню + Завантаження… + Очистити + Завантаження + Як в системі + Завантажте або прочитайте цей відсутній розділ онлайн. + Розділ відсутній + Зворотній зв\'язок + Жанри + За замовчуванням + Завжди + Продовжити + Імпорт + Натискання по краях + Попередження + Це може призвести до витрати великої кількості трафіку + Більше не питати + Налаштування сповіщень + Перейменувати + Показувати сповіщення, якщо доступна нова версія + Відкрити у веб-браузері + Недоступно + Немає доступного сховища + Нові розділи того, що ви читаєте, показано тут + Результати пошуку + Введіть пароль + Звук сповіщень + Світлодіодний індикатор + Категорії… + Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію + Учора + Справа наліво (←) + Створити резервну копію + Відновити з резервної копії + Всі дані були відновлені + Групувати + Сьогодні + Без звуку + Давно + Перевірка наявності нових розділів: %1$d з %2$d + Очистити всю історію оновлень назавжди\? + Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання. + Видалити всі останні пошукові запити назавжди\? + Інше + Доступні джерела + Динамічна тема + Блок на NSFW + Завжди блокувати + Пропозиції + Увімкнути пропозиції + Не пропонувати NSFW манґу + Не вдалося завантажити список жанрів + Ніколи + Зовнішній вигляд + Виключити жанри + Укажіть жанри, які ви не хочете бачити в пропозиціях + Допомагає уникнути блокування вашої IP-адреси + Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час + Перевіряти наявність нових розділів і повідомляти про них + Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте + Увімкнути сповіщення + Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку + Немає улюблених категорій + Назва + Змінити + Змінити категорію + Додати закладку + Видалити закладку + Закладки + Закладка видалена + Додано закладку + Відмінити + Видалено з історії + DNS через HTTPS + Режим за замовчуванням + Автоматично визначати, чи є манга вебтуном + Автовизначення режиму читання + Вимкнути оптимізацію акумулятора + Допомагає з перевірками фонових оновлень + Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити. + Надіслати + Вимкнути все + Використовувати відбиток пальця, якщо доступно + Манга з Вашого улюбленого + Манга, яку Ви нещодавно читали + Недійсний домен + Звіт + Відстеження + Вийти + Заплановано + Читаю + Перечитую + Завершено + Відкладено + Занедбано + Показувати індикатори прогресу читання + Видалення даних + Показати відсоток прочитаного в історії та обраному + Манґа, позначена як NSFW, ніколи не буде додана до історії і ваш прогрес не буде збережений + Може допомогти в разі виникнення проблем. Усі авторизації будуть анульовані + Показати всі \ No newline at end of file From 37b69833b36a21898e34cb58f9a1ec1a07aa1358 Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Wed, 20 Jul 2022 19:52:56 +0300 Subject: [PATCH 09/10] Update parsers --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8638d77c0..0200ae8eb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 32 - versionCode 417 + versionCode 418 versionName '3.4.5' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -79,7 +79,7 @@ afterEvaluate { } } dependencies { - implementation('com.github.nv95:kotatsu-parsers:c4abb758f3') { + implementation('com.github.nv95:kotatsu-parsers:fadb06aabb') { exclude group: 'org.json', module: 'json' } From 1840d7b50e372804bfef43ce5922aeef10daecf7 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Jul 2022 20:32:01 +0300 Subject: [PATCH 10/10] Fix get current page #165 --- app/build.gradle | 2 +- .../java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0200ae8eb..455908436 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { minSdkVersion 21 targetSdkVersion 32 versionCode 418 - versionName '3.4.5' + versionName '3.4.6' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index e761ce1c6..35d203b26 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -166,10 +166,9 @@ class ReaderActivity : } } R.id.action_save_page -> { - viewModel.getCurrentPage()?.also { page -> - viewModel.saveCurrentState(readerManager.currentReader?.getCurrentState()) - viewModel.saveCurrentPage(page, savePageRequest) - } ?: return false + viewModel.saveCurrentState(readerManager.currentReader?.getCurrentState()) + val page = viewModel.getCurrentPage() ?: return false + viewModel.saveCurrentPage(page, savePageRequest) } R.id.action_bookmark -> { if (viewModel.isBookmarkAdded.value == true) {