[app] Multi assets support (#1378)

This commit is contained in:
南宫雪珊 2021-11-08 20:55:22 +08:00 committed by GitHub
parent 367aa23a87
commit a68dd71fda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 34 additions and 24 deletions

View File

@ -5,6 +5,7 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import org.lsposed.manager.App; import org.lsposed.manager.App;
@ -15,6 +16,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.time.Instant; import java.time.Instant;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.Locale;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
@ -24,7 +26,6 @@ import okio.Okio;
public class UpdateUtil { public class UpdateUtil {
public static void loadRemoteVersion() { public static void loadRemoteVersion() {
var pref = App.getPreferences();
var request = new Request.Builder() var request = new Request.Builder()
.url("https://api.github.com/repos/LSPosed/LSPosed/releases/latest") .url("https://api.github.com/repos/LSPosed/LSPosed/releases/latest")
.addHeader("Accept", "application/vnd.github.v3+json") .addHeader("Accept", "application/vnd.github.v3+json")
@ -35,16 +36,38 @@ public class UpdateUtil {
if (!response.isSuccessful()) return; if (!response.isSuccessful()) return;
var body = response.body(); var body = response.body();
if (body == null) return; if (body == null) return;
String api = ConfigManager.isBinderAlive() ? ConfigManager.getApi() : "riru";
try { try {
var info = JsonParser.parseReader(body.charStream()).getAsJsonObject(); var info = JsonParser.parseReader(body.charStream()).getAsJsonObject();
var assets = info.getAsJsonArray("assets").get(0).getAsJsonObject(); var notes = info.get("body").getAsString();
var assetsArray = info.getAsJsonArray("assets");
for (var assets : assetsArray) {
checkAssets(assets.getAsJsonObject(), notes, api.toLowerCase(Locale.ROOT));
}
} catch (Throwable t) {
Log.e(App.TAG, t.getMessage(), t);
}
}
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.e(App.TAG, "loadRemoteVersion: " + e.getMessage());
var pref = App.getPreferences();
if (pref.getBoolean("checked", false)) return;
pref.edit().putBoolean("checked", true).apply();
}
};
App.getOkHttpClient().newCall(request).enqueue(callback);
}
private static void checkAssets(JsonObject assets, String releaseNotes, String api) {
var pref = App.getPreferences();
var name = assets.get("name").getAsString(); var name = assets.get("name").getAsString();
var code = Integer.parseInt(name.split("-", 4)[2]); var splitName = name.split("-");
var now = Instant.now().getEpochSecond(); if (!splitName[3].equals(api)) return;
var releaseNotes = info.get("body").getAsString();
pref.edit() pref.edit()
.putInt("latest_version", code) .putInt("latest_version", Integer.parseInt(splitName[2]))
.putLong("latest_check", now) .putLong("latest_check", Instant.now().getEpochSecond())
.putString("release_notes", releaseNotes) .putString("release_notes", releaseNotes)
.putBoolean("checked", true) .putBoolean("checked", true)
.apply(); .apply();
@ -61,19 +84,6 @@ public class UpdateUtil {
.apply(); .apply();
} }
} }
} catch (Throwable t) {
Log.e(App.TAG, t.getMessage(), t);
}
}
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.e(App.TAG, "loadRemoteVersion: " + e.getMessage());
if (pref.getBoolean("checked", false)) return;
pref.edit().putBoolean("checked", true).apply();
}
};
App.getOkHttpClient().newCall(request).enqueue(callback);
} }
public static boolean needUpdate() { public static boolean needUpdate() {