From 261e0cc45a9153b21a76ebfa4f83e76e7c38c8e0 Mon Sep 17 00:00:00 2001 From: lyr <15622190878@163.com> Date: Fri, 30 Oct 2020 15:01:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=A1=B5-=E6=9C=AA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=8A=B6=E6=80=81=E7=82=B9=E5=87=BB=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E4=B9=9F=E4=B8=8A=E4=BC=A0"search=5Fclick"?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/DownloadItemUtils.java | 108 ++++++++++++++++++ .../search/SearchGameIndexAdapter.kt | 2 +- .../search/SearchGameResultAdapter.kt | 2 +- 3 files changed, 110 insertions(+), 2 deletions(-) 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,