| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { finishSession } from '../../utils/backendApi'
- import { loadBackendAuthTokens, loadBackendBaseUrl } from '../../utils/backendAuth'
- import { clearSessionRecoverySnapshot, loadSessionRecoverySnapshot } from '../../game/core/sessionRecovery'
- import { getBackendSessionContextFromLaunchEnvelope, prepareMapPageUrlForRecovery } from '../../utils/gameLaunch'
- Page({
- onLoad() {
- const recoverySnapshot = loadSessionRecoverySnapshot()
- if (recoverySnapshot) {
- this.promptRecoveryAtEntry()
- return
- }
- this.redirectToDefaultEntry()
- },
- redirectToDefaultEntry() {
- const tokens = loadBackendAuthTokens()
- const url = tokens && tokens.accessToken
- ? '/pages/home/home'
- : '/pages/login/login'
- wx.redirectTo({ url })
- },
- promptRecoveryAtEntry() {
- const recoverySnapshot = loadSessionRecoverySnapshot()
- if (!recoverySnapshot) {
- this.redirectToDefaultEntry()
- return
- }
- wx.showModal({
- title: '恢复对局',
- content: '检测到上次有未正常结束的对局,是否继续恢复?',
- confirmText: '继续恢复',
- cancelText: '放弃',
- success: (result) => {
- if (result.confirm) {
- wx.redirectTo({
- url: prepareMapPageUrlForRecovery(recoverySnapshot.launchEnvelope),
- })
- return
- }
- const sessionContext = getBackendSessionContextFromLaunchEnvelope(recoverySnapshot.launchEnvelope)
- if (!sessionContext) {
- clearSessionRecoverySnapshot()
- wx.showToast({
- title: '已放弃上次对局',
- icon: 'none',
- duration: 1400,
- })
- this.redirectToDefaultEntry()
- return
- }
- finishSession({
- baseUrl: loadBackendBaseUrl(),
- sessionId: sessionContext.sessionId,
- sessionToken: sessionContext.sessionToken,
- status: 'cancelled',
- summary: {},
- })
- .catch(() => {
- // 放弃恢复不阻塞进入业务页;失败只丢给后续状态页处理。
- })
- .finally(() => {
- clearSessionRecoverySnapshot()
- wx.showToast({
- title: '已放弃上次对局',
- icon: 'none',
- duration: 1400,
- })
- this.redirectToDefaultEntry()
- })
- },
- })
- },
- })
|