diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/parts/UpdateChecks.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/parts/UpdateChecks.kt index 507999208..fdfce680d 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/parts/UpdateChecks.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/parts/UpdateChecks.kt @@ -1,12 +1,19 @@ package tw.nekomimi.nekogram.parts import android.app.Activity +import android.content.IntentSender +import com.google.android.play.core.appupdate.AppUpdateManagerFactory +import com.google.android.play.core.install.InstallStateUpdatedListener +import com.google.android.play.core.install.model.AppUpdateType +import com.google.android.play.core.install.model.InstallStatus +import com.google.android.play.core.install.model.UpdateAvailability import org.json.JSONObject import org.telegram.messenger.BuildConfig import org.telegram.messenger.LocaleController import org.telegram.messenger.R import org.telegram.ui.Cells.TextCell import tw.nekomimi.nekogram.BottomBuilder +import tw.nekomimi.nekogram.ExternalGcm import tw.nekomimi.nekogram.NekoXConfig import tw.nekomimi.nekogram.utils.* import java.util.* @@ -93,6 +100,65 @@ fun Activity.checkUpdate(force: Boolean = false) { UIUtil.runOnIoDispatcher { + if (ExternalGcm.checkPlayServices() && !force) { + + progress.uUpdate(LocaleController.getString("Checking", R.string.Checking) + " (Play Store)") + + val manager = AppUpdateManagerFactory.create(this) + + manager.registerListener(InstallStateUpdatedListener { + + if (it.installStatus() == InstallStatus.DOWNLOADED) { + + val builder = BottomBuilder(this) + + builder.addTitle(LocaleController.getString("UpdateDownloaded", R.string.UpdateDownloaded), false) + + builder.addItem(LocaleController.getString("UpdateUpdate", R.string.UpdateUpdate), R.drawable.baseline_system_update_24, false) { + + manager.completeUpdate() + + } + + builder.addItem(LocaleController.getString("UpdateLater", R.string.UpdateLater), R.drawable.baseline_watch_later_24, false, null) + + builder.show() + + } + + }) + + manager.appUpdateInfo.addOnSuccessListener { + + progress.dismiss() + + if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && it.availableVersionCode() > BuildConfig.VERSION_CODE) { + + try { + + manager.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, this, 114514) + + } catch (ignored: IntentSender.SendIntentException) { + } + + } else { + + AlertUtil.showToast(LocaleController.getString("NoUpdate", R.string.NoUpdate)) + + } + + }.addOnFailureListener { + + progress.uDismiss() + + AlertUtil.showToast(it.message ?: it.javaClass.simpleName) + + } + + return@runOnIoDispatcher + + } + progress.uUpdate(LocaleController.getString("Checking", R.string.Checking) + " (Repo)") val ex = LinkedList() diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/utils/UpdateUtil.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/utils/UpdateUtil.kt index cf837def6..00b53ac52 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/utils/UpdateUtil.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/utils/UpdateUtil.kt @@ -8,7 +8,11 @@ import okhttp3.Request import okhttp3.Response import okhttp3.internal.closeQuietly import org.json.JSONObject -import org.telegram.messenger.* +import org.telegram.messenger.BuildVars +import org.telegram.messenger.FileLog +import org.telegram.messenger.LocaleController +import org.telegram.messenger.BuildConfig +import org.telegram.messenger.R import org.tukaani.xz.XZInputStream import tw.nekomimi.nekogram.BottomBuilder import tw.nekomimi.nekogram.ExternalGcm @@ -46,7 +50,7 @@ object UpdateUtil { FileLog.d("checking updates from repo") - if (System.currentTimeMillis() - NekoXConfig.preferences.getLong("ignored_update_at", -1) > 1 * 60 * 60 * 1000L) { + if (System.currentTimeMillis() - NekoXConfig.preferences.getLong("ignored_update_at", -1) < 1 * 60 * 60 * 1000L) { FileLog.d("ignored") @@ -116,7 +120,7 @@ object UpdateUtil { } - fun doUpdate(ctx: Activity, targetVer: Int, defFlavor: String,buildType: String = BuildConfig.BUILD_TYPE,flavor: String = BuildConfig.FLAVOR) { + fun doUpdate(ctx: Activity, targetVer: Int, defFlavor: String, buildType: String = BuildConfig.BUILD_TYPE, flavor: String = BuildConfig.FLAVOR) { val pro = AlertUtil.showProgress(ctx) pro.setCanCacnel(false)