1
0
Code Issues Pull Requests 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();
}
});
}

View File

@ -87,6 +87,6 @@ export async function switchVersionLater(hash) {
HotUpdate.setNeedUpdate({hashName:hash});
}
export function clearFirstTimeMark() {
HotUpdate.clearFirstTimeMark();
export function markSuccess() {
HotUpdate.markSuccess();
}

View File

@ -88,7 +88,7 @@ export const commands = {
selectApp: async function({args, options}) {
const {platform} = options;
checkPlatform(platform);
const id = args[0] || (await chooseApp()).id;
const id = args[0] || (await chooseApp(platform)).id;
let updateInfo = {};
if (await fs.exists('update.json')) {