Explorar o código

make dialogs async

Jason Gorst hai 1 mes
pai
achega
5154c93fbb
Modificáronse 1 ficheiros con 32 adicións e 0 borrados
  1. 32 0
      app/middleware/signedIn.js

+ 32 - 0
app/middleware/signedIn.js

@@ -0,0 +1,32 @@
+export default defineNuxtRouteMiddleware(async () => {
+  const nuxtApp = useNuxtApp()
+  const { fetchSession, isSignedIn } = useAuthClient()
+  await fetchSession()
+
+  if (!isSignedIn.value) {
+    return nuxtApp.runWithContext(() => {
+      const dynamicDialog = useDynamicDialog()
+
+      const SignInDialog = defineAsyncComponent(() => import("~/components/SignInDialog.vue"))
+      const SignInDialogHeader = defineAsyncComponent(() => import("~/components/SignInDialogHeader.vue"))
+
+      // noinspection JSUnresolvedReference
+      dynamicDialog.open(SignInDialog, {
+        props: {
+          showHeader: true,
+          pt: {
+            header: "pb-0",
+            pcCloseButton: {
+              root: "size-6!",
+              icon: "size-3"
+            }
+          }
+        },
+
+        templates: { header: markRaw(SignInDialogHeader) }
+      })
+
+      return abortNavigation()
+    })
+  }
+})