diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt index 1f4ee9c74..8a512daf9 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt @@ -47,14 +47,12 @@ object Const { object Url { const val ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip" - const val PAYPAL_URL = "https://www.paypal.me/topjohnwu" const val PATREON_URL = "https://www.patreon.com/topjohnwu" - const val TWITTER_URL = "https://twitter.com/topjohnwu" - const val XDA_THREAD = "http://forum.xda-developers.com/showthread.php?t=3432382" const val SOURCE_CODE_URL = "https://github.com/topjohnwu/Magisk" const val GITHUB_RAW_URL = "https://raw.githubusercontent.com/" const val GITHUB_API_URL = "https://api.github.com/users/Magisk-Modules-Repo/" + const val GITHUB_PAGE_URL = "https://topjohnwu.github.io/magisk_files/" } object Key { diff --git a/app/src/main/java/com/topjohnwu/magisk/data/network/GithubServices.kt b/app/src/main/java/com/topjohnwu/magisk/data/network/GithubServices.kt index 38a84ff2e..bfb76bc76 100644 --- a/app/src/main/java/com/topjohnwu/magisk/data/network/GithubServices.kt +++ b/app/src/main/java/com/topjohnwu/magisk/data/network/GithubServices.kt @@ -7,6 +7,15 @@ import okhttp3.ResponseBody import retrofit2.Response import retrofit2.http.* +interface GithubPageServices { + + @GET("stable.json") + suspend fun fetchStableUpdate(): UpdateInfo + + @GET("beta.json") + suspend fun fetchBetaUpdate(): UpdateInfo +} + interface GithubRawServices { //region topjohnwu/magisk_files diff --git a/app/src/main/java/com/topjohnwu/magisk/data/repository/MagiskRepository.kt b/app/src/main/java/com/topjohnwu/magisk/data/repository/MagiskRepository.kt index 5a5ae85cd..d7d6294f7 100644 --- a/app/src/main/java/com/topjohnwu/magisk/data/repository/MagiskRepository.kt +++ b/app/src/main/java/com/topjohnwu/magisk/data/repository/MagiskRepository.kt @@ -2,27 +2,29 @@ package com.topjohnwu.magisk.data.repository import com.topjohnwu.magisk.core.Config import com.topjohnwu.magisk.core.Info +import com.topjohnwu.magisk.data.network.GithubPageServices import com.topjohnwu.magisk.data.network.GithubRawServices import retrofit2.HttpException import timber.log.Timber import java.io.IOException class MagiskRepository( - private val apiRaw: GithubRawServices + private val rawSvc: GithubRawServices, + private val pageSvc: GithubPageServices ) { suspend fun fetchUpdate() = try { var info = when (Config.updateChannel) { - Config.Value.DEFAULT_CHANNEL, Config.Value.STABLE_CHANNEL -> apiRaw.fetchStableUpdate() - Config.Value.BETA_CHANNEL -> apiRaw.fetchBetaUpdate() - Config.Value.CANARY_CHANNEL -> apiRaw.fetchCanaryUpdate() - Config.Value.CUSTOM_CHANNEL -> apiRaw.fetchCustomUpdate(Config.customChannelUrl) + Config.Value.DEFAULT_CHANNEL, Config.Value.STABLE_CHANNEL -> pageSvc.fetchStableUpdate() + Config.Value.BETA_CHANNEL -> pageSvc.fetchBetaUpdate() + Config.Value.CANARY_CHANNEL -> rawSvc.fetchCanaryUpdate() + Config.Value.CUSTOM_CHANNEL -> rawSvc.fetchCustomUpdate(Config.customChannelUrl) else -> throw IllegalArgumentException() } if (info.magisk.versionCode < Info.env.magiskVersionCode && Config.updateChannel == Config.Value.DEFAULT_CHANNEL) { Config.updateChannel = Config.Value.BETA_CHANNEL - info = apiRaw.fetchBetaUpdate() + info = pageSvc.fetchBetaUpdate() } Info.remote = info info diff --git a/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt b/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt index c40b39273..5cc7eeb48 100644 --- a/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt +++ b/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt @@ -7,6 +7,7 @@ import com.topjohnwu.magisk.core.Config import com.topjohnwu.magisk.core.Const import com.topjohnwu.magisk.core.Info import com.topjohnwu.magisk.data.network.GithubApiServices +import com.topjohnwu.magisk.data.network.GithubPageServices import com.topjohnwu.magisk.data.network.GithubRawServices import com.topjohnwu.magisk.ktx.precomputedText import com.topjohnwu.magisk.net.Networking @@ -30,6 +31,7 @@ val networkingModule = module { single { createRetrofit(get()) } single { createApiService(get(), Const.Url.GITHUB_RAW_URL) } single { createApiService(get(), Const.Url.GITHUB_API_URL) } + single { createApiService(get(), Const.Url.GITHUB_PAGE_URL) } single { createMarkwon(get(), get()) } } diff --git a/app/src/main/java/com/topjohnwu/magisk/di/RepositoryModule.kt b/app/src/main/java/com/topjohnwu/magisk/di/RepositoryModule.kt index e44360ba8..6f2de1747 100644 --- a/app/src/main/java/com/topjohnwu/magisk/di/RepositoryModule.kt +++ b/app/src/main/java/com/topjohnwu/magisk/di/RepositoryModule.kt @@ -7,7 +7,7 @@ import org.koin.dsl.module val repositoryModule = module { - single { MagiskRepository(get()) } + single { MagiskRepository(get(), get()) } single { LogRepository(get()) } single { StringRepository(get()) } } diff --git a/stub/build.gradle.kts b/stub/build.gradle.kts index c0077060f..c491740e9 100644 --- a/stub/build.gradle.kts +++ b/stub/build.gradle.kts @@ -3,11 +3,14 @@ plugins { } android { + val canary = !Config["appVersion"].orEmpty().contains(".") + defaultConfig { applicationId = "com.topjohnwu.magisk" versionCode = 1 versionName = Config["appVersion"] buildConfigField("String", "DEV_CHANNEL", Config["DEV_CHANNEL"] ?: "null") + buildConfigField("boolean", "CANARY", if (canary) "true" else "false") } buildTypes { diff --git a/stub/src/main/java/com/topjohnwu/magisk/MainActivity.java b/stub/src/main/java/com/topjohnwu/magisk/MainActivity.java index 318194057..0d5d56621 100644 --- a/stub/src/main/java/com/topjohnwu/magisk/MainActivity.java +++ b/stub/src/main/java/com/topjohnwu/magisk/MainActivity.java @@ -25,12 +25,6 @@ import static android.R.string.yes; public class MainActivity extends Activity { - private static final boolean CANARY = !BuildConfig.VERSION_NAME.contains("."); - private static final String URL = - BuildConfig.DEV_CHANNEL != null ? BuildConfig.DEV_CHANNEL : - "https://raw.githubusercontent.com/topjohnwu/magisk_files/" + - (BuildConfig.DEBUG ? "canary/debug.json" : - (CANARY ? "canary/release.json" : "master/stable.json")); private static final String APP_NAME = "Magisk Manager"; private String apkLink; @@ -40,6 +34,15 @@ public class MainActivity extends Activity { }; private Context themed; + private String URL() { + if (BuildConfig.DEV_CHANNEL != null) + return BuildConfig.DEV_CHANNEL; + else if (BuildConfig.CANARY) + return "https://raw.githubusercontent.com/topjohnwu/magisk_files/canary/release.json"; + else + return "https://topjohnwu.github.io/magisk_files/stable.json"; + } + private void showDialog() { ProgressDialog.show(themed, getString(R.string.dling), @@ -66,7 +69,7 @@ public class MainActivity extends Activity { themed = new ContextThemeWrapper(this, android.R.style.Theme_DeviceDefault); if (Networking.checkNetworkStatus(this)) { - Networking.get(URL) + Networking.get(URL()) .setErrorHandler(err) .getAsJSONObject(new JSONLoader()); } else {