[leanback] support sync history

pull/123/head
FongMi 3 years ago
parent 7855ecdfc6
commit d75c091e8b
  1. 27
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 13
      app/src/main/java/com/fongmi/android/tv/bean/History.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();

@ -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<History> arrayFrom(String str) {
Type listType = new TypeToken<List<History>>() {}.getType();
Type listType = new TypeToken<List<History>>() {
}.getType();
List<History> items = new Gson().fromJson(str, listType);
return items == null ? Collections.emptyList() : items;
}
@ -314,7 +315,7 @@ public class History {
}
}
private static void sync(List<History> targets) {
private static void startSync(List<History> targets) {
for (History target : targets) {
List<History> items = AppDatabase.get().getHistoryDao().findByName(ApiConfig.getCid(), target.getVodName());
if (items.isEmpty()) {
@ -330,10 +331,10 @@ public class History {
}
}
public static void sync(List<History> targets, Callback callback) {
public static void sync(List<History> targets) {
App.execute(() -> {
sync(targets);
App.post(callback::success);
startSync(targets);
RefreshEvent.history();
});
}

Loading…
Cancel
Save