enable github update check

This commit is contained in:
sk 2022-11-01 23:27:50 +01:00
parent 10a405ef13
commit 596799bf2f
3 changed files with 21 additions and 11 deletions

View File

@ -9,8 +9,8 @@ android {
applicationId "org.joinmastodon.android.sk" applicationId "org.joinmastodon.android.sk"
minSdk 23 minSdk 23
targetSdk 33 targetSdk 33
versionCode 23 versionCode 24
versionName "1.1.3+fork.23" versionName "1.1.3+fork.24"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -52,6 +52,9 @@ android {
githubRelease{ githubRelease{
setRoot "src/github" setRoot "src/github"
} }
debug {
setRoot "src/github"
}
} }
lintOptions{ lintOptions{
checkReleaseBuilds false checkReleaseBuilds false

View File

@ -94,8 +94,8 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
public void maybeCheckForUpdates(){ public void maybeCheckForUpdates(){
if(state!=UpdateState.NO_UPDATE && state!=UpdateState.UPDATE_AVAILABLE) if(state!=UpdateState.NO_UPDATE && state!=UpdateState.UPDATE_AVAILABLE)
return; return;
long timeSinceLastCheck=System.currentTimeMillis()-getPrefs().getLong("lastCheck", 0); long timeSinceLastCheck=System.currentTimeMillis()-getPrefs().getLong("lastCheck", CHECK_PERIOD);
if(timeSinceLastCheck>CHECK_PERIOD){ if(timeSinceLastCheck>=CHECK_PERIOD){
setState(UpdateState.CHECKING); setState(UpdateState.CHECKING);
MastodonAPIController.runInBackground(this::actuallyCheckForUpdates); MastodonAPIController.runInBackground(this::actuallyCheckForUpdates);
} }
@ -109,18 +109,25 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
try(Response resp=call.execute()){ try(Response resp=call.execute()){
JsonObject obj=JsonParser.parseReader(resp.body().charStream()).getAsJsonObject(); JsonObject obj=JsonParser.parseReader(resp.body().charStream()).getAsJsonObject();
String tag=obj.get("tag_name").getAsString(); String tag=obj.get("tag_name").getAsString();
Matcher matcher=Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)").matcher(tag); Matcher matcher=Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)\\+fork\\.(\\d+)").matcher(tag);
if(!matcher.find()){ if(!matcher.find()){
Log.w(TAG, "actuallyCheckForUpdates: release tag has wrong format: "+tag); Log.w(TAG, "actuallyCheckForUpdates: release tag has wrong format: "+tag);
return; return;
} }
int newMajor=Integer.parseInt(matcher.group(1)), newMinor=Integer.parseInt(matcher.group(2)), newRevision=Integer.parseInt(matcher.group(3)); int newMajor=Integer.parseInt(matcher.group(1)),
String[] currentParts=BuildConfig.VERSION_NAME.split("\\."); newMinor=Integer.parseInt(matcher.group(2)),
int curMajor=Integer.parseInt(currentParts[0]), curMinor=Integer.parseInt(currentParts[1]), curRevision=Integer.parseInt(currentParts[2]); newRevision=Integer.parseInt(matcher.group(3)),
newForkNumber=Integer.parseInt(matcher.group(4));
String[] currentParts=BuildConfig.VERSION_NAME.split("[.+]");
int curMajor=Integer.parseInt(currentParts[0]),
curMinor=Integer.parseInt(currentParts[1]),
curRevision=Integer.parseInt(currentParts[2]),
curForkNumber=Integer.parseInt(currentParts[4]);
long newVersion=((long)newMajor << 32) | ((long)newMinor << 16) | newRevision; long newVersion=((long)newMajor << 32) | ((long)newMinor << 16) | newRevision;
long curVersion=((long)curMajor << 32) | ((long)curMinor << 16) | curRevision; long curVersion=((long)curMajor << 32) | ((long)curMinor << 16) | curRevision;
if(newVersion>curVersion || BuildConfig.DEBUG){ if(newVersion>curVersion || newForkNumber>curForkNumber || BuildConfig.DEBUG){
String version=newMajor+"."+newMinor+"."+newRevision; String version=newMajor+"."+newMinor+"."+newRevision+"+fork."+newForkNumber;
Log.d(TAG, "actuallyCheckForUpdates: new version: "+version); Log.d(TAG, "actuallyCheckForUpdates: new version: "+version);
for(JsonElement el:obj.getAsJsonArray("assets")){ for(JsonElement el:obj.getAsJsonArray("assets")){
JsonObject asset=el.getAsJsonObject(); JsonObject asset=el.getAsJsonObject();

View File

@ -20,7 +20,7 @@ public abstract class GithubSelfUpdater{
} }
public static boolean needSelfUpdating(){ public static boolean needSelfUpdating(){
return BuildConfig.BUILD_TYPE.equals("githubRelease"); return BuildConfig.BUILD_TYPE.equals("githubRelease") || BuildConfig.BUILD_TYPE.equals("debug");
} }
public abstract void maybeCheckForUpdates(); public abstract void maybeCheckForUpdates();