This commit is contained in:
parent
3d7eec25b2
commit
b3f1ed6f34
|
@ -1,3 +1,5 @@
|
||||||
|
import type { Block, Layout } from '@/layout/layout.types'
|
||||||
|
import useLayoutStore from '@/layout/useLayoutStore'
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { computed, reactive, ref, watch } from 'vue'
|
import { computed, reactive, ref, watch } from 'vue'
|
||||||
|
@ -18,19 +20,53 @@ const defaultUserInfo: UserInfo = {
|
||||||
avatar: '',
|
avatar: '',
|
||||||
openId: ''
|
openId: ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getLinkList(data: Layout) {
|
||||||
|
const list = [] as Block[]
|
||||||
|
for (const mode of data.content) {
|
||||||
|
for (const page of mode.pages) {
|
||||||
|
for (const item of page.list) {
|
||||||
|
if (!item.link || item.link.startsWith('id:')) break
|
||||||
|
list.push(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const item of data.dock) {
|
||||||
|
if (item) list.push(item)
|
||||||
|
}
|
||||||
|
for (const dirItem of Object.values(data.dir)) {
|
||||||
|
for (const item of dirItem.list) {
|
||||||
|
list.push(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
export default defineStore('user', () => {
|
export default defineStore('user', () => {
|
||||||
const token = ref(localStorage.getItem('token') || '')
|
const token = ref(localStorage.getItem('token') || '')
|
||||||
watch(token, (val) => {
|
watch(token, (val) => {
|
||||||
localStorage.setItem('token', val)
|
localStorage.setItem('token', val)
|
||||||
})
|
})
|
||||||
const profile = reactive({ ...defaultUserInfo })
|
const profile = reactive({ ...defaultUserInfo })
|
||||||
|
const layout = useLayoutStore()
|
||||||
watch(
|
watch(
|
||||||
token,
|
token,
|
||||||
(val) => {
|
async (val) => {
|
||||||
if (!val) return
|
if (!val) return
|
||||||
request<UserInfo>('GET', '/api/profile').then((res) => {
|
const res = await request<UserInfo>('GET', '/api/profile')
|
||||||
Object.assign(profile, res)
|
Object.assign(profile, res)
|
||||||
})
|
const data = await request<Layout>('GET', '/api/backup')
|
||||||
|
const remoteList = getLinkList(data)
|
||||||
|
const localList = getLinkList(layout.state)
|
||||||
|
const addList: Block[] = []
|
||||||
|
for (const item of remoteList) {
|
||||||
|
if (!localList.some((el) => el.id !== item.id)) {
|
||||||
|
addList.push(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (addList.length > 0) {
|
||||||
|
// TODO: 交给张阳
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
|
@ -38,9 +74,7 @@ export default defineStore('user', () => {
|
||||||
const logout = () => {
|
const logout = () => {
|
||||||
token.value = ''
|
token.value = ''
|
||||||
Object.assign(profile, { ...defaultUserInfo })
|
Object.assign(profile, { ...defaultUserInfo })
|
||||||
// profile.avatar = ''
|
|
||||||
}
|
}
|
||||||
// 自动备份
|
|
||||||
return {
|
return {
|
||||||
token,
|
token,
|
||||||
profile,
|
profile,
|
||||||
|
|
Loading…
Reference in New Issue