diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index bcb08aabf5..6dc9eb24ae 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -522,7 +522,115 @@ public class DownloadItemUtils { }); }); } + } + /** + * @param clickCallback 供那些需要知道点击回调的地方使用,只要触发了点击事件就响应回调(未登录状态下点击预约也要响应回调) + */ + public static void setOnClickListenerWithInvokeCallbackForAllState(final Context context, + final TextView downloadBtn, + final GameEntity gameEntity, + final int position, + final RecyclerView.Adapter adapter, + final String entrance, + final String location, + final ExposureEvent traceEvent, + @Nullable final EmptyCallback clickCallback) { + + if (gameEntity.isReservable()) { + if (!ReservationRepository.thisGameHasBeenReserved(gameEntity.getId())) { + downloadBtn.setOnClickListener(v -> { + if (clickCallback != null) { + clickCallback.onCallback(); + } + CheckLoginUtils.checkLogin(context, entrance, () -> { + PermissionHelper.checkReadPhoneStatePermissionBeforeAction(context, () -> { + ReserveDialogFragment dialogFragment = ReserveDialogFragment.getInstance( + gameEntity, + () -> { + LogUtils.logReservation(gameEntity, traceEvent); + adapter.notifyItemChanged(position); + } + ); + dialogFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "reserve"); + }); + }); + }); + } else { + downloadBtn.setOnClickListener(v -> { + if (clickCallback != null) { + clickCallback.onCallback(); + } + if ("download".equals(gameEntity.getReserveStatus())) { + ReservationHelper.showDeleteReservationDialog(context, () -> { + ReservationHelper.deleteReservation(gameEntity, () -> { + adapter.notifyItemChanged(position); + }); + }); + } else { + ReservationHelper.showCancelReservationDialog(context, () -> { + ReservationHelper.cancelReservation(gameEntity, () -> { + adapter.notifyItemChanged(position); + }); + }); + } + }); + } + return; + } + + if (gameEntity.getApk().size() == 0 && gameEntity.getH5Link() != null) { + downloadBtn.setOnClickListener(v -> { + if (clickCallback != null) { + clickCallback.onCallback(); + } + MtaHelper.onEvent("H5页面", "入口", "列表页_" + gameEntity.getName()); + + LinkEntity linkEntity = gameEntity.getH5Link(); + + boolean isPlay = "play".equals(linkEntity.getType()); // 是否为开始玩 + if (isPlay) { + HistoryHelper.insertGameEntity(gameEntity); + } + + Intent i = WebActivity.getIntentForWebGame(context, gameEntity.getH5Link().getLink(), gameEntity.getName(), isPlay, linkEntity.getCloseButton()); + context.startActivity(i); + }); + } else if (gameEntity.getApk().size() == 1) { + downloadBtn.setOnClickListener(v -> { + EmptyCallback clickRunnable = () -> { + if (clickCallback != null) { + clickCallback.onCallback(); + } + onNormalClick(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent); + }; + + // 启动不需要请求存储权限 + if (downloadBtn.getText().toString().equals(context.getString(R.string.launch))) { + clickRunnable.onCallback(); + } else { + PermissionHelper.checkStoragePermissionBeforeAction(context, clickRunnable); + } + }); + } else { + downloadBtn.setOnClickListener(v -> { + if (clickCallback != null) { + clickCallback.onCallback(); + } + PermissionHelper.checkStoragePermissionBeforeAction(context, () -> { + CertificationDialog.showCertificationDialog(context, gameEntity, () -> { + DialogUtils.showVersionNumberDialog(context, gameEntity, () -> { + DownloadDialog.showDownloadDialog( + v.getContext(), + gameEntity, + traceEvent, + entrance, + location); + }); + }); + }); + }); + } } public static void onNormalClick(final Context context, diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt index 967eb66b45..ff35b8c683 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt @@ -124,7 +124,7 @@ class SearchGameIndexAdapter(context: Context, LogUtils.uploadSearchClick("search_click", "搜索页", key, SearchType.fromString(type).toChinese(), gameEntity.id, gameEntity.name) } - DownloadItemUtils.setOnClickListener( + DownloadItemUtils.setOnClickListenerWithInvokeCallbackForAllState( mContext, binding.downloadBtn, gameEntity, diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt index 9330d130af..633b5992d5 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt @@ -144,7 +144,7 @@ class SearchGameResultAdapter(context: Context, } } - DownloadItemUtils.setOnClickListener( + DownloadItemUtils.setOnClickListenerWithInvokeCallbackForAllState( mContext, binding.downloadBtn, gameEntity,