-
+
+

+
+
+
+
diff --git a/client/app/layouts/default.vue b/client/app/layouts/default.vue
index f26ae77..9ac0a53 100644
--- a/client/app/layouts/default.vue
+++ b/client/app/layouts/default.vue
@@ -30,9 +30,8 @@
diff --git a/client/app/layouts/updater.vue b/client/app/layouts/updater.vue
new file mode 100644
index 0000000..05f8b92
--- /dev/null
+++ b/client/app/layouts/updater.vue
@@ -0,0 +1,3 @@
+
+ UPDATER
+
diff --git a/client/app/middleware/00.updater.global.ts b/client/app/middleware/00.updater.global.ts
new file mode 100644
index 0000000..f90a848
--- /dev/null
+++ b/client/app/middleware/00.updater.global.ts
@@ -0,0 +1,41 @@
+import { relaunch } from '@tauri-apps/plugin-process'
+import { check } from '@tauri-apps/plugin-updater'
+
+export default defineNuxtRouteMiddleware(async (to, from) => {
+ if (from?.name)
+ return
+
+ const update = await check()
+
+ console.log(update)
+
+ if (import.meta.dev)
+ return
+
+ if (update) {
+ console.log(
+ `found update ${update.version} from ${update.date} with notes ${update.body}`,
+ )
+ let downloaded = 0
+ let contentLength = 0
+ // alternatively we could also call update.download() and update.install() separately
+ await update.downloadAndInstall((event) => {
+ switch (event.event) {
+ case 'Started':
+ contentLength = event.data.contentLength ?? 0
+ console.log(`started downloading ${event.data.contentLength} bytes`)
+ break
+ case 'Progress':
+ downloaded += event.data.chunkLength
+ console.log(`downloaded ${downloaded} from ${contentLength}`)
+ break
+ case 'Finished':
+ console.log('download finished')
+ break
+ }
+ })
+
+ console.log('update installed')
+ await relaunch()
+ }
+})
diff --git a/client/app/middleware/01.auth.global.ts b/client/app/middleware/01.auth.global.ts
new file mode 100644
index 0000000..8bf5e40
--- /dev/null
+++ b/client/app/middleware/01.auth.global.ts
@@ -0,0 +1,20 @@
+import chadApi from '#shared/chad-api'
+
+export default defineNuxtRouteMiddleware(async (to, from) => {
+ const { me, setMe } = useAuth()
+
+ if (!me.value && !from?.name) {
+ try {
+ setMe(await chadApi('/me'))
+ }
+ catch {
+ if (to.meta.auth !== 'guest') {
+ return navigateTo({ name: 'Login' })
+ }
+ }
+ }
+
+ if (me.value && to.meta.auth === 'guest') {
+ return navigateTo('/')
+ }
+})
diff --git a/client/app/middleware/01.build-info.global.ts b/client/app/middleware/01.build-info.global.ts
deleted file mode 100644
index b3c0f59..0000000
--- a/client/app/middleware/01.build-info.global.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export default defineNuxtRouteMiddleware((to, from) => {
- console.group('Build Info')
- console.log(`COMMIT_SHA: ${__COMMIT_SHA__}`)
- console.groupEnd()
-})
diff --git a/client/app/middleware/02.auth.global.ts b/client/app/middleware/02.auth.global.ts
deleted file mode 100644
index 0962cf7..0000000
--- a/client/app/middleware/02.auth.global.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default defineNuxtRouteMiddleware((to, from) => {
- const { username } = usePreferences()
-
- if (!username.value && to.name !== 'Login') {
- return navigateTo({ name: 'Login' })
- }
-
- if (!username.value)
- return
-
- const { init } = useMediasoup()
-
- init()
-
- if (to.path === 'Login') {
- return navigateTo('/')
- }
-})
diff --git a/client/app/pages/login.vue b/client/app/pages/login.vue
index b2604ed..11d82b8 100644
--- a/client/app/pages/login.vue
+++ b/client/app/pages/login.vue
@@ -1,13 +1,30 @@
-
+
-
@@ -17,18 +34,34 @@
definePageMeta({
name: 'Login',
layout: 'auth',
+ auth: 'guest',
})
-const { username } = usePreferences()
+const { login } = useAuth()
-const localUsername = ref()
+const submitting = ref(false)
+
+const username = ref()
+const password = ref()
+
+const valid = computed(() => {
+ if (!username.value)
+ return false
+
+ if (!password.value)
+ return false
+
+ return true
+})
async function submit() {
- if (!localUsername.value)
+ if (!valid.value)
return
- username.value = localUsername.value
+ submitting.value = true
- await navigateTo('/')
+ await login(username.value!, password.value!)
+
+ submitting.value = false
}
diff --git a/client/app/pages/preferences.vue b/client/app/pages/preferences.vue
index f45a2ed..437d94a 100644
--- a/client/app/pages/preferences.vue
+++ b/client/app/pages/preferences.vue
@@ -4,12 +4,16 @@
+
+