Explorar o código

feat: 上报丢失,登录语言

DoggyZhang hai 2 meses
pai
achega
1238d00701

+ 28 - 0
app/src/main/java/com/adealink/weparty/module/playmate/event/PlaymateListEventReporter.kt

@@ -46,6 +46,34 @@ abstract class PlaymateListEventReporter {
 
         recyclerView.addOnScrollListener(scrollListener)
         recyclerView.setTag(R.id.recycler_view_event_reporter, scrollListener)
+
+
+        val adapter = recyclerView.adapter
+        if (adapter == null) {
+            throw IllegalStateException("recyclerView adapter is null")
+        }
+        adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
+            override fun onChanged() {
+                super.onChanged()
+                checkAndReportInitialItems(adapter.itemCount, recyclerView)
+            }
+
+            override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
+                super.onItemRangeInserted(positionStart, itemCount)
+                checkAndReportInitialItems(adapter.itemCount, recyclerView)
+            }
+        })
+    }
+
+    private var isFirstLoad = true
+    private fun checkAndReportInitialItems(itemCount: Int, recyclerView: RecyclerView) {
+        if (isFirstLoad && itemCount > 0) {
+            isFirstLoad = false
+            // 延迟上报,确保视图已经创建
+            handler.postDelayed({
+                reportImmediately(recyclerView)
+            }, 150)
+        }
     }
 
     /**

+ 1 - 83
module/account/src/main/java/com/adealink/weparty/account/constant/Error.kt

@@ -3,93 +3,11 @@ package com.adealink.weparty.account.constant
 import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.base.IError
 import com.adealink.frame.base.Rlt
-import com.adealink.frame.util.ONE_HOUR
 import com.adealink.weparty.account.R
-import com.adealink.weparty.account.login.data.LoginResult
 import com.adealink.weparty.commonui.toast.util.showFailedToast
-import com.adealink.weparty.network.ServerCode
-import kotlin.math.ceil
-import com.adealink.weparty.R as APP_R
 
 
-//模块:account,功能:login,错误:auth_error
 class AccountLoginAuthError(val statusCode: Int?) : IError(getCompatString(R.string.account_auth_error))
 
-//模块:account,功能:login,错误:同一个设备注册多个账号限制
-class AccountLoginRegisterLimitError : IError(getCompatString(R.string.account_register_limit))
-
-//模块:account,功能:login,错误:服务端请求第三方授权失败
-class AccountServerAuthError : IError(getCompatString(R.string.account_server_auth_failed))
-
-//模块:account,功能:login,错误:服务端操作错误
-class AccountServerOpError : IError(getCompatString(R.string.account_server_op_failed))
-
-//模块:account,功能:login,错误:服务端异常
-class AccountServerExceptionError : IError(getCompatString(R.string.account_server_exception))
-
-/**
- * 未注册
- */
-class AccountNoRegisterError : IError()
-
-/**
- * 已注册、没有设置密码
- */
-class AccountHasRegisterWithoutPasswordError : IError()
-
 //模块:account,功能:login,错误:auth_cancel
-class AccountLoginAuthCancelError : IError()
-
-//模块:account,功能:login,错误:验证码无效
-class AccountInvalidVerifyCodeError : IError(getCompatString(R.string.account_invalid_verify_code))
-
-//模块:account,功能:login,错误:密码错误
-class AccountPasswordError : IError(getCompatString(R.string.account_password_error))
-
-//模块:account,功能:login,错误:密码频繁错误
-class AccountPasswordFrequentlyError : IError(getCompatString(R.string.account_password_frequently_error))
-
-//模块:account,功能:login,错误:验证码受限
-class AccountVerifyCodeLimitError : IError(getCompatString(R.string.account_verfiy_code_limit))
-
-class AccountLoginWithInvalidDeviceIdError : IError(getCompatString(R.string.account_login_with_invalid_device_id))
-
-class AccountLoginWithVirtualApkError : IError(getCompatString(R.string.account_login_virtual_apk))
-
-//模块:account,功能:login,错误:fb关联多个账号情况
-class AccountFBSelectError : IError()
-
-fun getLoginErrorByServerCode(error: IError): IError {
-    val loginRes = error.data as? LoginResult
-    return when (error.serverCode) {
-        ServerCode.LOGIN_REGISTER_LIMIT.code -> AccountLoginRegisterLimitError()
-//        ServerCode.USER_BANNED.code -> AccountBannedError(getBanedReason(loginRes?.reason), getBannedHours((loginRes?.expire ?: 0) * 1000))
-        ServerCode.TOKEN_EXPIRE.code -> AccountServerAuthError()
-        ServerCode.COMMON_OP_ERROR.code -> AccountServerOpError()
-        ServerCode.SERVER_EXCEPTION.code -> AccountServerExceptionError()
-        ServerCode.NOT_REGISTER.code -> AccountNoRegisterError()
-        ServerCode.HAS_REGISTER_WITHOUT_PASSWORD.code -> AccountHasRegisterWithoutPasswordError()
-        ServerCode.INVALID_VERIFY_CODE.code -> AccountInvalidVerifyCodeError()
-        ServerCode.PASSWORD_ERROR.code -> AccountPasswordError()
-        ServerCode.PASSWORD_ERROR_TOO_FREQUENTLY.code -> AccountPasswordFrequentlyError()
-        ServerCode.VERIFY_CODE_LIMIT.code -> AccountVerifyCodeLimitError()
-        ServerCode.LOGIN_WITH_INVALID_DEVICE_ID.code -> AccountLoginWithInvalidDeviceIdError()
-        ServerCode.LOGIN_WITH_VIRTUAL_APK.code -> AccountLoginWithVirtualApkError()
-        else -> IError(if (error.msg.isEmpty()) getCompatString(R.string.account_login_common_failed) else error.msg,
-            error.serverCode)
-    }
-}
-
-fun getBannedHours(timestamp: Long): String {
-    if (timestamp <= 0) {
-        return getCompatString(APP_R.string.common_hours, "9999999")
-    }
-    return getCompatString(
-        APP_R.string.common_hours,
-        ceil(timestamp.toFloat() / ONE_HOUR).toInt()
-    )
-}
-
-fun showLoginFailedTip(rlt: Rlt.Failed) {
-    showFailedToast(rlt)
-}
+class AccountLoginAuthCancelError : IError()

+ 1 - 2
module/account/src/main/java/com/adealink/weparty/account/login/LoginDialog.kt

@@ -31,7 +31,6 @@ import com.adealink.frame.util.statusBarHeight
 import com.adealink.weparty.App
 import com.adealink.weparty.account.R
 import com.adealink.weparty.account.constant.AccountLoginAuthCancelError
-import com.adealink.weparty.account.constant.showLoginFailedTip
 import com.adealink.weparty.account.databinding.DialogLoginBinding
 import com.adealink.weparty.account.login.data.ThirdType
 import com.adealink.weparty.account.login.viewmodel.LoginViewModel
@@ -164,7 +163,7 @@ class LoginDialog : BaseDialogFragment(R.layout.dialog_login) {
                             return@observe
                         }
                     }
-                    showLoginFailedTip(result)
+                    showToast(result)
                 }
             }
         }

+ 2 - 2
module/account/src/main/java/com/adealink/weparty/account/login/phone/PhoneLoginActivity.kt

@@ -8,7 +8,6 @@ import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.frame.router.Router
 import com.adealink.frame.router.annotation.RouterUri
 import com.adealink.weparty.account.R
-import com.adealink.weparty.account.constant.showLoginFailedTip
 import com.adealink.weparty.account.databinding.ActivityPhoneLoginBinding
 import com.adealink.weparty.account.login.BaseLoginActivity
 import com.adealink.weparty.account.login.phone.data.Page
@@ -18,6 +17,7 @@ import com.adealink.weparty.account.login.phone.viewmodel.PhoneLoginViewModel
 import com.adealink.weparty.account.login.viewmodel.LoginViewModel
 import com.adealink.weparty.account.viewModel.AccountViewModelFactory
 import com.adealink.weparty.commonui.BaseFragment
+import com.adealink.weparty.commonui.toast.util.showToast
 import com.adealink.weparty.module.account.Account
 
 
@@ -74,7 +74,7 @@ class PhoneLoginActivity : BaseLoginActivity() {
                 }
 
                 is Rlt.Failed -> {
-                    showLoginFailedTip(result)
+                    showToast(result)
                 }
             }
         }

+ 3 - 4
module/account/src/main/java/com/adealink/weparty/account/login/viewmodel/LoginViewModel.kt

@@ -16,7 +16,6 @@ import com.adealink.weparty.account.constant.AccountLoginAuthCancelError
 import com.adealink.weparty.account.constant.AccountLoginAuthError
 import com.adealink.weparty.account.constant.GOOGLE_CODE_COUNT_DOWN_TIME
 import com.adealink.weparty.account.constant.TAG_ACCOUNT_LOGIN
-import com.adealink.weparty.account.constant.getLoginErrorByServerCode
 import com.adealink.weparty.account.login.auth.AuthManager
 import com.adealink.weparty.account.login.auth.IAuthCallback
 import com.adealink.weparty.account.login.data.ThirdType
@@ -109,7 +108,7 @@ class LoginViewModel : BaseViewModel(), ILoginViewModel, ILoginListener {
                                 loginLD.send(
                                     LoginResultLD(
                                         authType,
-                                        Rlt.Failed(getLoginErrorByServerCode(result.error))
+                                        result
                                     ), false
                                 )
                             }
@@ -143,7 +142,7 @@ class LoginViewModel : BaseViewModel(), ILoginViewModel, ILoginListener {
                     loginLD.send(
                         LoginResultLD(
                             ThirdType.GOOGLE,
-                            Rlt.Failed(getLoginErrorByServerCode(result.error))
+                            result
                         ), false
                     )
                 }
@@ -168,7 +167,7 @@ class LoginViewModel : BaseViewModel(), ILoginViewModel, ILoginListener {
                     loginLD.send(
                         LoginResultLD(
                             ThirdType.GOOGLE,
-                            Rlt.Failed(getLoginErrorByServerCode(result.error))
+                            result
                         ), false
                     )
                 }

+ 1 - 0
module/account/src/main/res/values-zh/strings.xml

@@ -25,6 +25,7 @@
     <string name="account_invalid_verify_code">验证码无效</string>
     <string name="account_password_error">密码错误</string>
     <string name="account_password_frequently_error">密码频繁出错,请稍候重试</string>
+    <string name="account_verfiy_code_limit">Verify code send reach limit today</string>
     <string name="account_country_not_support">该国家/地区不受支持</string>
     <string name="account_login_with_invalid_device_id">无法使用无效设备登录</string>
     <string name="account_login_virtual_apk">无法使用多个应用程序登录</string>

+ 1 - 1
module/joinus/src/main/res/layout/activity_apply_skill.xml

@@ -13,7 +13,7 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        app:top_bar_title="@string/join_us_title" />
+        app:top_bar_title="@string/join_us_apply_for_skill" />
 
     <androidx.fragment.app.FragmentContainerView
         android:id="@+id/fl_content"

+ 1 - 0
module/joinus/src/main/res/values-in/strings.xml

@@ -43,4 +43,5 @@
     <string name="join_us_step2_intro_is_empty">Harap masukkan perkenalan</string>
     <string name="join_us_category_form_is_empty">Kategori ini belum mendukung pendaftaran</string>
     <string name="join_us_playmate_skill_setting">Informasi Keterampilan</string>
+    <string name="join_us_apply_for_skill">Isi informasi keterampilan</string>
 </resources>

+ 1 - 0
module/joinus/src/main/res/values-zh/strings.xml

@@ -43,4 +43,5 @@
     <string name="join_us_step2_intro_is_empty">请输入介绍</string>
     <string name="join_us_category_form_is_empty">该品类暂不支持申请</string>
     <string name="join_us_playmate_skill_setting">技能信息</string>
+    <string name="join_us_apply_for_skill">填写技能信息</string>
 </resources>

+ 1 - 0
module/joinus/src/main/res/values/strings.xml

@@ -43,4 +43,5 @@
     <string name="join_us_step2_intro_is_empty">Please enter an introduction</string>
     <string name="join_us_category_form_is_empty">This category currently does not support applications</string>
     <string name="join_us_playmate_skill_setting">Skill Information</string>
+    <string name="join_us_apply_for_skill">Fill in skill information</string>
 </resources>