Skip to content

Commit 5ddd1db

Browse files
committed
feat: streamline WeCom QR code login success handling with direct callback integration
1 parent fd170cd commit 5ddd1db

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

ui/src/views/chat/user-login/scanCompinents/wecomQrCode.vue

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
</template>
44

55
<script lang="ts" setup>
6-
import { nextTick, defineProps, onBeforeUnmount } from 'vue'
7-
import { useRoute, useRouter } from 'vue-router'
8-
import { getBrowserLang } from '@/locales'
6+
import {nextTick, defineProps, onBeforeUnmount} from 'vue'
7+
import {useRoute, useRouter} from 'vue-router'
8+
import {getBrowserLang} from '@/locales'
99
import useStore from '@/stores'
10+
1011
const WE_COM_ORIGIN = 'https://login.work.weixin.qq.com'
1112
const LOGIN_STATE = 'fit2cloud-wecom-qr'
1213
const props = defineProps<{
@@ -21,10 +22,10 @@ const props = defineProps<{
2122
2223
const router = useRouter()
2324
const route = useRoute()
24-
const { chatUser } = useStore()
25+
const {chatUser} = useStore()
2526
2627
const {
27-
params: { accessToken },
28+
params: {accessToken},
2829
} = route as any
2930
3031
let iframe: HTMLIFrameElement | null = null
@@ -52,16 +53,6 @@ function getLang() {
5253
return lang === 'en-US' ? 'en' : 'zh'
5354
}
5455
55-
async function handleLoginSuccess(code: string) {
56-
await chatUser.wecomCallback(code, accessToken)
57-
58-
router.push({
59-
name: 'chat',
60-
params: { accessToken },
61-
query: route.query,
62-
})
63-
}
64-
6556
function cleanup() {
6657
iframe?.remove()
6758
iframe = null
@@ -86,13 +77,20 @@ const init = async () => {
8677
`&panel_size=small` +
8778
`&redirect_type=self`
8879
iframe.addEventListener('load', (e) => {
80+
console.log('load', iframe)
8981
if (iframe?.contentWindow) {
90-
iframe?.contentWindow?.stop()
82+
iframe.contentWindow.stop()
9183
const searchParams = new URLSearchParams(iframe.contentWindow.location.search)
9284
const code = searchParams.get('code')
9385
if (code) {
94-
handleLoginSuccess(code)
95-
cleanup()
86+
chatUser.wecomCallback(code, accessToken).then((ok) => {
87+
router.push({
88+
name: 'chat',
89+
params: {accessToken},
90+
query: route.query,
91+
})
92+
cleanup()
93+
})
9694
}
9795
}
9896
})

0 commit comments

Comments
 (0)