1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-09-18 01:36:11 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
tdzl2003
2016-04-05 17:00:03 +08:00
parent 1c9fd7dd98
commit e13675522c
4 changed files with 39 additions and 19 deletions

View File

@@ -27,6 +27,16 @@ public class UpdateContext {
}
this.sp = context.getSharedPreferences("update", Context.MODE_PRIVATE);
String packageVersion = getPackageVersion();
if (!packageVersion.equals(this.sp.getString("packageVersion", null))) {
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.putString("packageVersion", packageVersion);
editor.apply();
this.clearUp();
}
}
public String getRootDir() {
@@ -98,7 +108,7 @@ public class UpdateContext {
editor.putString("lastVersion", hashName);
}
editor.putBoolean("firstTime", true);
editor.putBoolean("shouldRollback", false);
editor.putBoolean("firstTimeOk", false);
editor.putBoolean("rolledBack", false);
editor.apply();
}
@@ -115,10 +125,17 @@ public class UpdateContext {
return sp.getBoolean("rolledBack", false);
}
public void clearFirstTimeMark() {
public void markSuccess() {
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("firstTimeOk", true);
editor.apply();
this.clearUp();
}
public void clearFirstTime() {
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("firstTime", false);
editor.putBoolean("shouldRollback", false);
editor.apply();
this.clearUp();
@@ -145,33 +162,32 @@ public class UpdateContext {
}
public String getBundleUrl(String defaultAssetsUrl) {
// Test should rollback.
if (sp.getBoolean("shouldRollback", false)) {
this.rollBack();
}
String currentVersion = getCurrentVersion();
if (currentVersion == null) {
return defaultAssetsUrl;
}
if (sp.getBoolean("firstTime", false)) {
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("shouldRollback", true);
editor.apply();
// Test should rollback.
if (!sp.getBoolean("firstTime", false)) {
if (!sp.getBoolean("firstTimeOk", true)) {
// Not firstTime, but not ok, so we roll back.
currentVersion = this.rollBack();
}
}
return (new File(rootDir, currentVersion+"/index.bundlejs").toString());
}
private void rollBack() {
private String rollBack() {
String lastVersion = sp.getString("lastVersion", null);
if (lastVersion == null) {
throw new Error("This should never happen");
}
SharedPreferences.Editor editor = sp.edit();
editor.putString("currentVersion", lastVersion);
editor.putBoolean("shouldRollback", false);
editor.putBoolean("firstTimeOk", true);
editor.putBoolean("firstTime", false);
editor.putBoolean("rolledBack", true);
editor.apply();
return lastVersion;
}
private void clearUp() {

View File

@@ -34,7 +34,11 @@ public class UpdateModule extends ReactContextBaseJavaModule{
constants.put("downloadRootDir", updateContext.getRootDir());
constants.put("packageVersion", updateContext.getPackageVersion());
constants.put("currentVersion", updateContext.getCurrentVersion());
constants.put("isFirstTime", updateContext.isFirstTime());
boolean isFirstTime = updateContext.isFirstTime();
constants.put("isFirstTime", isFirstTime);
if (isFirstTime) {
updateContext.clearFirstTime();
}
boolean isRolledBack = updateContext.isRolledBack();
constants.put("isRolledBack", isRolledBack);
if (isRolledBack) {
@@ -129,11 +133,11 @@ public class UpdateModule extends ReactContextBaseJavaModule{
}
@ReactMethod
public void clearFirstTimeMark() {
public void markSuccess() {
UiThreadUtil.runOnUiThread(new Runnable() {
@Override
public void run() {
updateContext.clearFirstTimeMark();
updateContext.markSuccess();
}
});
}