package com.yuantiku.yyl.helper;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import com.yuantiku.yyl.data.VersionInfo;
import com.yuantiku.yyl.helper.DialogHelper.ConfirmCallback;
import retrofit.RestAdapter;
import retrofit.RestAdapter.LogLevel;
import retrofit.http.GET;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
/**
* @author lirui
* @date 15/5/7.
*/
public enum UpdateHelper {
helper;
private UpdateService service;
UpdateHelper() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://fir.im/api/v2/app")
.setLogLevel(LogLevel.FULL)
.build();
this.service = restAdapter.create(UpdateService.class);
}
public void checkUpdate(Context context) {
service.getVersionInfo()
.filter(VersionInfo::canUpdate)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(versionInfo -> {
DialogHelper.showConfirm(context, "发现新版本", versionInfo.getChangelog(),
new ConfirmCallback() {
@Override
public String getPositiveHint() {
return "更新";
}
@Override
public void onPositive(DialogInterface dialog) {
update(context, versionInfo.getUpdate_url());
}
@Override
public String getNegativeHint() {
return "暂不更新";
}
@Override
public void onNegative(DialogInterface dialog) {
}
});
}, Throwable::printStackTrace);
}
public void update(Context context, String url) {
try {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
context.startActivity(i);
} catch (Exception e) {
L.e(e);
}
}
public interface UpdateService {
@GET("/version/554ad2aecfc28cc91c0002f0")
Observable<VersionInfo> getVersionInfo();
}
}