diff --git a/README.md b/README.md index 6714250e3..1d693109e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Kotatsu is a free and open source manga reader for Android. alt="Get it on F-Droid" height="80">](https://f-droid.org/packages/org.koitharu.kotatsu) -Download APK from Github Releases: +Download APK from GitHub Releases: - [Latest release](https://github.com/KotatsuApp/Kotatsu/releases/latest) diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt index 2125d044c..7db0f6e22 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt @@ -6,14 +6,12 @@ import androidx.annotation.CallSuper import androidx.annotation.StringRes import androidx.core.graphics.Insets import androidx.core.view.updatePadding -import androidx.fragment.app.Fragment import androidx.preference.PreferenceFragmentCompat import androidx.recyclerview.widget.RecyclerView import org.koin.android.ext.android.inject import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.base.ui.util.WindowInsetsDelegate import org.koitharu.kotatsu.core.prefs.AppSettings -import org.koitharu.kotatsu.settings.SettingsActivity import org.koitharu.kotatsu.settings.SettingsHeadersFragment abstract class BasePreferenceFragment(@StringRes private val titleId: Int) : diff --git a/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt b/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt index f01dc73d9..8a6217d04 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt @@ -15,11 +15,11 @@ class BackupZipOutput(val file: File) : Closeable { private val output = ZipOutput(file, Deflater.BEST_COMPRESSION) - suspend fun put(entry: BackupEntry) { + suspend fun put(entry: BackupEntry) = runInterruptible(Dispatchers.IO) { output.put(entry.name, entry.data.toString(2)) } - suspend fun finish() { + suspend fun finish() = runInterruptible(Dispatchers.IO) { output.finish() } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/CloudFlareProtectedException.kt b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/CloudFlareProtectedException.kt index 5a8cd055c..ef20b4fb0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/CloudFlareProtectedException.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/CloudFlareProtectedException.kt @@ -1,8 +1,6 @@ package org.koitharu.kotatsu.core.exceptions -import androidx.annotation.StringRes import okio.IOException -import org.koitharu.kotatsu.R class CloudFlareProtectedException( val url: String diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 5dd49a44b..45fbb85a4 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -321,9 +321,6 @@ class AppSettings(context: Context) { const val KEY_APP_UPDATE = "app_update" const val KEY_APP_UPDATE_AUTO = "app_update_auto" const val KEY_APP_TRANSLATION = "about_app_translation" - const val KEY_FEEDBACK_4PDA = "about_feedback_4pda" - const val KEY_FEEDBACK_DISCORD = "about_feedback_discord" - const val KEY_FEEDBACK_GITHUB = "about_feedback_github" private const val NETWORK_NEVER = 0 private const val NETWORK_ALWAYS = 1 diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt index 28556ac48..568bb6427 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt @@ -9,7 +9,6 @@ import androidx.collection.ArraySet import androidx.core.graphics.Insets import androidx.core.view.isNotEmpty import androidx.core.view.updatePadding -import androidx.lifecycle.Lifecycle import androidx.recyclerview.widget.GridLayoutManager import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.google.android.material.snackbar.Snackbar diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BasePageHolder.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BasePageHolder.kt index 30b696297..d3980c687 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BasePageHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BasePageHolder.kt @@ -16,6 +16,7 @@ abstract class BasePageHolder( exceptionResolver: ExceptionResolver ) : RecyclerView.ViewHolder(binding.root), PageHolderDelegate.Callback { + @Suppress("LeakingThis") protected val delegate = PageHolderDelegate(loader, settings, this, exceptionResolver) protected val bindingInfo = LayoutPageInfoBinding.bind(binding.root) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BaseReaderAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BaseReaderAdapter.kt index b6adc87b1..d097c1bc2 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BaseReaderAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/BaseReaderAdapter.kt @@ -11,10 +11,11 @@ import org.koitharu.kotatsu.utils.ext.resetTransformations import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine +@Suppress("LeakingThis") abstract class BaseReaderAdapter>( private val loader: PageLoader, private val settings: AppSettings, - private val exceptionResolver: ExceptionResolver + private val exceptionResolver: ExceptionResolver, ) : RecyclerView.Adapter() { private val differ = AsyncListDiffer(this, DiffCallback()) diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchActivity.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchActivity.kt index 3d075c1b3..ea5551701 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchActivity.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.search.ui import android.content.Context import android.content.Intent import android.os.Bundle -import android.os.Parcelable import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.core.graphics.Insets diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/SettingsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/settings/SettingsActivity.kt index 9bd070028..b05b31e76 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/SettingsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/SettingsActivity.kt @@ -22,7 +22,6 @@ import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.databinding.ActivitySettingsBinding import org.koitharu.kotatsu.main.ui.AppBarOwner import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.tracker.domain.Tracker import org.koitharu.kotatsu.utils.ext.isScrolledToTop class SettingsActivity : diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/utils/RingtonePickContract.kt b/app/src/main/java/org/koitharu/kotatsu/settings/utils/RingtonePickContract.kt index 1bf8b7856..3920cb32c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/utils/RingtonePickContract.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/utils/RingtonePickContract.kt @@ -29,6 +29,6 @@ class RingtonePickContract(private val title: String?) : ActivityResultContract< } override fun parseResult(resultCode: Int, intent: Intent?): Uri? { - return intent?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI) + return intent?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI) } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/suggestions/domain/SuggestionRepository.kt b/app/src/main/java/org/koitharu/kotatsu/suggestions/domain/SuggestionRepository.kt index d334f31ef..398a0a0f0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/suggestions/domain/SuggestionRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/suggestions/domain/SuggestionRepository.kt @@ -32,14 +32,14 @@ class SuggestionRepository( suspend fun replace(suggestions: Iterable) { db.withTransaction { db.suggestionDao.deleteAll() - suggestions.forEach { x -> - val tags = x.manga.tags.toEntities() + suggestions.forEach { (manga, relevance) -> + val tags = manga.tags.toEntities() db.tagsDao.upsert(tags) - db.mangaDao.upsert(x.manga.toEntity(), tags) + db.mangaDao.upsert(manga.toEntity(), tags) db.suggestionDao.upsert( SuggestionEntity( - mangaId = x.manga.id, - relevance = x.relevance, + mangaId = manga.id, + relevance = relevance, createdAt = System.currentTimeMillis(), ) ) diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ScreenOrientationHelper.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ScreenOrientationHelper.kt index 6c856f4d4..4cecbd2a8 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ScreenOrientationHelper.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ScreenOrientationHelper.kt @@ -35,7 +35,7 @@ class ScreenOrientationHelper(private val activity: Activity) { isLandscape = !isLandscape } - fun observeAutoOrientation() = callbackFlow { + fun observeAutoOrientation() = callbackFlow { val observer = object : ContentObserver(Handler(activity.mainLooper)) { override fun onChange(selfChange: Boolean) { trySendBlocking(isAutoRotationEnabled) diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/InsetsExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/InsetsExt.kt deleted file mode 100644 index 7276dab57..000000000 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/InsetsExt.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.koitharu.kotatsu.utils.ext - -import android.view.View -import androidx.core.graphics.Insets - -fun Insets.getStart(view: View): Int { - return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) { - right - } else { - left - } -} - -fun Insets.getEnd(view: View): Int { - return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) { - left - } else { - right - } -} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/LiveDataExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/LiveDataExt.kt index e3cd66b43..03123c692 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/LiveDataExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/LiveDataExt.kt @@ -4,11 +4,10 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import androidx.lifecycle.liveData -import kotlinx.coroutines.Deferred -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.EmptyCoroutineContext import kotlinx.coroutines.flow.Flow import org.koitharu.kotatsu.utils.BufferedObserver +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext fun LiveData.observeNotNull(owner: LifecycleOwner, observer: Observer) { this.observe(owner) { diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt index 67c30830e..586e40eef 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt @@ -5,8 +5,6 @@ import android.graphics.Rect import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager -import androidx.annotation.StringRes -import androidx.appcompat.widget.TooltipCompat import androidx.core.view.children import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView diff --git a/app/src/main/res/color-v23/selector_switch_thumb.xml b/app/src/main/res/color-v23/selector_switch_thumb.xml deleted file mode 100644 index ef1a3cc36..000000000 --- a/app/src/main/res/color-v23/selector_switch_thumb.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color-v23/selector_switch_track.xml b/app/src/main/res/color-v23/selector_switch_track.xml deleted file mode 100644 index 3779a794a..000000000 --- a/app/src/main/res/color-v23/selector_switch_track.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/selector_switch_thumb.xml b/app/src/main/res/color/selector_switch_thumb.xml deleted file mode 100644 index de8892285..000000000 --- a/app/src/main/res/color/selector_switch_thumb.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/selector_switch_track.xml b/app/src/main/res/color/selector_switch_track.xml deleted file mode 100644 index 7b6c7c468..000000000 --- a/app/src/main/res/color/selector_switch_track.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/badge.xml b/app/src/main/res/drawable/badge.xml deleted file mode 100644 index a15864699..000000000 --- a/app/src/main/res/drawable/badge.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_list_add.xml b/app/src/main/res/drawable/ic_list_add.xml deleted file mode 100644 index 26ca07f23..000000000 --- a/app/src/main/res/drawable/ic_list_add.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml deleted file mode 100644 index e63766078..000000000 --- a/app/src/main/res/drawable/ic_pause.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_resume.xml b/app/src/main/res/drawable/ic_resume.xml deleted file mode 100644 index 448628b18..000000000 --- a/app/src/main/res/drawable/ic_resume.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_thumb.xml b/app/src/main/res/drawable/switch_thumb.xml deleted file mode 100644 index 12222e7f5..000000000 --- a/app/src/main/res/drawable/switch_thumb.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_track.xml b/app/src/main/res/drawable/switch_track.xml deleted file mode 100644 index 005647294..000000000 --- a/app/src/main/res/drawable/switch_track.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml deleted file mode 100644 index 812297a8f..000000000 --- a/app/src/main/res/layout/dialog_input.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_category_checkable.xml b/app/src/main/res/layout/item_category_checkable.xml deleted file mode 100644 index 712a1a9e4..000000000 --- a/app/src/main/res/layout/item_category_checkable.xml +++ /dev/null @@ -1,15 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/menu/opt_crash.xml b/app/src/main/res/menu/opt_crash.xml deleted file mode 100644 index 178c696c5..000000000 --- a/app/src/main/res/menu/opt_crash.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/opt_downloads.xml b/app/src/main/res/menu/opt_downloads.xml deleted file mode 100644 index f804ec53f..000000000 --- a/app/src/main/res/menu/opt_downloads.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/bools.xml b/app/src/main/res/values/bools.xml index 0940b1dbb..5cb31b523 100644 --- a/app/src/main/res/values/bools.xml +++ b/app/src/main/res/values/bools.xml @@ -1,5 +1,5 @@ - + false true false diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index a1fe42507..d560bd956 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,5 +1,6 @@ - + - + diff --git a/metadata/ru/full_description.txt b/metadata/ru/full_description.txt index 87944e3da..df079ccdd 100644 --- a/metadata/ru/full_description.txt +++ b/metadata/ru/full_description.txt @@ -5,7 +5,7 @@ Kotatsu - приложения для чтения манги с открыты - Поиск манги по имени и жанрам - История чтения - Избранное с пользовательскими категориями -- Возможность сохранять мангу и читать её оффлайн. Поддержка сторонних комиксов в формате CBZ +- Возможность сохранять мангу и читать её офлайн. Поддержка сторонних комиксов в формате CBZ - Интерфейс также оптимизирован для планшетов - Поддержка манхвы (Webtoon) - Уведомления о новых главах и лента обновлений