会话改为 API 驱动后,这个隐藏 iframe 只负责收发 postMessage。它每 10 秒检查一次"90 秒内没收到消息就重置会话",而现在永远收不到消息, 90 秒后必然把刚登录的会话清掉。 删除组件,改由 App.vue 在状态初始化完成后调用 initSkinSiteSession() 恢复登录态。
This commit is contained in:
1 parent
00f0f111d8
commit
d83a65a052
2 files changed
+5
-70
No files matched your search
@@ -94,13 +94,14 @@ import NavButton from '@/components/ui/NavButton.vue'
|
|||||||
import NavRail from '@/components/ui/NavRail.vue'
|
import NavRail from '@/components/ui/NavRail.vue'
|
||||||
import OnboardingOverlay from '@/components/ui/onboarding/OnboardingOverlay.vue'
|
import OnboardingOverlay from '@/components/ui/onboarding/OnboardingOverlay.vue'
|
||||||
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
|
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
|
||||||
import SkinSiteSessionFrame from '@/components/ui/SkinSiteSessionFrame.vue'
|
|
||||||
import RemoteAnnouncements from '@/components/ui/RemoteAnnouncements.vue'
|
import RemoteAnnouncements from '@/components/ui/RemoteAnnouncements.vue'
|
||||||
import StartupAnnouncementModal from '@/components/ui/StartupAnnouncementModal.vue'
|
|
||||||
import SplashScreen from '@/components/ui/SplashScreen.vue'
|
import SplashScreen from '@/components/ui/SplashScreen.vue'
|
||||||
|
import StartupAnnouncementModal from '@/components/ui/StartupAnnouncementModal.vue'
|
||||||
import WindowControls from '@/components/ui/WindowControls.vue'
|
import WindowControls from '@/components/ui/WindowControls.vue'
|
||||||
import { useCheckDisableMouseover } from '@/composables/macCssFix.js'
|
import { useCheckDisableMouseover } from '@/composables/macCssFix.js'
|
||||||
|
import { initSkinSiteSession } from '@/composables/skin-site-session'
|
||||||
import { useDropImport } from '@/composables/useDropImport'
|
import { useDropImport } from '@/composables/useDropImport'
|
||||||
|
import { setupKeyboardShortcuts } from '@/composables/useKeyboardShortcuts'
|
||||||
import { minecraftLaunchErrorKey } from '@/composables/useMinecraftLaunchError'
|
import { minecraftLaunchErrorKey } from '@/composables/useMinecraftLaunchError'
|
||||||
import { useNetworkStatus } from '@/composables/useNetworkStatus'
|
import { useNetworkStatus } from '@/composables/useNetworkStatus'
|
||||||
import { AxolotlBrandConfig, config, getOfficialLabrinthBaseUrl } from '@/config'
|
import { AxolotlBrandConfig, config, getOfficialLabrinthBaseUrl } from '@/config'
|
||||||
@@ -132,6 +133,7 @@ import {
|
|||||||
} from '@/helpers/settings.ts'
|
} from '@/helpers/settings.ts'
|
||||||
import { getSidebarExpanded, setSidebarExpanded } from '@/helpers/sidebar-state.ts'
|
import { getSidebarExpanded, setSidebarExpanded } from '@/helpers/sidebar-state.ts'
|
||||||
import { get_opening_command, initialize_state } from '@/helpers/state'
|
import { get_opening_command, initialize_state } from '@/helpers/state'
|
||||||
|
import { installUiScale, setUiScale } from '@/helpers/ui-scale'
|
||||||
import {
|
import {
|
||||||
areUpdatesEnabled,
|
areUpdatesEnabled,
|
||||||
backupAppDbForUpdate,
|
backupAppDbForUpdate,
|
||||||
@@ -145,7 +147,6 @@ import {
|
|||||||
isNetworkMetered,
|
isNetworkMetered,
|
||||||
setRestartAfterPendingUpdate,
|
setRestartAfterPendingUpdate,
|
||||||
} from '@/helpers/utils.js'
|
} from '@/helpers/utils.js'
|
||||||
import { installUiScale, setUiScale } from '@/helpers/ui-scale'
|
|
||||||
import { start_join_server, start_join_singleplayer_world } from '@/helpers/worlds.ts'
|
import { start_join_server, start_join_singleplayer_world } from '@/helpers/worlds.ts'
|
||||||
import i18n, { resolveInitialLocale } from '@/i18n.config'
|
import i18n, { resolveInitialLocale } from '@/i18n.config'
|
||||||
import {
|
import {
|
||||||
@@ -169,7 +170,6 @@ import { createServerInstall, provideServerInstall } from '@/providers/server-in
|
|||||||
import { setupProviders } from '@/providers/setup'
|
import { setupProviders } from '@/providers/setup'
|
||||||
import { setupAuthProvider } from '@/providers/setup/auth'
|
import { setupAuthProvider } from '@/providers/setup/auth'
|
||||||
import { setupLoadingStateProvider } from '@/providers/setup/loading-state'
|
import { setupLoadingStateProvider } from '@/providers/setup/loading-state'
|
||||||
import { setupKeyboardShortcuts } from '@/composables/useKeyboardShortcuts'
|
|
||||||
import { useError } from '@/store/error.js'
|
import { useError } from '@/store/error.js'
|
||||||
import { useTheming } from '@/store/state'
|
import { useTheming } from '@/store/state'
|
||||||
|
|
||||||
@@ -1159,6 +1159,7 @@ async function setupApp() {
|
|||||||
stateInitialized.value = true
|
stateInitialized.value = true
|
||||||
showOnboarding.value = !onboarded
|
showOnboarding.value = !onboarded
|
||||||
void reconcileMojangAuthSourceAtStartup().catch(handleError)
|
void reconcileMojangAuthSourceAtStartup().catch(handleError)
|
||||||
|
void initSkinSiteSession().catch(handleError)
|
||||||
|
|
||||||
isMaximized.value = await getCurrentWindow().isMaximized()
|
isMaximized.value = await getCurrentWindow().isMaximized()
|
||||||
|
|
||||||
@@ -2228,7 +2229,6 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
|
|||||||
<template>
|
<template>
|
||||||
<AnniversaryCelebration />
|
<AnniversaryCelebration />
|
||||||
<SplashScreen v-if="!stateFailed" ref="splashScreen" data-tauri-drag-region />
|
<SplashScreen v-if="!stateFailed" ref="splashScreen" data-tauri-drag-region />
|
||||||
<SkinSiteSessionFrame v-if="stateInitialized" />
|
|
||||||
<InstancePlayerModal v-if="stateInitialized" />
|
<InstancePlayerModal v-if="stateInitialized" />
|
||||||
<StartupAnnouncementModal ref="startupAnnouncementModal" />
|
<StartupAnnouncementModal ref="startupAnnouncementModal" />
|
||||||
<RemoteAnnouncements :ready="stateInitialized && !showOnboarding && !stateFailed" />
|
<RemoteAnnouncements :ready="stateInitialized && !showOnboarding && !stateFailed" />
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
<script setup lang="ts">
|
|
||||||
import { onMounted, onUnmounted, ref, watch } from 'vue'
|
|
||||||
|
|
||||||
import {
|
|
||||||
receiveSkinSiteMessage,
|
|
||||||
resetSkinSiteSession,
|
|
||||||
setSkinSiteFrame,
|
|
||||||
SKIN_SITE_ORIGIN,
|
|
||||||
skinSiteStatus,
|
|
||||||
skinSiteUser,
|
|
||||||
} from '@/composables/skin-site-session'
|
|
||||||
import { clearHostedSession } from '@/helpers/hosted-packs'
|
|
||||||
|
|
||||||
const frame = ref<HTMLIFrameElement>()
|
|
||||||
let lastMessage = 0
|
|
||||||
let expiryTimer: ReturnType<typeof setInterval> | undefined
|
|
||||||
|
|
||||||
watch(
|
|
||||||
[skinSiteStatus, () => skinSiteUser.value?.uuid],
|
|
||||||
() => {
|
|
||||||
void clearHostedSession().catch(() => {})
|
|
||||||
},
|
|
||||||
{ flush: 'sync' },
|
|
||||||
)
|
|
||||||
|
|
||||||
function connect() {
|
|
||||||
resetSkinSiteSession()
|
|
||||||
lastMessage = 0
|
|
||||||
const contentWindow = frame.value?.contentWindow ?? null
|
|
||||||
setSkinSiteFrame(contentWindow)
|
|
||||||
contentWindow?.postMessage({ type: 'starlight-skin-session-connect' }, SKIN_SITE_ORIGIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
function receive(event: MessageEvent) {
|
|
||||||
if (receiveSkinSiteMessage(event, frame.value?.contentWindow ?? null)) lastMessage = Date.now()
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
window.addEventListener('message', receive)
|
|
||||||
connect()
|
|
||||||
expiryTimer = setInterval(() => {
|
|
||||||
if (lastMessage && Date.now() - lastMessage > 90_000) resetSkinSiteSession()
|
|
||||||
}, 10_000)
|
|
||||||
})
|
|
||||||
|
|
||||||
onUnmounted(() => {
|
|
||||||
window.removeEventListener('message', receive)
|
|
||||||
clearInterval(expiryTimer)
|
|
||||||
setSkinSiteFrame(null)
|
|
||||||
resetSkinSiteSession()
|
|
||||||
void clearHostedSession().catch(() => {})
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<iframe
|
|
||||||
ref="frame"
|
|
||||||
:src="`${SKIN_SITE_ORIGIN}/`"
|
|
||||||
title="StarLight Skin Site session"
|
|
||||||
aria-hidden="true"
|
|
||||||
tabindex="-1"
|
|
||||||
class="pointer-events-none fixed -left-[10000px] top-0 h-px w-px opacity-0"
|
|
||||||
@load="connect"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
Reference in new issue
Block a user