From 8414b758b9386d493bf7356e8a3829fbee775f91 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 6 Aug 2022 13:08:42 +0800 Subject: [PATCH] Fix history bug --- .../android/tv/ui/activity/DetailActivity.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index b13070383..40793d3ef 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -118,7 +118,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { mControl.next.setOnClickListener(view -> onNext()); mControl.prev.setOnClickListener(view -> onPrev()); mControl.scale.setOnClickListener(view -> onScale()); - mControl.reset.setOnClickListener(view -> getPlayer()); + mControl.reset.setOnClickListener(view -> getPlayer(true)); mControl.speed.setOnClickListener(view -> mControl.speed.setText(Players.get().addSpeed())); mBinding.flag.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @Override @@ -161,13 +161,12 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { mSiteViewModel.detailContent(getKey(), getId()); } - private void getPlayer() { + private void getPlayer(boolean reset) { Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(getEpisodePosition()); if (mFullscreen) Notify.show(ResUtil.getString(R.string.play_ready, item.getName())); mSiteViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl()); mBinding.progress.getRoot().setVisibility(View.VISIBLE); - Players.get().setKey(getHistoryKey()); - updateHistory(item); + updateHistory(item, reset); } private void setViewModel() { @@ -180,6 +179,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { } private void setDetail(Vod item) { + Players.get().setKey(getHistoryKey()); mBinding.progressLayout.showContent(); mBinding.video.setTag(item.getVodPic()); mBinding.name.setText(item.getVodName()); @@ -218,7 +218,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { for (int i = 0; i < mFlagAdapter.size(); i++) ((Vod.Flag) mFlagAdapter.get(i)).toggle(mCurrent == i, item); mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); mHandler.post(() -> mBinding.episode.setSelectedPosition(getEpisodePosition())); - getPlayer(); + getPlayer(false); } private void setGroup(int size) { @@ -288,11 +288,14 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { AppDatabase.get().getHistoryDao().insertOrUpdate(history); } - private void updateHistory(Vod.Flag.Episode item) { + private void updateHistory(Vod.Flag.Episode item, boolean reset) { History history = AppDatabase.get().getHistoryDao().find(getHistoryKey()); - history.setVodFlag(getVodFlag().getFlag()); + reset = reset || !history.getEpisodeUrl().equals(item.getUrl()); + long duration = reset ? 0 : history.getDuration(); + history.setDuration(duration); history.setEpisodeUrl(item.getUrl()); history.setVodRemarks(item.getName()); + history.setVodFlag(getVodFlag().getFlag()); history.setCreateTime(System.currentTimeMillis()); AppDatabase.get().getHistoryDao().update(history); EventBus.getDefault().post(RefreshEvent.history());