108 lines
3.3 KiB
Java
Raw Normal View History

2017-02-12 19:49:46 +08:00
package com.topjohnwu.magisk.asyncs;
2017-06-07 02:19:23 +08:00
import com.topjohnwu.magisk.BuildConfig;
2018-07-31 17:42:35 +08:00
import com.topjohnwu.magisk.Const;
2018-07-31 17:41:54 +08:00
import com.topjohnwu.magisk.Data;
import com.topjohnwu.magisk.MagiskManager;
2018-07-28 22:52:40 +08:00
import com.topjohnwu.magisk.utils.NotificationMgr;
2018-08-01 00:47:31 +08:00
import com.topjohnwu.magisk.utils.Topic;
2017-02-12 19:49:46 +08:00
import com.topjohnwu.magisk.utils.WebService;
import org.json.JSONException;
import org.json.JSONObject;
public class CheckUpdates extends ParallelTask<Void, Void, Void> {
2017-10-16 00:54:48 +08:00
private boolean showNotification;
2017-02-17 08:51:51 +08:00
2017-10-16 00:54:48 +08:00
public CheckUpdates() {
this(false);
2017-02-17 08:51:51 +08:00
}
2017-10-16 00:54:48 +08:00
public CheckUpdates(boolean b) {
showNotification = b;
2017-02-12 19:49:46 +08:00
}
2018-07-29 23:36:29 +08:00
private int getInt(JSONObject json, String name, int defValue) {
if (json == null)
return defValue;
try {
return json.getInt(name);
} catch (JSONException e) {
return defValue;
}
}
private String getString(JSONObject json, String name, String defValue) {
if (json == null)
return defValue;
try {
return json.getString(name);
} catch (JSONException e) {
return defValue;
}
}
private JSONObject getJson(JSONObject json, String name) {
try {
return json.getJSONObject(name);
} catch (JSONException e) {
return null;
}
}
2017-02-12 19:49:46 +08:00
@Override
protected Void doInBackground(Void... voids) {
2018-07-31 17:41:54 +08:00
MagiskManager mm = Data.MM();
2017-11-20 03:09:08 +08:00
String jsonStr = "";
2018-07-31 17:41:54 +08:00
switch (Data.updateChannel) {
2017-11-06 04:41:23 +08:00
case Const.Value.STABLE_CHANNEL:
jsonStr = WebService.getString(Const.Url.STABLE_URL);
2017-08-29 01:34:42 +08:00
break;
2017-11-06 04:41:23 +08:00
case Const.Value.BETA_CHANNEL:
jsonStr = WebService.getString(Const.Url.BETA_URL);
2017-08-29 01:34:42 +08:00
break;
2017-11-20 03:09:08 +08:00
case Const.Value.CUSTOM_CHANNEL:
2018-01-12 01:53:49 +08:00
jsonStr = WebService.getString(mm.prefs.getString(Const.Key.CUSTOM_CHANNEL, ""));
2017-11-20 03:09:08 +08:00
break;
2017-08-29 01:34:42 +08:00
}
2018-07-29 23:36:29 +08:00
JSONObject json;
2017-02-12 19:49:46 +08:00
try {
2018-07-29 23:36:29 +08:00
json = new JSONObject(jsonStr);
} catch (JSONException e) {
return null;
}
JSONObject magisk = getJson(json, "magisk");
2018-07-31 17:41:54 +08:00
Data.remoteMagiskVersionString = getString(magisk, "version", null);
Data.remoteMagiskVersionCode = getInt(magisk, "versionCode", -1);
Data.magiskLink = getString(magisk, "link", null);
Data.magiskNoteLink = getString(magisk, "note", null);
2018-07-29 23:36:29 +08:00
JSONObject manager = getJson(json, "app");
2018-07-31 17:41:54 +08:00
Data.remoteManagerVersionString = getString(manager, "version", null);
Data.remoteManagerVersionCode = getInt(manager, "versionCode", -1);
Data.managerLink = getString(manager, "link", null);
Data.managerNoteLink = getString(manager, "note", null);
2018-07-29 23:36:29 +08:00
JSONObject uninstaller = getJson(json, "uninstaller");
2018-07-31 17:41:54 +08:00
Data.uninstallerLink = getString(uninstaller, "link", null);
2018-07-29 23:36:29 +08:00
2017-02-12 19:49:46 +08:00
return null;
}
@Override
protected void onPostExecute(Void v) {
2018-02-20 00:39:17 +08:00
if (showNotification) {
2018-07-31 17:41:54 +08:00
if (BuildConfig.VERSION_CODE < Data.remoteManagerVersionCode) {
2018-07-28 22:52:40 +08:00
NotificationMgr.managerUpdate();
2018-07-31 17:41:54 +08:00
} else if (Data.magiskVersionCode < Data.remoteMagiskVersionCode) {
2018-07-28 22:52:40 +08:00
NotificationMgr.magiskUpdate();
2017-06-07 02:19:23 +08:00
}
2017-02-17 08:51:51 +08:00
}
2018-08-01 00:47:31 +08:00
Topic.publish(Topic.UPDATE_CHECK_DONE);
super.onPostExecute(v);
2017-02-12 19:49:46 +08:00
}
}