From 166e1e77ecf14c9ba80540348f05690498a17cc8 Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 15 Jul 2020 18:32:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A6=96=E9=A1=B5=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=20https://gitlab.?= =?UTF-8?q?ghzs.com/pm/halo-app-issues/-/issues/881?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/DefaultUrlHandler.kt | 2 +- .../com/gh/common/constant/Constants.java | 9 ++- .../com/gh/common/exposure/ExposureEntity.kt | 8 ++- .../com/gh/common/exposure/ExposureEvent.kt | 5 +- .../java/com/gh/common/loghub/LoghubUtils.kt | 30 +++++++++- .../java/com/gh/common/util/DirectUtils.kt | 15 +++-- .../com/gh/common/util/EntranceUtils.java | 5 +- .../java/com/gh/common/util/Extensions.kt | 6 ++ .../main/java/com/gh/common/util/GsonUtils.kt | 7 +++ .../java/com/gh/common/util/LogUtils.java | 56 ++++++++++++++++++- .../java/com/gh/common/view/WelcomeDialog.kt | 32 +++++++---- .../java/com/gh/gamecenter/BlockActivity.kt | 3 +- .../gh/gamecenter/LibaoDetailActivity.java | 7 +++ .../java/com/gh/gamecenter/SkipActivity.java | 2 +- .../com/gh/gamecenter/amway/AmwayAdapter.kt | 10 ++-- .../com/gh/gamecenter/amway/AmwayFragment.kt | 1 + .../com/gh/gamecenter/amway/AmwayViewModel.kt | 17 ++++++ .../baselist/BaseListViewModel.java | 5 +- .../gh/gamecenter/baselist/ListFragment.java | 1 + .../gh/gamecenter/baselist/ListViewModel.java | 14 ++++- .../com/gh/gamecenter/entity/GameEntity.kt | 14 ++++- .../com/gh/gamecenter/game/GameFragment.kt | 1 + .../gh/gamecenter/game/GameFragmentAdapter.kt | 2 +- .../com/gh/gamecenter/game/GameViewModel.kt | 13 +++++ .../gamedetail/GameDetailFragment.kt | 5 ++ .../detail/AnswerDetailContainerFragment.kt | 2 +- .../qa/answer/detail/AnswerDetailFragment.kt | 8 +++ .../AnswerDetailFragmentStatePagerAdapter.kt | 2 +- .../article/detail/ArticleDetailActivity.kt | 7 +++ .../servers/GameServersContentAdapter.java | 8 +++ .../video/detail/DetailPlayerView.kt | 6 ++ .../detail/VideoDetailContainerFragment.kt | 5 ++ libraries/LGLibrary | 2 +- 33 files changed, 267 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt index aa857ae887..9e2d92be4a 100644 --- a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt @@ -194,7 +194,7 @@ object DefaultUrlHandler { val name = uri.getQueryParameter("name") ?: "" val entity = SubjectRecommendEntity(link = id, name = name, text = name) - DirectUtils.directToBlock(context, entity) + DirectUtils.directToBlock(context, entity, entrance) } EntranceUtils.HOST_SERVER_BLOCK -> { diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index 9cc2320878..1db8d0a5ac 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -17,6 +17,9 @@ public class Constants { public static final String USER_TOKEN_KEY = "userTokenKey"; public static final String USER_INFO_KEY = "userInfoKey"; + public static final String WELCOME_DIALOG_ID = "welcome_dialog_id"; + public static final String WELCOME_DIALOG_LINK_TITLE = "welcome_dialog_link_title"; + public static final String DEVICE_KEY = "deviceKey"; public static final String HAS_REQUESTED_NOTIFICATION_PERMISSIONS = "has_requested_notification_permissions"; @@ -28,12 +31,12 @@ public class Constants { public static final String XPOSED_INSTALLER_PACKAGE_NAME = "de.robv.android.xposed.installer"; public static final String EB_QUIT_LOGIN = "quit_login"; - + // 用于避免历史下载掺和到普通下载状态的 ID 修饰符 public static final String GAME_ID_DIVIDER = ":"; // 用于避免历史下载影响到部分依赖名字作为数据更新条件的修饰符 public static final String GAME_NAME_DECORATOR = " "; - + // 游戏详情进入时的自定义栏目标签是否已经默认展开过一次的标记 public static final String SP_HAS_EXPANDED_GAME_DETAIL_TAGS = "has_expanded_game_detail_tags"; // 游戏详情进入时的自定义栏目标签是否已经显示过一次展开更多的浮窗提示 @@ -42,7 +45,7 @@ public class Constants { // 最近显示的弹窗信息 public static final String SP_LAST_OPENING_ID = "last_opening_dialog_id"; public static final String SP_LAST_OPENING_TIME = "last_opening_dialog_time"; - + // 新用户首次启动光环的时间 public static final String SP_INITIAL_USAGE_TIME = "initial_usage_time"; diff --git a/app/src/main/java/com/gh/common/exposure/ExposureEntity.kt b/app/src/main/java/com/gh/common/exposure/ExposureEntity.kt index 00d6eb5124..ae3170097f 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureEntity.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureEntity.kt @@ -15,5 +15,11 @@ data class ExposureEntity( val sequence: Int? = 0, val platform: String? = "", val downloadType: String? = "", - val downloadCompleteType: String? = "" + val downloadCompleteType: String? = "", + + // 统计启动弹窗相关数据用的 (ugly) + @SerializedName("dialog_id") + var welcomeDialogId: String? = "", + @SerializedName("link_title") + var welcomeDialogLinkTitle: String? = "" ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/exposure/ExposureEvent.kt b/app/src/main/java/com/gh/common/exposure/ExposureEvent.kt index b381d87a7b..ffeedc1fff 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureEvent.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureEvent.kt @@ -39,7 +39,10 @@ data class ExposureEvent( sequence = gameEntity?.sequence, platform = gameEntity?.platform, downloadType = gameEntity?.downloadType, - downloadCompleteType = gameEntity?.downloadCompleteType), + downloadCompleteType = gameEntity?.downloadCompleteType, + // ugly + welcomeDialogId = gameEntity?.welcomeDialogId ?: eTrace?.firstOrNull()?.payload?.welcomeDialogId, + welcomeDialogLinkTitle = gameEntity?.welcomeDialogTitle ?: eTrace?.firstOrNull()?.payload?.welcomeDialogLinkTitle), source = source, eTrace = eTrace, event = event).apply { gameEntity?.exposureEvent = this } diff --git a/app/src/main/java/com/gh/common/loghub/LoghubUtils.kt b/app/src/main/java/com/gh/common/loghub/LoghubUtils.kt index ad03f984cc..49ffd41f2b 100644 --- a/app/src/main/java/com/gh/common/loghub/LoghubUtils.kt +++ b/app/src/main/java/com/gh/common/loghub/LoghubUtils.kt @@ -1,8 +1,11 @@ package com.gh.common.loghub import android.app.Application +import androidx.annotation.Keep import com.aliyun.sls.android.sdk.model.Log import com.aliyun.sls.android.sdk.model.LogGroup +import com.gh.common.exposure.ExposureEntity +import com.gh.common.exposure.meta.Meta import com.gh.loghub.LoghubHelper import org.json.JSONObject import java.util.concurrent.Executors @@ -43,6 +46,23 @@ object LoghubUtils { } } + @JvmStatic + fun log(jsonString: String, logStore: String, forcedUpload: Boolean) { + loghubEventExecutor.execute { + try { + val event = LoghubEvent(time = (System.currentTimeMillis() / 1000L).toString(), content = jsonString, logStore = logStore) + loghubEventSet.add(event) + loghubEventDao.insert(event) + } catch (e: Exception) { + e.printStackTrace() + } + + if (forcedUpload || loghubEventSet.size >= STORE_SIZE) { + commitSavedLoghubEvents() + } + } + } + private fun uploadLogGroup(logGroup: LogGroup, logStore: String) { LoghubHelper.getInstance().uploadLogGroup(logGroup, logStore) } @@ -86,4 +106,12 @@ object LoghubUtils { } } -} \ No newline at end of file +} + +@Keep +data class SimpleLogContainerEntity( + var event: String? = null, + var action: String? = null, + var meta: Meta? = null, + var payload: ExposureEntity? = null, + var timestamp: Long? = 0) \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index e087a3b874..b0087a3c78 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -192,11 +192,13 @@ object DirectUtils { "category", "分类" -> directCategoryDirectory(context, linkEntity.link!!, linkEntity.text!!) "block", "版块" -> { - directToBlock(context, SubjectRecommendEntity( - link = linkEntity.link, - text = linkEntity.text, - name = linkEntity.name, - display = linkEntity.display ?: Display())) + directToBlock(context, + SubjectRecommendEntity( + link = linkEntity.link, + text = linkEntity.text, + name = linkEntity.name, + display = linkEntity.display ?: Display()), + entrance) } "column_collection", "专题合集" -> directToColumnCollection(context, linkEntity.link!!, -1, entrance) @@ -796,10 +798,11 @@ object DirectUtils { * 跳转到板块 */ @JvmStatic - fun directToBlock(context: Context, blockData: SubjectRecommendEntity) { + fun directToBlock(context: Context, blockData: SubjectRecommendEntity, entrance: String) { val bundle = Bundle() bundle.putString(KEY_TO, BlockActivity::class.java.name) bundle.putParcelable(KEY_BLOCK_DATA, blockData) + bundle.putString(KEY_ENTRANCE, entrance) jumpActivity(context, bundle) } diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 4da8f73662..ba5e8e72e2 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -4,6 +4,8 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; + import com.gh.common.avoidcallback.AvoidOnResultManager; import com.gh.common.avoidcallback.Callback; import com.gh.gamecenter.MainActivity; @@ -11,8 +13,6 @@ import com.gh.gamecenter.NormalActivity; import com.gh.gamecenter.SplashScreenActivity; import com.gh.gamecenter.normal.NormalFragment; -import androidx.appcompat.app.AppCompatActivity; - /** * @author CsHeng * @Date 2017/4/25 @@ -82,6 +82,7 @@ public class EntranceUtils { public static final String ENTRANCE_DOWNLOAD = "(下载跳转)"; public static final String ENTRANCE_RECOMMEND = "(落地页)"; public static final String ENTRANCE_BLOCK_RECOMMEND = "(推荐入口)"; + public static final String ENTRANCE_AMWAY = "(安利墙)"; public static final String KEY_SUGGEST_HINT_TYPE = "suggestHintType"; public static final String KEY_PACKAGENAME = "packageName"; public static final String KEY_PLATFORM = "platform"; diff --git a/app/src/main/java/com/gh/common/util/Extensions.kt b/app/src/main/java/com/gh/common/util/Extensions.kt index 1c4edebb01..83943de99c 100644 --- a/app/src/main/java/com/gh/common/util/Extensions.kt +++ b/app/src/main/java/com/gh/common/util/Extensions.kt @@ -19,6 +19,7 @@ import androidx.core.text.HtmlCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.lifecycle.* +import androidx.lifecycle.Observer import androidx.recyclerview.widget.RecyclerView import androidx.viewpager.widget.ViewPager import com.airbnb.lottie.LottieAnimationView @@ -41,6 +42,7 @@ import io.reactivex.disposables.Disposable import okhttp3.MediaType import okhttp3.RequestBody import java.net.URI +import java.util.* import java.util.concurrent.TimeUnit import java.util.regex.Pattern import kotlin.math.abs @@ -314,6 +316,10 @@ fun String.subStringIfPossible(length: Int): String { } } +fun String.countOccurrences(char: String): Int { + return StringTokenizer(" $this ", char).countTokens() - 1 +} + fun String.getFirstElementDividedByDivider(divider: String): String { if (this.contains(divider)) { return this.split(divider.toRegex()).toTypedArray()[0] diff --git a/app/src/main/java/com/gh/common/util/GsonUtils.kt b/app/src/main/java/com/gh/common/util/GsonUtils.kt index 06a136c70d..73aaffa318 100644 --- a/app/src/main/java/com/gh/common/util/GsonUtils.kt +++ b/app/src/main/java/com/gh/common/util/GsonUtils.kt @@ -1,6 +1,7 @@ package com.gh.common.util import com.google.gson.Gson +import com.google.gson.GsonBuilder import com.google.gson.reflect.TypeToken import org.json.JSONArray @@ -10,6 +11,7 @@ import org.json.JSONArray */ object GsonUtils { val gson: Gson = Gson() + val gsonThatIgnoreNull: Gson = GsonBuilder().serializeNulls().create() @JvmStatic fun fromJson(json: String, t: Class): T { @@ -32,4 +34,9 @@ object GsonUtils { fun toJson(any: Any?): String { return gson.toJson(any) } + + @JvmStatic + fun toJsonIgnoreNull(any: Any?): String { + return gsonThatIgnoreNull.toJson(any) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/LogUtils.java b/app/src/main/java/com/gh/common/util/LogUtils.java index 3e71d54a75..35245f9002 100644 --- a/app/src/main/java/com/gh/common/util/LogUtils.java +++ b/app/src/main/java/com/gh/common/util/LogUtils.java @@ -6,11 +6,16 @@ import android.os.Build; import android.provider.Settings; import android.text.TextUtils; +import androidx.annotation.Nullable; + +import com.gh.common.constant.Constants; +import com.gh.common.exposure.ExposureEntity; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureSource; import com.gh.common.exposure.meta.Meta; import com.gh.common.exposure.meta.MetaUtil; import com.gh.common.loghub.LoghubUtils; +import com.gh.common.loghub.SimpleLogContainerEntity; import com.gh.download.DownloadDataHelper; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.entity.CommunityEntity; @@ -29,8 +34,6 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.List; -import androidx.annotation.Nullable; - /** * Created by khy on 2/01/18. */ @@ -420,6 +423,55 @@ public class LogUtils { uploadVideoStreaming(object); } + public static void uploadWelcomeDialog(String action, String dialogId, String linkTitle) { + ExposureEntity payload = new ExposureEntity(); + payload.setWelcomeDialogId(dialogId); + payload.setWelcomeDialogId(linkTitle); + + SimpleLogContainerEntity entity = new SimpleLogContainerEntity(); + entity.setEvent("dialog"); + entity.setAction(action); + entity.setMeta(MetaUtil.INSTANCE.getMeta()); + entity.setPayload(payload); + entity.setTimestamp(System.currentTimeMillis() / 1000); + + LoghubUtils.log(GsonUtils.toJsonIgnoreNull(entity), "event", false); + } + + public static void uploadLikeFromWelcomeDialog() { + String dialogId = (String) HaloApp.get(Constants.WELCOME_DIALOG_ID, false); + String linkTitle = (String) HaloApp.get(Constants.WELCOME_DIALOG_LINK_TITLE, false); + + ExposureEntity payload = new ExposureEntity(); + payload.setWelcomeDialogId(dialogId); + payload.setWelcomeDialogLinkTitle(linkTitle); + + SimpleLogContainerEntity entity = new SimpleLogContainerEntity(); + entity.setEvent("like"); + entity.setMeta(MetaUtil.INSTANCE.getMeta()); + entity.setPayload(payload); + entity.setTimestamp(System.currentTimeMillis() / 1000); + + LoghubUtils.log(GsonUtils.toJsonIgnoreNull(entity), "event", false); + } + + public static void uploadCommentFromWelcomeDialog() { + String dialogId = (String) HaloApp.get(Constants.WELCOME_DIALOG_ID, false); + String linkTitle = (String) HaloApp.get(Constants.WELCOME_DIALOG_LINK_TITLE, false); + + ExposureEntity payload = new ExposureEntity(); + payload.setWelcomeDialogId(dialogId); + payload.setWelcomeDialogLinkTitle(linkTitle); + + SimpleLogContainerEntity entity = new SimpleLogContainerEntity(); + entity.setEvent("comment"); + entity.setMeta(MetaUtil.INSTANCE.getMeta()); + entity.setPayload(payload); + entity.setTimestamp(System.currentTimeMillis() / 1000); + + LoghubUtils.log(GsonUtils.toJsonIgnoreNull(entity), "event", false); + } + private static void uploadShare(JSONObject object) { Meta meta = MetaUtil.INSTANCE.getMeta(); JSONObject metaObject = new JSONObject(); diff --git a/app/src/main/java/com/gh/common/view/WelcomeDialog.kt b/app/src/main/java/com/gh/common/view/WelcomeDialog.kt index e036cbad38..f67ca9ddd8 100644 --- a/app/src/main/java/com/gh/common/view/WelcomeDialog.kt +++ b/app/src/main/java/com/gh/common/view/WelcomeDialog.kt @@ -8,6 +8,7 @@ import android.view.ViewGroup import androidx.databinding.DataBindingUtil import com.gh.base.fragment.BaseDialogFragment import com.gh.common.TimeElapsedHelper +import com.gh.common.constant.Constants import com.gh.common.constant.Constants.SP_LAST_OPENING_ID import com.gh.common.constant.Constants.SP_LAST_OPENING_TIME import com.gh.common.util.* @@ -15,12 +16,19 @@ import com.gh.gamecenter.R import com.gh.gamecenter.databinding.DialogWelcomeBinding import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.entity.WelcomeDialogEntity +import com.halo.assistant.HaloApp class WelcomeDialog : BaseDialogFragment() { companion object { + const val TAG = "welcome_dialog" + @JvmStatic - fun getInstance(welcomeEntity: WelcomeDialogEntity?) = WelcomeDialog().apply { mWelcomeEntity = welcomeEntity } + fun getInstance(welcomeEntity: WelcomeDialogEntity?) = WelcomeDialog().apply { + arguments = Bundle() + arguments?.putParcelable(TAG, welcomeEntity) + LogUtils.uploadWelcomeDialog("show", welcomeEntity?.id, welcomeEntity?.text) + } } private var mWelcomeEntity: WelcomeDialogEntity? = null @@ -34,12 +42,18 @@ class WelcomeDialog : BaseDialogFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + mWelcomeEntity = arguments?.getParcelable(TAG) mTimeHelper = TimeElapsedHelper(this) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { binding = DataBindingUtil.inflate(inflater, R.layout.dialog_welcome, container, false) binding.ivOpeningCover.setOnClickListener { + + HaloApp.put(Constants.WELCOME_DIALOG_ID, mWelcomeEntity?.id) + HaloApp.put(Constants.WELCOME_DIALOG_LINK_TITLE, mWelcomeEntity?.text) + LogUtils.uploadWelcomeDialog("click", mWelcomeEntity?.id, mWelcomeEntity?.text) + when (mWelcomeEntity?.type) { EntranceUtils.HOST_ARTICLE -> { DirectUtils.directToArticle(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME) @@ -51,10 +65,10 @@ class WelcomeDialog : BaseDialogFragment() { DirectUtils.directToSubject(requireContext(), mWelcomeEntity?.link!!, null, EntranceUtils.ENTRANCE_WELCOME) } EntranceUtils.HOST_QUESTION -> { - DirectUtils.directToQuestionDetail(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME, "首页弹窗") + DirectUtils.directToQuestionDetail(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME) } EntranceUtils.HOST_ANSWER -> { - DirectUtils.directToAnswerDetail(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME, "首页弹窗") + DirectUtils.directToAnswerDetail(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME) } EntranceUtils.HOST_WEB -> { DirectUtils.directToWebView(requireContext(), mWelcomeEntity?.link!!, EntranceUtils.ENTRANCE_WELCOME) @@ -67,7 +81,7 @@ class WelcomeDialog : BaseDialogFragment() { } // else -> DialogUtils.showLowVersionDialog(context) else -> DirectUtils.directToLinkPage(requireContext(), mWelcomeEntity - ?: WelcomeDialogEntity(), EntranceUtils.ENTRANCE_WELCOME, "首页弹窗") + ?: WelcomeDialogEntity(), EntranceUtils.ENTRANCE_WELCOME, "") } mDismissByClickImage = true @@ -111,15 +125,9 @@ class WelcomeDialog : BaseDialogFragment() { } override fun onDestroy() { - val type = if (mDismissByClickImage) { - "点击图片" - } else { - "点击关闭" - } + val type = if (mDismissByClickImage) "点击图片" else "点击关闭" - DataUtils.trackTimeEvent(context, "启动弹窗", - mTimeHelper?.elapsedTime!!, - type, "No parameter.") + MtaHelper.onEventWithTime("启动弹窗", mTimeHelper?.elapsedTime!!, type, "No parameter.") PreferenceManager.getDefaultSharedPreferences(context?.applicationContext).edit { putString(SP_LAST_OPENING_ID, mWelcomeEntity?.id) diff --git a/app/src/main/java/com/gh/gamecenter/BlockActivity.kt b/app/src/main/java/com/gh/gamecenter/BlockActivity.kt index a6bd7193a1..590d2a5077 100644 --- a/app/src/main/java/com/gh/gamecenter/BlockActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/BlockActivity.kt @@ -11,9 +11,10 @@ import com.gh.gamecenter.game.GameFragment class BlockActivity : NormalActivity() { companion object { - fun getIntent(context: Context, blockData: SubjectRecommendEntity): Intent { + fun getIntent(context: Context, blockData: SubjectRecommendEntity, entrance: String): Intent { val args = Bundle() args.putParcelable(EntranceUtils.KEY_BLOCK_DATA, blockData) + args.putString(EntranceUtils.KEY_ENTRANCE, entrance) return getTargetIntent(context, BlockActivity::class.java, GameFragment::class.java, args) } } diff --git a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java index 10adc02b01..ca675ce27f 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java @@ -24,6 +24,7 @@ import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DetailDownloadUtils; import com.gh.common.util.DeviceTokenUtils; import com.gh.common.util.EntranceUtils; +import com.gh.common.util.ExtensionsKt; import com.gh.common.util.LibaoUtils; import com.gh.common.view.DownloadProgressBar; import com.gh.common.view.VerticalItemDecoration; @@ -375,6 +376,12 @@ public class LibaoDetailActivity extends ToolBarActivity implements LibaoDetailA mGameEntity = response; mAdapter.setGameEntity(mGameEntity); + // 添加启动弹窗的相关信息 + if (mEntrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && ExtensionsKt.countOccurrences(mEntrance,("+")) <= 1) { + mGameEntity.setWelcomeDialogInfoIfAvailable(); + } + DetailDownloadUtils.detailInitDownload(getDetailViewHolder(), true); mAdapter.addLibaoDetail(LibaoDetailActivity.this, true); diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 64b1151ea1..d203a2c04a 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -281,7 +281,7 @@ public class SkipActivity extends BaseActivity { entity.setLink(path); entity.setName(name); entity.setText(name); - DirectUtils.directToBlock(this, entity); + DirectUtils.directToBlock(this, entity, mEntrance); break; case EntranceUtils.HOST_SERVER_BLOCK: diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt index fda33349aa..948b1d0133 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt @@ -32,7 +32,9 @@ import com.lightgame.view.CheckableImageView import java.util.* import java.util.regex.Pattern -class AmwayAdapter(context: Context, private var mViewModel: AmwayViewModel, private var mLayoutManager: RecyclerView.LayoutManager) +class AmwayAdapter(context: Context, + private var mViewModel: AmwayViewModel, + private var mLayoutManager: RecyclerView.LayoutManager) : ListAdapter(context), IExposable { private val mBasicExposureSource by lazy { ExposureSource("安利墙", "") } @@ -185,7 +187,7 @@ class AmwayAdapter(context: Context, private var mViewModel: AmwayViewModel, pri itemData.exposureEvent = ExposureEvent.createEvent(amway.game.toGameEntity(), listOf(basicExposureSource)) binding.gameContainer.setOnClickListener { - GameDetailActivity.startGameDetailActivity(binding.root.context, amway.game.id, "(安利墙)", itemData.exposureEvent) + GameDetailActivity.startGameDetailActivity(binding.root.context, amway.game.id, "${viewModel.entrance}+(安利墙)", itemData.exposureEvent) MtaHelper.onEvent("安利墙", "点击", "评论${blockPosition}_${amway.game.name}_游戏") } @@ -200,13 +202,13 @@ class AmwayAdapter(context: Context, private var mViewModel: AmwayViewModel, pri } binding.commentContainer.setOnClickListener { - val intent = RatingReplyActivity.getIntent(context, amway.game.id, amway.comment, false, "(安利墙)", "") + val intent = RatingReplyActivity.getIntent(context, amway.game.id, amway.comment, false, viewModel.entrance ?: "", EntranceUtils.ENTRANCE_AMWAY) SyncDataBetweenPageHelper.startActivityForResult(binding.root.context, intent, RatingFragment.RATING_REPLAY_REQUEST, adapterPosition) MtaHelper.onEvent("安利墙", "点击", "评论${blockPosition}_${amway.game.name}_评论") } binding.userIconContainer.setOnClickListener { - DirectUtils.directToHomeActivity(context, amway.comment.user.id, "(安利墙)", "") + DirectUtils.directToHomeActivity(context, amway.comment.user.id, viewModel.entrance, EntranceUtils.ENTRANCE_AMWAY) } if (amway.comment.me.isVoted) { diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt index d3d529e882..cf3fb1dc4f 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt @@ -50,6 +50,7 @@ class AmwayFragment : ListFragment() { mViewModel.fixedTopAmwayId = arguments?.getString(EntranceUtils.KEY_ID) mViewModel.initData() + mViewModel.entrance = mEntrance } override fun getLayoutId() = R.layout.fragment_amway diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt index d45cb84321..1f577590b1 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt @@ -2,7 +2,9 @@ package com.gh.gamecenter.amway import android.annotation.SuppressLint import android.app.Application +import com.gh.common.util.EntranceUtils import com.gh.common.util.ErrorHelper +import com.gh.common.util.LogUtils import com.gh.download.DownloadManager import com.gh.gamecenter.baselist.ListViewModel import com.gh.gamecenter.baselist.LoadStatus @@ -30,6 +32,7 @@ import kotlin.random.Random class AmwayViewModel(application: Application) : ListViewModel(application) { + var entrance: String? = null var fixedTopAmwayId: String? = null // 置顶安利 @@ -99,6 +102,17 @@ class AmwayViewModel(application: Application) : ListViewModel>() { override fun onSuccess(data: List) { + // 为从启动弹窗跳转过来的 gameEntity 附上启动弹窗的相关数据供曝光数据使用 (草) + if (entrance == EntranceUtils.ENTRANCE_WELCOME) { + for (subject in data) { + subject.data?.let { + for (game in it) { + game.setWelcomeDialogInfoIfAvailable() + } + } + } + } + mAmwaySubjectList = ArrayList(data) load(LoadType.REFRESH) @@ -180,6 +194,9 @@ class AmwayViewModel(application: Application) : ListViewModel extends AndroidViewModel{ +public abstract class BaseListViewModel extends AndroidViewModel { + + protected String mEntrance = ""; // 页面路径 protected final MutableLiveData mLoadStatusLiveData = new MutableLiveData<>(); diff --git a/app/src/main/java/com/gh/gamecenter/baselist/ListFragment.java b/app/src/main/java/com/gh/gamecenter/baselist/ListFragment.java index e0f74900af..83c508d48f 100644 --- a/app/src/main/java/com/gh/gamecenter/baselist/ListFragment.java +++ b/app/src/main/java/com/gh/gamecenter/baselist/ListFragment.java @@ -88,6 +88,7 @@ public abstract class ListFragment { if (o instanceof LoadStatus) { diff --git a/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java b/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java index 6f0559f83f..3791eca173 100644 --- a/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java @@ -3,8 +3,13 @@ package com.gh.gamecenter.baselist; import android.annotation.SuppressLint; import android.app.Application; +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + import com.gh.common.filter.RegionSettingHelper; import com.gh.common.util.ApkActiveUtils; +import com.gh.common.util.EntranceUtils; +import com.gh.common.util.ExtensionsKt; import com.gh.download.DownloadManager; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.retrofit.BiResponse; @@ -16,8 +21,6 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.lifecycle.MutableLiveData; import io.reactivex.Observable; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -117,6 +120,13 @@ public abstract class ListViewModel extends Ba GameEntity game = (GameEntity) entity; game.setEntryMap(DownloadManager.getInstance(HaloApp.getInstance() .getApplication()).getEntryMap(game.getName())); + + // 当页面是由启动弹窗过来的第一或第二个页面的时候添加启动弹窗信息 + if (mEntrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && ExtensionsKt.countOccurrences(mEntrance, "+") <= 1) { + game.setWelcomeDialogInfoIfAvailable(); + } + ApkActiveUtils.filterHideApk(game); } } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index 70677b197a..a4c551e66d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -2,8 +2,10 @@ package com.gh.gamecenter.entity import android.os.Parcelable import com.gh.common.constant.Config +import com.gh.common.constant.Constants import com.gh.common.exposure.ExposureEvent import com.gh.common.filter.RegionSettingHelper +import com.gh.common.util.EntranceUtils import com.gh.gamecenter.R import com.gh.gamecenter.game.data.GameSubjectData import com.gh.gamecenter.gamedetail.entity.ZoneEntity @@ -206,7 +208,10 @@ data class GameEntity( var zone: ZoneEntity = ZoneEntity(), // 本地字段,使用镜像信息 - var useMirrorInfo: Boolean = false + var useMirrorInfo: Boolean = false, + // 从启动弹窗跳转到对应游戏列表时候记录的启动弹窗数据 (ugly ugly ugly) + var welcomeDialogId: String? = null, + var welcomeDialogTitle: String? = null ) : Parcelable { constructor(id: String?) : this() { @@ -325,6 +330,11 @@ data class GameEntity( } } + fun setWelcomeDialogInfoIfAvailable() { + welcomeDialogId = HaloApp.get(Constants.WELCOME_DIALOG_ID, false) as String + welcomeDialogTitle = HaloApp.get(Constants.WELCOME_DIALOG_LINK_TITLE, false) as String + } + fun getTag(): ArrayList { if (tag == null) tag = ArrayList() if (!Config.isShowPlugin(id)) return ArrayList() @@ -449,6 +459,8 @@ data class GameEntity( gameEntity.fixedTop = fixedTop gameEntity.pluginDesc = pluginDesc gameEntity.gameVersion = gameVersion + gameEntity.welcomeDialogId = welcomeDialogId + gameEntity.welcomeDialogTitle = welcomeDialogTitle return gameEntity } diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt index 8c4adc484e..0d97af5054 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt @@ -65,6 +65,7 @@ class GameFragment : NormalFragment() { super.onCreate(savedInstanceState) val factory = GameViewModel.Factory(HaloApp.getInstance().application, arguments?.getParcelable(EntranceUtils.KEY_BLOCK_DATA)) mViewModel = ViewModelProviders.of(this, factory).get(GameViewModel::class.java) + mViewModel.entrance = mEntrance mViewModel.loadStatus.observe(this, Observer { if (it != null) { mBinding.loadStatus = it diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt index 27975fcd16..bbaa687311 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -364,7 +364,7 @@ class GameFragmentAdapter(context: Context, val entity = subjectDigestList[data] when { entity.type == "column_collection" -> DirectUtils.directToColumnCollection(mContext, entity.link!!, -1, "(推荐入口)") - entity.type == "block" -> mContext.startActivity(BlockActivity.getIntent(mContext, entity)) + entity.type == "block" -> mContext.startActivity(BlockActivity.getIntent(mContext, entity, "(推荐入口)")) entity.type == "category" -> mContext.startActivity(CategoryDirectoryActivity.getIntent(mContext, entity.link!!, entity.text!!)) entity.type == "column" -> { SubjectActivity.startSubjectActivity(mContext, entity.link, entity.text, entity.order diff --git a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt index b7b7e800fb..96923015ec 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt @@ -43,6 +43,7 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt private var mElapsedHelper: TimeElapsedHelper? = null + var entrance: String = "" var itemDataList: MediatorLiveData> = MediatorLiveData() val loadStatus = MutableLiveData() val commandScrollTop = MutableLiveData() @@ -144,6 +145,12 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt if (gameList != null) { for (game in gameList) { ApkActiveUtils.filterHideApk(game) + + // 当页面是由启动弹窗过来的第一或第二个页面的时候添加启动弹窗信息 + if (entrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && entrance.countOccurrences("+") <= 1) { + game.setWelcomeDialogInfoIfAvailable() + } } } } @@ -211,6 +218,12 @@ class GameViewModel(application: Application, var blockData: SubjectRecommendEnt for (refreshEntity in it) { for (game in refreshEntity.games) { ApkActiveUtils.filterHideApk(game) + + // 当页面是由启动弹窗过来的第一或第二个页面的时候添加启动弹窗信息 + if (entrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && entrance.countOccurrences("+") <= 1) { + game.setWelcomeDialogInfoIfAvailable() + } } RegionSettingHelper.filterGame(refreshEntity.games) } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 33d9406d81..256b2f2b55 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -382,6 +382,11 @@ class GameDetailFragment : NormalFragment() { if (gameResource.status == Status.SUCCESS) { mViewModel.logHistory(gameResource.data!!) mGameEntity = gameResource.data + // 添加启动弹窗的相关信息 + if (mEntrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && mEntrance.countOccurrences("+") <= 1) { + mGameEntity?.setWelcomeDialogInfoIfAvailable() + } } else if (gameResource.status == Status.ERROR) { loadErrorControl(gameResource.exception) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt index e250c89fc9..8ee6f60865 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt @@ -15,7 +15,7 @@ class AnswerDetailContainerFragment : NormalFragment() { private lateinit var mFragmentAdapter: AnswerDetailFragmentStatePagerAdapter private lateinit var mContainerViewModel: AnswerDetailContainerViewModel - private val fragments=ArrayList() + private val fragments = ArrayList() // 是否已经传了 argument 给第一个子 fragment private var mHasPassedOneTimeArgumentToChild = false diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt index 5b7b94334f..b26b701206 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt @@ -236,6 +236,10 @@ class AnswerDetailFragment : NormalFragment() { mViewModel.answerDetail?.commentCount = count mBinding.bottomController.tvCommentCount.text = String.format("评论 %s", NumberUtils.transSimpleCount(mViewModel.answerDetail?.commentCount ?: 0)) + + if (EntranceUtils.ENTRANCE_WELCOME == mEntrance) { + LogUtils.uploadCommentFromWelcomeDialog() + } } } else if (requestCode == QUESTION_DETAIL && resultCode == Activity.RESULT_OK) { val resultData = data.getParcelableExtra(QuestionsDetailEntity::class.java.simpleName) @@ -793,6 +797,10 @@ class AnswerDetailFragment : NormalFragment() { if (mViewModel.answerDetail != null && !mViewModel.answerDetail!!.me.isAnswerVoted) { mViewModel.like(mAnswerId) + if (EntranceUtils.ENTRANCE_WELCOME == mEntrance) { + LogUtils.uploadLikeFromWelcomeDialog() + } + DataUtils.onMtaEvent(context, "答案点赞量_社区加位置", mViewModel.answerDetail?.community?.name, diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt index ee4797b6b7..a593ab4f64 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt @@ -4,7 +4,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter -class AnswerDetailFragmentStatePagerAdapter(fm: androidx.fragment.app.FragmentManager, +class AnswerDetailFragmentStatePagerAdapter(fm: FragmentManager, private val mCreateNewAnswerDetailFragment: (answerId: String) -> AnswerDetailFragment) : androidx.fragment.app.FragmentStatePagerAdapter(fm) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt index 0bfb237c55..15a2eb9d70 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt @@ -107,6 +107,10 @@ class ArticleDetailActivity : ToolBarActivity() { if (commentCount != 0) { mViewModel.detailEntity?.count?.comment = commentCount!! mBinding.includedLayout.tvCommentCount.text = String.format("评论 %s", NumberUtils.transSimpleCount(mViewModel.detailEntity?.count?.comment!!)) + + if (EntranceUtils.ENTRANCE_WELCOME == mEntrance) { + LogUtils.uploadCommentFromWelcomeDialog() + } } } } @@ -369,6 +373,9 @@ class ArticleDetailActivity : ToolBarActivity() { ifLogin("社区文章详情-赞同") { if (!mViewModel.detailEntity?.me?.isCommunityArticleVote!!) { mViewModel.likeArticle() + if (EntranceUtils.ENTRANCE_WELCOME == mEntrance) { + LogUtils.uploadLikeFromWelcomeDialog() + } } else { mViewModel.cancelLikeArticle() } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.java b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.java index e3f407913b..3f9275838c 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.java @@ -18,6 +18,8 @@ import com.gh.common.filter.RegionSettingHelper; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; +import com.gh.common.util.EntranceUtils; +import com.gh.common.util.ExtensionsKt; import com.gh.common.util.ImageUtils; import com.gh.common.util.StringUtils; import com.gh.common.util.UrlFilterUtils; @@ -125,6 +127,12 @@ public class GameServersContentAdapter extends BaseRecyclerAdapter implements IE GameEntity fixedTopItem = null; + // 当页面是由启动弹窗过来的第一或第二个页面的时候添加启动弹窗信息 + if (mEntrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && ExtensionsKt.countOccurrences(mEntrance, "+") <= 1) { + entity.setWelcomeDialogInfoIfAvailable(); + } + // 设置置顶部分 if (i == 0) { // 列表顶部,若有设置置顶应用就增加置顶头部 diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt index 2e545c8782..022523e348 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt @@ -240,6 +240,7 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib } } } + attentionIv.setOnClickListener { if (!videoEntity.me.isFollower) { if (!CheckLoginUtils.isLogin()) { @@ -365,6 +366,11 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib } mViewModel?.voteVideo(mVideoEntity) + if (mViewModel?.entrance?.contains(EntranceUtils.ENTRANCE_WELCOME) == true + && mViewModel?.entrance?.countOccurrences( "+")!! <= 1) { + LogUtils.uploadLikeFromWelcomeDialog() + } + } "pending", "fail" -> { Utils.toast(context, "该作品正在审核中,暂时无法点赞哦") diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt index c1bd630434..cd3b012e6a 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -616,6 +616,11 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { val videoEntity = mAdapter.videoList[mViewModel.startPosition] videoEntity.commentCount = commentCount findVisibleVideoViewByPosition()?.updateViewDetail(videoEntity) + + if (mViewModel.entrance.contains(EntranceUtils.ENTRANCE_WELCOME) + && mViewModel.entrance.countOccurrences( "+") <= 1) { + LogUtils.uploadCommentFromWelcomeDialog() + } } findVisibleVideoViewByPosition()?.uploadVideoStreamingPlaying("关闭评论弹窗") } diff --git a/libraries/LGLibrary b/libraries/LGLibrary index a4fd7372d8..909dddc4d1 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit a4fd7372d814437f0a2e93149a372c8e9dd03e65 +Subproject commit 909dddc4d1ceba0ac6292b08414a372dcde9e74a