Merge branch '0.8.x'

# Conflicts:
#	app/build.gradle
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/database/queries/TrackQueries.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/TrackService.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistInterceptor.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/OAuth.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/OAuth.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/OAuth.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/OAuth.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt
#	app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/Source.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/Filter.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/FilterList.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/MangasPage.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/SChapterImpl.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/SMangaImpl.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/online/LoginSource.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/NucleusController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/base/presenter/NucleusConductorDelegate.java
#	app/src/main/java/eu/kanade/tachiyomi/ui/base/presenter/NucleusConductorLifecycleListener.java
#	app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/filter/SortGroup.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/global_search/CatalogueSearchCardAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/global_search/CatalogueSearchCardHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/global_search/CatalogueSearchCardItem.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/ChangeMangaCategoriesDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/DeleteLibraryMangasDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGridHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryNavigationView.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/ChangelogDialogController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterItem.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/DeleteChaptersDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/DeletingChaptersDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/DownloadChaptersDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetDisplayModeDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetSortingDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackChaptersDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackScoreDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackStatusDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/recent_updates/RecentChaptersController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt
#	app/src/main/java/eu/kanade/tachiyomi/widget/ExtendedNavigationView.kt
#	app/src/main/res/drawable/ic_book_white_24dp.xml
#	app/src/main/res/layout/categories_controller.xml
#	app/src/main/res/layout/chapters_controller.xml
#	app/src/main/res/layout/navigation_view_checkbox.xml
#	app/src/main/res/layout/navigation_view_group.xml
#	app/src/main/res/layout/pref_item_source.xml
#	app/src/main/res/layout/reader_activity.xml
#	app/src/main/res/layout/track_item.xml
#	app/src/main/res/values/strings.xml
#	build.gradle
This commit is contained in:
arkon 2020-02-29 17:52:49 -05:00
commit 0ac33b64b1
11 changed files with 49 additions and 26 deletions

View file

@ -40,8 +40,8 @@ android {
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 29 targetSdkVersion 29
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
versionCode 41 versionCode 42
versionName "0.8.4" versionName "0.8.5"
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\"" buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\"" buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""

View file

@ -7,6 +7,7 @@ import com.github.salomonbrys.kotson.string
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonArray import com.google.gson.JsonArray
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
@ -34,17 +35,23 @@ internal class ExtensionGithubApi {
val json = gson.fromJson<JsonArray>(text) val json = gson.fromJson<JsonArray>(text)
return json.map { element -> return json
val name = element["name"].string.substringAfter("Tachiyomi: ") .filter { element ->
val pkgName = element["pkg"].string val versionName = element["version"].string
val apkName = element["apk"].string val libVersion = versionName.substringBeforeLast('.').toDouble()
val versionName = element["version"].string libVersion >= ExtensionLoader.LIB_VERSION_MIN && libVersion <= ExtensionLoader.LIB_VERSION_MAX
val versionCode = element["code"].int }
val lang = element["lang"].string .map { element ->
val icon = "$REPO_URL/icon/${apkName.replace(".apk", ".png")}" val name = element["name"].string.substringAfter("Tachiyomi: ")
val pkgName = element["pkg"].string
val apkName = element["apk"].string
val versionName = element["version"].string
val versionCode = element["code"].int
val lang = element["lang"].string
val icon = "$REPO_URL/icon/${apkName.replace(".apk", ".png")}"
Extension.Available(name, pkgName, versionName, versionCode, lang, apkName, icon) Extension.Available(name, pkgName, versionName, versionCode, lang, apkName, icon)
} }
} }
fun getApkUrl(extension: Extension.Available): String { fun getApkUrl(extension: Extension.Available): String {

View file

@ -27,8 +27,8 @@ internal object ExtensionLoader {
private const val EXTENSION_FEATURE = "tachiyomi.extension" private const val EXTENSION_FEATURE = "tachiyomi.extension"
private const val METADATA_SOURCE_CLASS = "tachiyomi.extension.class" private const val METADATA_SOURCE_CLASS = "tachiyomi.extension.class"
private const val LIB_VERSION_MIN = 1 const val LIB_VERSION_MIN = 1.0
private const val LIB_VERSION_MAX = 1 const val LIB_VERSION_MAX = 1.2
private const val PACKAGE_FLAGS = PackageManager.GET_CONFIGURATIONS or PackageManager.GET_SIGNATURES private const val PACKAGE_FLAGS = PackageManager.GET_CONFIGURATIONS or PackageManager.GET_SIGNATURES
@ -107,9 +107,9 @@ internal object ExtensionLoader {
} }
// Validate lib version // Validate lib version
val majorLibVersion = versionName.substringBefore('.').toInt() val libVersion = versionName.substringBeforeLast('.').toDouble()
if (majorLibVersion < LIB_VERSION_MIN || majorLibVersion > LIB_VERSION_MAX) { if (libVersion < LIB_VERSION_MIN || libVersion > LIB_VERSION_MAX) {
val exception = Exception("Lib version is $majorLibVersion, while only versions " + val exception = Exception("Lib version is $libVersion, while only versions " +
"$LIB_VERSION_MIN to $LIB_VERSION_MAX are allowed") "$LIB_VERSION_MIN to $LIB_VERSION_MAX are allowed")
Timber.w(exception) Timber.w(exception)
return LoadResult.Error(exception) return LoadResult.Error(exception)

View file

@ -16,7 +16,6 @@ fun GET(
headers: Headers = DEFAULT_HEADERS, headers: Headers = DEFAULT_HEADERS,
cache: CacheControl = DEFAULT_CACHE_CONTROL cache: CacheControl = DEFAULT_CACHE_CONTROL
): Request { ): Request {
return Request.Builder() return Request.Builder()
.url(url) .url(url)
.headers(headers) .headers(headers)
@ -30,7 +29,6 @@ fun POST(
body: RequestBody = DEFAULT_BODY, body: RequestBody = DEFAULT_BODY,
cache: CacheControl = DEFAULT_CACHE_CONTROL cache: CacheControl = DEFAULT_CACHE_CONTROL
): Request { ): Request {
return Request.Builder() return Request.Builder()
.url(url) .url(url)
.post(body) .post(body)

View file

@ -24,7 +24,6 @@ class ChangeMangaCategoriesDialog<T>(bundle: Bundle? = null) :
categories: List<Category>, categories: List<Category>,
preselected: Array<Int> preselected: Array<Int>
) : this() { ) : this() {
this.mangas = mangas this.mangas = mangas
this.categories = categories this.categories = categories
this.preselected = preselected this.preselected = preselected

View file

@ -23,7 +23,6 @@ import kotlinx.android.synthetic.main.catalogue_grid_item.unread_text
class LibraryGridHolder( class LibraryGridHolder(
private val view: View, private val view: View,
private val adapter: FlexibleAdapter<*> private val adapter: FlexibleAdapter<*>
) : LibraryHolder(view, adapter) { ) : LibraryHolder(view, adapter) {
/** /**

View file

@ -80,7 +80,6 @@ class MainActivity : BaseActivity() {
} else { } else {
router.popToRoot() router.popToRoot()
} }
true true
} }
@ -110,7 +109,6 @@ class MainActivity : BaseActivity() {
container: ViewGroup, container: ViewGroup,
handler: ControllerChangeHandler handler: ControllerChangeHandler
) { ) {
syncActivityViewWithController(to, from) syncActivityViewWithController(to, from)
} }

View file

@ -41,7 +41,6 @@ class ChapterItem(val chapter: Chapter, val manga: Manga) : AbstractFlexibleItem
position: Int, position: Int,
payloads: List<Any?>? payloads: List<Any?>?
) { ) {
holder.bind(this, manga) holder.bind(this, manga)
} }

View file

@ -168,7 +168,6 @@ class HttpPageLoader(
val page: ReaderPage, val page: ReaderPage,
val priority: Int val priority: Int
) : Comparable<PriorityPage> { ) : Comparable<PriorityPage> {
companion object { companion object {
private val idGenerator = AtomicInteger() private val idGenerator = AtomicInteger()
} }

View file

@ -57,5 +57,4 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -1,5 +1,30 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<changelog bulletedList="true"> <changelog bulletedList="true">
<changelogversion versionName="v0.8.5" changeDate="">
<changelogtext>[b]Future releases will only support Android 5+[/b]</changelogtext>
<changelogtext>New: open in browser/webview from catalogue</changelogtext>
<changelogtext>New: reader color filter blend modes</changelogtext>
<changelogtext>New: link to help website in sidebar</changelogtext>
<changelogtext>New: long press bookmark icon in manga info to change categories</changelogtext>
<changelogtext>New: update prioritization setting</changelogtext>
<changelogtext>New: Bangumi tracker</changelogtext>
<changelogtext>New: extension search</changelogtext>
<changelogtext>New: see changelog by pressing Settings > About > Build time</changelogtext>
<changelogtext>Enhancement: ignore case when sorting library</changelogtext>
<changelogtext>Enhancement: available extensions grouped by languages</changelogtext>
<changelogtext>Enhancement: webview navigation</changelogtext>
<changelogtext>Enhancement: improved loading speed when skipping pages in a chapter</changelogtext>
<changelogtext>Fix: Cloudflare issues</changelogtext>
<changelogtext>Fix: sharing issues when filename is long</changelogtext>
<changelogtext>Fix: handle errors during global search</changelogtext>
<changelogtext>Fix: looping GIFs now loop</changelogtext>
<changelogtext>Fix: .nomedia files generated to avoid pages appearing in gallery apps</changelogtext>
<changelogtext>Fix: download queue won't autostart if it was previously paused</changelogtext>
<changelogtext>Fix: remove DOWNLOADED text after marking chapter as read (if setting is enabled)</changelogtext>
<changelogtext>Fix: backup dialog showing "null" when saving to cloud storage</changelogtext>
<changelogtext>Fix: MAL and Shikimori tracker issues</changelogtext>
</changelogversion>
<changelogversion versionName="v0.8.4" changeDate=""> <changelogversion versionName="v0.8.4" changeDate="">
<changelogtext>All the internal sources have been removed. They now need to be <changelogtext>All the internal sources have been removed. They now need to be
installed as an extension.</changelogtext> installed as an extension.</changelogtext>