Kaynağa Gözat

refactor: улучшение обработки ошибок и типизации

- Улучшение обработки ошибок в useUser store

- Обновление конфигурации Sentry

- Удаление неиспользуемых страниц
horanchikk 3 ay önce
ebeveyn
işleme
c9de10b67f

+ 0 - 10
pages/messenger/index.vue

@@ -1,10 +0,0 @@
-<template>
-  <p>here is messenger</p>
-</template>
-
-<script setup lang="ts">
-definePageMeta({
-  name: 'Сообщения',
-  middleware: ['user-only'],
-})
-</script>

+ 0 - 5
pages/profile/grades.vue

@@ -1,5 +0,0 @@
-<template>
-  <div>here is grades</div>
-</template>
-
-<script setup lang="ts"></script>

+ 0 - 12
pages/profile/index.vue

@@ -1,12 +0,0 @@
-<template>
-  <p>here is profile page</p>
-</template>
-
-<script setup lang="ts">
-// import { useUser } from '~/store/useUser'
-
-definePageMeta({
-  name: 'Профиль',
-  middleware: ['user-only'],
-})
-</script>

+ 17 - 9
plugins/sentry.client.ts

@@ -1,14 +1,22 @@
 import * as Sentry from '@sentry/nuxt'
 
-const { public: { SENTRY_DSN } } = useRuntimeConfig()
+export default defineNuxtPlugin(() => {
+  const { public: { SENTRY_DSN } } = useRuntimeConfig()
 
-Sentry.init({
-  dsn: import.meta.dev ? '' : SENTRY_DSN,
-  integrations: [Sentry.replayIntegration()],
+  const sentry = Sentry.init({
+    dsn: import.meta.dev ? '' : SENTRY_DSN,
+    integrations: [Sentry.replayIntegration()],
+  
+    tracesSampleRate: 1.0,
+    tracePropagationTargets: ['localhost'],
+  
+    replaysSessionSampleRate: 0.1,
+    replaysOnErrorSampleRate: 1.0,
+  })
 
-  tracesSampleRate: 1.0,
-  tracePropagationTargets: ['localhost'],
-
-  replaysSessionSampleRate: 0.1,
-  replaysOnErrorSampleRate: 1.0,
+  return {
+    provide: {
+      sentry,
+    }
+  }
 })

+ 23 - 7
store/useUser.ts

@@ -4,12 +4,12 @@ import { useLogger } from '~/composables/useLogger'
 import { useRouter } from '#imports'
 
 interface TUserData {
-  user_id: number
+  user_id?: number
   group_id?: number
   teacher_id?: number
-  branch_id: number
-  access_token: string
-  is_student: boolean
+  branch_id?: number
+  access_token?: string
+  is_student?: boolean
 }
 
 function findNewKeys(oldObj: Record<string, unknown>, newObj: Record<string, unknown>) {
@@ -30,8 +30,19 @@ function findNewKeys(oldObj: Record<string, unknown>, newObj: Record<string, unk
 
 export const useUser = defineStore('useUser', () => {
   const log = useLogger('userStore')
-  const data = ref<TUserData>(JSON.parse(localStorage.getItem('ktc_data')!) || {})
   const router = useRouter()
+  
+  let initialData: TUserData = {}
+  try {
+    const storedData = localStorage.getItem('ktc_data')
+    if (storedData) {
+      initialData = JSON.parse(storedData)
+    }
+  } catch (e) {
+    log.error('Ошибка при чтении данных пользователя из localStorage:', e)
+  }
+  
+  const data = ref<TUserData>(initialData)
 
   function setAuthData(access_token: string, user_id: number) {
     data.value.access_token = access_token
@@ -40,12 +51,17 @@ export const useUser = defineStore('useUser', () => {
 
   function logout() {
     localStorage.removeItem('ktc_data')
+    data.value = {}
     return router.push('/auth')
   }
 
   watch(() => ({ ...data.value }), (upd, prev) => {
-    localStorage.setItem('ktc_data', JSON.stringify(upd))
-    log.success('Store was updated:', findNewKeys(prev, upd))
+    try {
+      localStorage.setItem('ktc_data', JSON.stringify(upd))
+      log.success('Store was updated:', findNewKeys(prev, upd))
+    } catch (e) {
+      log.error('Ошибка при сохранении данных пользователя в localStorage:', e)
+    }
   }, {
     deep: true,
   })