diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 31ec0848c..b6dfb290e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -20,7 +20,6 @@ import com.fongmi.android.tv.Updater; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.api.WallConfig; -import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Func; import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.bean.Result; @@ -30,6 +29,7 @@ import com.fongmi.android.tv.databinding.ActivityHomeBinding; import com.fongmi.android.tv.event.CastEvent; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.ServerEvent; +import com.fongmi.android.tv.event.SyncEvent; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.server.Server; @@ -336,6 +336,31 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen }; } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onSyncEvent(SyncEvent event) { + if (ApiConfig.get().getConfig().equals(event.getConfig())) { + History.sync(event.getHistory()); + } else { + ApiConfig.get().clear().config(event.getConfig()).load(getCallback(event)); + } + } + + private Callback getCallback(SyncEvent event) { + return new Callback() { + @Override + public void success() { + RefreshEvent.history(); + RefreshEvent.video(); + onSyncEvent(event); + } + + @Override + public void error(int resId) { + Notify.show(resId); + } + }; + } + @Override public boolean dispatchKeyEvent(KeyEvent event) { if (Utils.isMenuKey(event)) showDialog(); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index 1d20237ce..805c072dc 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -11,7 +11,7 @@ import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.db.AppDatabase; -import com.fongmi.android.tv.net.Callback; +import com.fongmi.android.tv.event.RefreshEvent; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; @@ -65,7 +65,8 @@ public class History { } public static List arrayFrom(String str) { - Type listType = new TypeToken>() {}.getType(); + Type listType = new TypeToken>() { + }.getType(); List items = new Gson().fromJson(str, listType); return items == null ? Collections.emptyList() : items; } @@ -314,7 +315,7 @@ public class History { } } - private static void sync(List targets) { + private static void startSync(List targets) { for (History target : targets) { List items = AppDatabase.get().getHistoryDao().findByName(ApiConfig.getCid(), target.getVodName()); if (items.isEmpty()) { @@ -330,10 +331,10 @@ public class History { } } - public static void sync(List targets, Callback callback) { + public static void sync(List targets) { App.execute(() -> { - sync(targets); - App.post(callback::success); + startSync(targets); + RefreshEvent.history(); }); }