refactor: add onMastoInit

zio/stable
三咲智子 2023-01-03 17:53:31 +08:00
parent 6092b27da6
commit 6729666170
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
5 changed files with 15 additions and 22 deletions

View File

@ -1,6 +1,4 @@
<script setup lang="ts">
import { warn } from 'vue'
const props = withDefaults(defineProps<{
text?: string
icon: string
@ -31,7 +29,7 @@ useCommand({
})
let activeClass = $ref('text-primary')
watch(isMastoInitialised, async () => {
onMastoInit(async () => {
if (!props.userOnly) {
// TODO: force NuxtLink to reevaluate, we now we are in this route though, so we should force it to active
// we don't have currentServer defined until later

View File

@ -7,6 +7,12 @@ export const useMasto = () => useNuxtApp().$masto as ElkMasto
export const isMastoInitialised = computed(() => process.client && useMasto().loggedIn.value)
export const onMastoInit = (cb: () => unknown) => {
watchOnce(isMastoInitialised, () => {
cb()
}, { immediate: isMastoInitialised.value })
}
// @unocss-include
export const STATUS_VISIBILITIES = [
{

View File

@ -86,7 +86,7 @@ export function usePaginator<T>(
}, 1000)
if (!isMastoInitialised.value) {
watchOnce(isMastoInitialised, () => {
onMastoInit(() => {
state.value = 'idle'
loadNext()
})

View File

@ -4,18 +4,10 @@ export default defineNuxtRouteMiddleware((to) => {
if (to.path === '/signin/callback')
return
if (!isMastoInitialised.value) {
watchOnce(isMastoInitialised, () => {
if (!currentUser.value)
return navigateTo(`/${currentServer.value}/public`)
if (to.path === '/')
return navigateTo('/home')
})
return
}
if (!currentUser.value)
return navigateTo(`/${currentServer.value}/public`)
if (to.path === '/')
return navigateTo('/home')
onMastoInit(() => {
if (!currentUser.value)
return navigateTo(`/${currentServer.value}/public`)
if (to.path === '/')
return navigateTo('/home')
})
})

View File

@ -45,10 +45,7 @@ const { form, reset, submitter, dirtyFields, isError } = useForm({
},
})
watch(isMastoInitialised, async (val) => {
if (!val)
return
onMastoInit(async () => {
// Keep the information to be edited up to date
await pullMyAccountInfo()
reset()