From 2bbf2dce3c18ebd98feff173ccb43a169c469e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Wed, 28 May 2025 11:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8F=E8=A7=88=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collection/ArticleViewModel.java | 17 ++--- .../collection/CommunityArticleViewModel.kt | 15 ++-- .../collection/GamesCollectionViewModel.kt | 8 +- .../gamecenter/collection/VideoViewModel.kt | 12 +-- .../history/HistoryGameListAdapter.kt | 53 +++++++++++-- .../history/HistoryGameListFragment.kt | 67 ++++++++++++++++- .../history/HistoryGameListViewModel.kt | 74 ++++++++++++++++--- .../history/HistoryWrapperFragment.kt | 16 ++-- .../gamecenter/room/dao/ArticleHistoryDao.kt | 4 +- .../com/gh/gamecenter/room/dao/GameDao.kt | 4 +- .../gamecenter/room/dao/GamesCollectionDao.kt | 4 +- .../gh/gamecenter/room/dao/NewsHistoryDao.kt | 4 +- .../gh/gamecenter/room/dao/VideoHistoryDao.kt | 4 +- .../com/gh/gamecenter/core/utils/TimeUtils.kt | 7 ++ .../setting/view/SettingsFragment.kt | 5 +- 15 files changed, 221 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java b/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java index 324ee4d26b..0f8e0de096 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ArticleViewModel.java @@ -2,24 +2,24 @@ package com.gh.gamecenter.collection; import android.app.Application; -import com.gh.gamecenter.core.AppExecutor; +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; + import com.gh.common.history.HistoryDatabase; import com.gh.common.history.HistoryHelper; -import com.gh.gamecenter.core.utils.UrlFilterUtils; import com.gh.gamecenter.common.baselist.ListViewModel; import com.gh.gamecenter.common.baselist.LoadType; +import com.gh.gamecenter.core.AppExecutor; +import com.gh.gamecenter.core.utils.TimeUtils; +import com.gh.gamecenter.core.utils.UrlFilterUtils; import com.gh.gamecenter.feature.entity.NewsEntity; import com.gh.gamecenter.feature.entity.ViewsEntity; import com.gh.gamecenter.info.NewsViewsRepository; import com.gh.gamecenter.login.user.UserManager; import com.gh.gamecenter.retrofit.RetrofitManager; -import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.lifecycle.LiveData; - import io.reactivex.Observable; import io.reactivex.Single; @@ -83,10 +83,7 @@ public class ArticleViewModel extends ListViewModel { if (ArticleFragment.COLLECTION.equals(type)) { return Single.fromObservable(RetrofitManager.getInstance().getApi().getCollectionArticle(UserManager.getInstance().getUserId(), page)); } else { - if (page > 5) { - return Single.create(emitter -> emitter.onSuccess(new ArrayList<>())); - } - return HistoryDatabase.Companion.getInstance().newsDao().getNewsWithOffset(20, (page - 1) * 20); + return HistoryDatabase.Companion.getInstance().newsDao().getNewsWithOffset(20, (page - 1) * 20, TimeUtils.getTimestampMonthsAgo(3)); } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleViewModel.kt index 9511ce3814..b02e5917e5 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleViewModel.kt @@ -2,17 +2,18 @@ package com.gh.gamecenter.collection import android.annotation.SuppressLint import android.app.Application -import com.gh.gamecenter.core.AppExecutor import com.gh.common.history.HistoryDatabase import com.gh.common.history.HistoryHelper import com.gh.gamecenter.R import com.gh.gamecenter.common.baselist.ListViewModel import com.gh.gamecenter.common.baselist.LoadType -import com.gh.gamecenter.login.user.UserManager -import com.gh.gamecenter.feature.entity.AnswerEntity -import com.gh.gamecenter.feature.entity.ArticleEntity import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response +import com.gh.gamecenter.core.AppExecutor +import com.gh.gamecenter.core.utils.TimeUtils +import com.gh.gamecenter.feature.entity.AnswerEntity +import com.gh.gamecenter.feature.entity.ArticleEntity +import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.Observable @@ -45,11 +46,7 @@ class CommunityArticleViewModel(application: Application) : ListViewModel 5) { - Single.create { it.onSuccess(arrayListOf()) } - } else { - HistoryDatabase.instance.articleDao().getArticleWithOffset(20, (page - 1) * 20) - } + HistoryDatabase.instance.articleDao().getArticleWithOffset(20, (page - 1) * 20, TimeUtils.getTimestampMonthsAgo(3)) } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionViewModel.kt index 3cbcefa7a7..9e3304f751 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionViewModel.kt @@ -18,6 +18,7 @@ import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.observableToMain import com.gh.gamecenter.common.utils.singleToMain import com.gh.gamecenter.core.AppExecutor +import com.gh.gamecenter.core.utils.TimeUtils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.entity.GamesCollectionEntity import com.gh.gamecenter.retrofit.RetrofitManager @@ -45,11 +46,8 @@ class GamesCollectionViewModel( TYPE_COLLECT -> mApi.getFavoriteGameCollectionList(userId, page) TYPE_HISTORY -> { - if (page > 5) { - Single.create { it.onSuccess(arrayListOf()) } - } else { - HistoryDatabase.instance.gamesCollectionDao().getGamesCollectionWithOffset(20, (page - 1) * 20) - } + HistoryDatabase.instance.gamesCollectionDao() + .getGamesCollectionWithOffset(20, (page - 1) * 20, TimeUtils.getTimestampMonthsAgo(3)) } else -> { diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt index 9a30f99f28..3e60d47be3 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt @@ -1,13 +1,14 @@ package com.gh.gamecenter.collection import android.app.Application -import com.gh.gamecenter.core.AppExecutor import com.gh.common.constant.Config import com.gh.common.history.HistoryDatabase import com.gh.common.history.HistoryHelper -import com.gh.gamecenter.core.utils.UrlFilterUtils import com.gh.gamecenter.common.baselist.ListViewModel import com.gh.gamecenter.common.baselist.LoadType +import com.gh.gamecenter.core.AppExecutor +import com.gh.gamecenter.core.utils.TimeUtils +import com.gh.gamecenter.core.utils.UrlFilterUtils import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.entity.PersonalHistoryEntity import com.gh.gamecenter.feature.entity.User @@ -71,12 +72,7 @@ class VideoViewModel(application: Application) : ListViewModel>? { if (type == VideoFragment.VideoStyle.BROWSING_HISTORY.value) { - if (page > 5) { - return Single.create { it.onSuccess(arrayListOf()) } - } - if (type == VideoFragment.VideoStyle.BROWSING_HISTORY.value) { - return HistoryDatabase.instance.videoHistoryDao().getVideoWithOffset(20, (page - 1) * 20) - } + return HistoryDatabase.instance.videoHistoryDao().getVideoWithOffset(20, (page - 1) * 20, TimeUtils.getTimestampMonthsAgo(3)) } return null } diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt index 7a79699e05..b370e782d6 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt @@ -8,20 +8,22 @@ import android.widget.LinearLayout import android.widget.PopupWindow import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.widget.ConstraintLayout -import com.gh.gamecenter.common.constant.ItemViewType -import com.gh.common.util.* +import com.gh.common.util.DownloadItemUtils import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.GameViewHolder import com.gh.gamecenter.common.baselist.ListAdapter +import com.gh.gamecenter.common.constant.ItemViewType import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.common.view.DrawableView -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.viewholder.FooterViewHolder +import com.gh.gamecenter.core.utils.StringUtils import com.gh.gamecenter.databinding.PopupHistoryOptionBinding +import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.feature.databinding.GameItemBinding import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.game.GameItemViewHolder +import com.lightgame.download.DownloadEntity class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGameListViewModel) : ListAdapter(context) { @@ -30,6 +32,23 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa private var mPopWindow: PopupWindow? = null private var mPopupBinding: PopupHistoryOptionBinding? = null var selectItems = arrayListOf() + val positionAndPackageMap = HashMap() + + override fun setListData(updateData: MutableList?) { + positionAndPackageMap.clear() + // 记录游戏位置 + if (updateData != null) { + for (i in 0 until updateData.size) { + val gameEntity = updateData[i] + var packages = gameEntity.id + for (apkEntity in gameEntity.getApk()) { + packages += apkEntity.packageName + } + positionAndPackageMap[packages + i] = i + } + } + super.setListData(updateData) + } override fun areItemsTheSame(oldItem: GameEntity?, newItem: GameEntity?): Boolean { return oldItem?.id == newItem?.id @@ -113,7 +132,7 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa "(浏览记录:游戏)", StringUtils.buildString("浏览记录", ":", gameEntity.name) ) - DownloadItemUtils.updateItemWithViewOnlyStyle(GameViewHolder(holder.binding)) + DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), false) holder.itemView.setOnLongClickListener { consume { @@ -184,4 +203,28 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa checkAllCb.isChecked = selectItems.size == mEntityList.size } } + + fun notifyItemByDownload(download: DownloadEntity) { + for (key in positionAndPackageMap.keys) { + if (key.contains(download.packageName) && key.contains(download.gameId)) { + val position = positionAndPackageMap[key] + if (position != null && mEntityList != null && position < mEntityList.size) { + mEntityList[position].getEntryMap()[download.platform] = download + notifyItemChanged(position) + } + } + } + } + + fun notifyItemAndRemoveDownload(status: EBDownloadStatus) { + for (key in positionAndPackageMap.keys) { + if (key.contains(status.packageName) && key.contains(status.gameId)) { + val position = positionAndPackageMap[key] + if (position != null && mEntityList != null && position < mEntityList.size) { + mEntityList[position].getEntryMap().remove(status.platform) + notifyItemChanged(position) + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt index 05c360988f..c975f97575 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt @@ -4,20 +4,44 @@ import android.os.Bundle import android.view.View import androidx.recyclerview.widget.RecyclerView import com.ethanhua.skeleton.Skeleton +import com.gh.common.util.DialogUtils +import com.gh.common.xapk.XapkInstaller +import com.gh.common.xapk.XapkUnzipStatus +import com.gh.download.DownloadManager +import com.gh.gamecenter.R +import com.gh.gamecenter.common.baselist.ListFragment import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.toDrawable import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.common.view.CustomDividerItemDecoration -import com.gh.gamecenter.R -import com.gh.gamecenter.common.baselist.ListFragment import com.gh.gamecenter.databinding.FragmentListBaseSkeletonBinding +import com.gh.gamecenter.eventbus.EBDownloadStatus +import com.gh.gamecenter.eventbus.EBPackage import com.gh.gamecenter.feature.entity.GameEntity +import com.lightgame.download.DataWatcher +import com.lightgame.download.DownloadEntity +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode open class HistoryGameListFragment : ListFragment(), IBatchDelete { private var mAdapter: HistoryGameListAdapter? = null private val mBinding by lazy { FragmentListBaseSkeletonBinding.inflate(layoutInflater) } + private val dataWatcher = object : DataWatcher() { + override fun onDataChanged(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + + if (downloadEntity.meta[XapkInstaller.XAPK_UNZIP_STATUS] == XapkUnzipStatus.FAILURE.name) { + showUnzipFailureDialog(downloadEntity) + } + } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } + } + override fun getLayoutId() = R.layout.fragment_list_base_skeleton override fun getInflatedLayout() = mBinding.root @@ -55,4 +79,43 @@ open class HistoryGameListFragment : ListFragment(application) { + private val api = RetrofitManager.getInstance().api override fun provideDataObservable(page: Int): Observable>? { return null } + @SuppressLint("CheckResult") override fun provideDataSingle(page: Int): Single> { - return if (page > 5) { - Single.create { it.onSuccess(arrayListOf()) } - } else { - HistoryDatabase.instance.gameDao().getGamesWithOffset(20, (page - 1) * 20).map { - val gameEntityList = arrayListOf() - for (history in it) { - gameEntityList.add(history.convertHistoryGameEntityToGameEntity()) - } - gameEntityList + return Single.create { emitter -> + HistoryDatabase.instance.gameDao().getGamesWithOffset(20, (page - 1) * 20, TimeUtils.getTimestampMonthsAgo(3)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + if (it.isEmpty()) { + emitter.onSuccess(emptyList()) + } else { + val ids = it.map { historyGameEntity -> historyGameEntity.id } + val result = ArrayList() + val sequences = ArrayList>() + for (id in ids) { + sequences.add(api.getGameDigest(id)) + } + Observable.mergeDelayError(sequences) + .map(ApkActiveUtils.filterMapper) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onComplete() { + processingData(emitter, it, result) + } + + override fun onFailure(e: HttpException?) { + processingData(emitter, it, result) + } + + override fun onNext(response: GameEntity) { + ApkActiveUtils.filterHideApk(response) + result.add(response) + } + }) + } + }, { + emitter.onError(it) + }) + } + } + + private fun processingData( + emitter: SingleEmitter>, + historyGameList: List, + gameList: List + ) { + if (gameList.isEmpty()) { + val gameEntityList = arrayListOf() + for (history in historyGameList) { + gameEntityList.add(history.convertHistoryGameEntityToGameEntity()) } + emitter.onSuccess(gameEntityList) + } else { + emitter.onSuccess(gameList) } } diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt index d45b3a8574..4eb32b8b73 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryWrapperFragment.kt @@ -5,12 +5,15 @@ import android.view.MenuItem import android.view.View import android.widget.TextView import androidx.fragment.app.Fragment +import com.gh.gamecenter.R +import com.gh.gamecenter.collection.ArticleFragment +import com.gh.gamecenter.collection.CommunityArticleFragment +import com.gh.gamecenter.collection.GamesCollectionFragment +import com.gh.gamecenter.collection.VideoFragment import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.common.utils.viewModelProvider -import com.gh.gamecenter.R -import com.gh.gamecenter.collection.* +import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.login.user.UserManager class HistoryWrapperFragment : BaseFragment_TabLayout() { @@ -26,7 +29,6 @@ class HistoryWrapperFragment : BaseFragment_TabLayout() { tabTitleList.add(getString(R.string.main_game)) tabTitleList.add(getString(R.string.game_collection)) tabTitleList.add(getString(R.string.video)) - tabTitleList.add(getString(R.string.answer)) tabTitleList.add(getString(R.string.collection_article)) tabTitleList.add(getString(R.string.collection_info)) } @@ -79,12 +81,6 @@ class HistoryWrapperFragment : BaseFragment_TabLayout() { fragments.add(VideoFragment().with((arguments?.clone() as? Bundle)?.apply { putString("videoStyle", VideoFragment.VideoStyle.BROWSING_HISTORY.value) })) - fragments.add(AnswerFragment().with((arguments?.clone() as? Bundle)?.apply { - putString( - EntranceConsts.KEY_TYPE, - AnswerFragment.HISTORY - ) - })) fragments.add(CommunityArticleFragment().with((arguments?.clone() as? Bundle)?.apply { putString( EntranceConsts.KEY_TYPE, diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/ArticleHistoryDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/ArticleHistoryDao.kt index fdf6bbc621..eef90569e0 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/ArticleHistoryDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/ArticleHistoryDao.kt @@ -10,8 +10,8 @@ interface ArticleHistoryDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun addArticle(answer: ArticleEntity) - @Query("select * from ArticleEntity order by orderTag desc limit :pageSize offset :offset ") - fun getArticleWithOffset(pageSize: Int, offset: Int): Single> + @Query("select * from ArticleEntity where orderTag >= :startTimestamp order by orderTag desc limit :pageSize offset :offset ") + fun getArticleWithOffset(pageSize: Int, offset: Int, startTimestamp: Long): Single> @Delete fun deleteArticle(article: ArticleEntity) diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/GameDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/GameDao.kt index 93e7ba4747..30164e4d2d 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/GameDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/GameDao.kt @@ -10,8 +10,8 @@ interface GameDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun addGame(game: HistoryGameEntity) - @Query("select * from HistoryGameEntity order by orderTag desc limit :pageSize offset :offset ") - fun getGamesWithOffset(pageSize: Int, offset: Int): Single> + @Query("select * from HistoryGameEntity where orderTag >= :startTimestamp order by orderTag desc limit :pageSize offset :offset ") + fun getGamesWithOffset(pageSize: Int, offset: Int, startTimestamp: Long): Single> @Delete fun deleteGame(game: HistoryGameEntity) diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/GamesCollectionDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/GamesCollectionDao.kt index d827f41249..50d19d196a 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/GamesCollectionDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/GamesCollectionDao.kt @@ -10,8 +10,8 @@ interface GamesCollectionDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun addGamesCollection(gamesCollection: GamesCollectionEntity) - @Query("select * from GamesCollectionEntity order by orderTag desc limit :pageSize offset :offset") - fun getGamesCollectionWithOffset(pageSize: Int, offset: Int): Single> + @Query("select * from GamesCollectionEntity where orderTag >= :startTimestamp order by orderTag desc limit :pageSize offset :offset") + fun getGamesCollectionWithOffset(pageSize: Int, offset: Int, startTimestamp: Long): Single> @Delete fun deleteGamesCollection(gamesCollection: GamesCollectionEntity) diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/NewsHistoryDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/NewsHistoryDao.kt index 01cb56c7c4..69a2ddd9bf 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/NewsHistoryDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/NewsHistoryDao.kt @@ -10,8 +10,8 @@ interface NewsHistoryDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun addNews(news: NewsEntity) - @Query("select * from NewsEntity order by orderTag desc limit :pageSize offset :offset ") - fun getNewsWithOffset(pageSize: Int, offset: Int): Single> + @Query("select * from NewsEntity where orderTag >= :startTimestamp order by orderTag desc limit :pageSize offset :offset ") + fun getNewsWithOffset(pageSize: Int, offset: Int, startTimestamp: Long): Single> @Delete fun deleteNews(news: NewsEntity) diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/VideoHistoryDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/VideoHistoryDao.kt index 3cd196c98d..6112126ead 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/VideoHistoryDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/VideoHistoryDao.kt @@ -9,8 +9,8 @@ interface VideoHistoryDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun addVideo(video: MyVideoEntity) - @Query("select * from MyVideoEntity where user!='' order by time desc limit :pageSize offset :offset") - fun getVideoWithOffset(pageSize: Int, offset: Int): Single> + @Query("select * from MyVideoEntity where user!='' and time >= :startTimestamp order by time desc limit :pageSize offset :offset") + fun getVideoWithOffset(pageSize: Int, offset: Int, startTimestamp: Long): Single> @Query("select id from MyVideoEntity where videoStreamRecord=2 order by time desc") fun getAttentionVideoRecord(): Single> diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt b/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt index 5514c1cca4..850bb909e9 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt @@ -420,6 +420,13 @@ object TimeUtils { return HaloApp.getInstance().resources.getString(R.string.date_time_format, dateStr, hour, roundedMinute) } + @JvmStatic + fun getTimestampMonthsAgo(n: Int): Long { + val calendar = Calendar.getInstance() + calendar.add(Calendar.MONTH, -n) + return calendar.timeInMillis + } + private fun isYesterday(current: Calendar, target: Calendar): Boolean { val yesterday = (current.clone() as Calendar).apply { add(Calendar.DAY_OF_YEAR, -1) diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt index 59a76cd053..fc1eae71eb 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt @@ -13,9 +13,7 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModelProvider -import com.therouter.TheRouter import com.blankj.utilcode.util.LanguageUtils -import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.constant.Constants @@ -39,6 +37,7 @@ import com.gh.gamecenter.setting.databinding.FragmentSettingBinding import com.gh.gamecenter.setting.view.security.SecurityActivity import com.gh.gid.GidHelper import com.lightgame.utils.Utils +import com.therouter.TheRouter import io.reactivex.Observable import io.reactivex.ObservableEmitter import io.reactivex.Observer @@ -351,8 +350,6 @@ class SettingsFragment : ToolbarFragment() { requireContext(), getString(R.string.clearing_cache) ) - val historyHelper = TheRouter.get(IHistoryHelperProvider::class.java) - historyHelper?.emptyDatabase() // 清除新游开测存储的游戏类型 SPUtils.remove(Constants.SP_GAME_SERVER_TEST_V2_CATEGORY_SET) clearCache()