缓存上次加入的群组

This commit is contained in:
fengge 2026-06-30 16:56:36 +08:00
parent b0a5eb7234
commit 2e3de6b968
3 changed files with 61 additions and 12 deletions

View File

@ -345,6 +345,8 @@ public class CallBackResolution {
indexGroupId = userGroupId;
indexGroupName = userGroupName;
CallBackUtil.callBackNotifyUpdateGroup(userGroupId, userGroupName);
// 触发首次进入群组状态
com.stand.standapp.MainActivity.onFirstGroupEntered();
}
break;

View File

@ -453,6 +453,9 @@ class AndroidInterface(private val activity: MainActivity) {
com.stand.standapp.MainActivity.executeJs("if(window.appLogin){window.appLogin('$escaped');}")
Timber.tag("AndroidInterface").d("Called appLogin")
}
// 页面加载并初始化完成后触发状态
com.stand.standapp.MainActivity.onPageLoadFinished()
} catch (e: Exception) {
Timber.tag("UI").e(e, "隐藏加载布局失败")
}

View File

@ -43,22 +43,65 @@ class MainActivity : AppCompatActivity() {
}
}
@Volatile
private var hasFirstGroupEntered = false
@Volatile
private var hasPageFinished = false
@Volatile
private var hasAutoJumped = false
@JvmStatic
fun onFirstGroupEntered() {
Timber.tag("PTT").d("Condition met: First group entered")
hasFirstGroupEntered = true
checkAndAutoJumpToLastGroup()
}
@JvmStatic
fun onPageLoadFinished() {
Timber.tag("PTT").d("Condition met: Web page loaded and initialized")
hasPageFinished = true
checkAndAutoJumpToLastGroup()
}
@JvmStatic
fun resetAutoJumpStates() {
hasFirstGroupEntered = false
hasPageFinished = false
hasAutoJumped = false
Timber.tag("PTT").d("Auto jump states reset")
}
@JvmStatic
fun checkAndAutoJumpToLastGroup() {
synchronized(this) {
if (hasFirstGroupEntered && hasPageFinished && !hasAutoJumped) {
hasAutoJumped = true
instance?.let { ctx ->
val lastGroupId = AppConfig.getLastGroupId(ctx)
if (lastGroupId.isNotEmpty()) {
Timber.tag("PTT").d("Both conditions met. Auto-jumping to last joined group: %s after 2s delay", lastGroupId)
ctx.runOnUiThread {
android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
instance?.pttInterface?.pttJumpGroup(lastGroupId)
}, 2000)
}
} else {
Timber.tag("PTT").d("Both conditions met but lastGroupId is empty, skip auto-jump")
}
}
} else {
Timber.tag("PTT").d("Check auto jump: hasFirstGroupEntered=$hasFirstGroupEntered, hasPageFinished=$hasPageFinished, hasAutoJumped=$hasAutoJumped")
}
}
}
@JvmStatic
fun onPttLoginSuccess() {
Timber.tag("MainActivity").d("onPttLoginSuccess called from Native")
executeJs("onPttLoginSuccess()")
instance?.let { ctx ->
val lastGroupId = AppConfig.getLastGroupId(ctx)
if (lastGroupId.isNotEmpty()) {
Timber.tag("PTT").d("Auto-jumping to last joined group: %s after delay", lastGroupId)
ctx.runOnUiThread {
android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
instance?.pttInterface?.pttJumpGroup(lastGroupId)
}, 2000)
}
}
}
}
// 硬件按键触发
@ -500,6 +543,7 @@ class MainActivity : AppCompatActivity() {
Timber.tag("MainActivity").e(e, "Failed to redirect to LoginActivity")
}
try {
resetAutoJumpStates()
CallBackResolution.resetPttLoginStatus();
}catch (e: Exception) {
Timber.tag("MainActivity").e(e, "Failed to clear public value")