useLogin.ts
997 Bytes
import { PageEnum } from "@/enums/pageEnum"
import { useUserStore } from "@/store/external/module/user"
import { cryptoEncode, routerTurnByName, setLocalStorage } from "@/utils"
import { to } from "@/utils/external/to"
import { StorageEnum } from '@/enums/storageEnum'
import { ref } from "vue"
export const useLogin = () => {
const userStore = useUserStore()
const t = window['$t']
const loading = ref(false)
const login = async (params: Record<'password' | 'username', string>) => {
loading.value = true
const [err, data] = await to<AwaitToResult<typeof userStore['login']>>(userStore.login({
...params,
mode: 'message'
}))
loading.value = false
if (err) {
return
}
setLocalStorage(
StorageEnum.GO_LOGIN_INFO_STORE,
cryptoEncode(
JSON.stringify(params)
)
)
window['$message'].success(`${t('login.login_success')}!`)
routerTurnByName(PageEnum.BASE_HOME_NAME, true)
}
return { login, loading }
}