refactor: add onMastoInit

This commit is contained in:
三咲智子 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"> <script setup lang="ts">
import { warn } from 'vue'
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
text?: string text?: string
icon: string icon: string
@ -31,7 +29,7 @@ useCommand({
}) })
let activeClass = $ref('text-primary') let activeClass = $ref('text-primary')
watch(isMastoInitialised, async () => { onMastoInit(async () => {
if (!props.userOnly) { if (!props.userOnly) {
// TODO: force NuxtLink to reevaluate, we now we are in this route though, so we should force it to active // 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 // 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 isMastoInitialised = computed(() => process.client && useMasto().loggedIn.value)
export const onMastoInit = (cb: () => unknown) => {
watchOnce(isMastoInitialised, () => {
cb()
}, { immediate: isMastoInitialised.value })
}
// @unocss-include // @unocss-include
export const STATUS_VISIBILITIES = [ export const STATUS_VISIBILITIES = [
{ {

View file

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

View file

@ -4,18 +4,10 @@ export default defineNuxtRouteMiddleware((to) => {
if (to.path === '/signin/callback') if (to.path === '/signin/callback')
return return
if (!isMastoInitialised.value) { onMastoInit(() => {
watchOnce(isMastoInitialised, () => {
if (!currentUser.value) if (!currentUser.value)
return navigateTo(`/${currentServer.value}/public`) return navigateTo(`/${currentServer.value}/public`)
if (to.path === '/') if (to.path === '/')
return navigateTo('/home') return navigateTo('/home')
}) })
return
}
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) => { onMastoInit(async () => {
if (!val)
return
// Keep the information to be edited up to date // Keep the information to be edited up to date
await pullMyAccountInfo() await pullMyAccountInfo()
reset() reset()