✨ feat(package.json): добавляет скрипт для генерации спрайта и обновляет зависимости 🔧 refactor(src/composables/useChat.ts): упрощает логику управления чатом, убирает устаревшие функции 🔧 refactor(src/views/chat/ChatRoomView.vue): обновляет логику загрузки сообщений с использованием новых хуков 🔧 refactor(src/views/matches/MatchesView.vue): улучшает обработку совпадений с использованием новых хуков ✨ feat(src/App.vue): добавляет загрузку справочных данных с использованием Vue Query ✨ feat(src/main.ts): интегрирует Vue Query в приложение для управления состоянием запросов ✨ feat(src/views/profile/MyProfileView.vue): добавляет мутацию для удаления профиля с использованием Vue Query 🔧 refactor(src/components/layout/BottomNav.vue): заменяет компонент иконки на более универсальный компонент AppIcon
31 lines
820 B
TypeScript
31 lines
820 B
TypeScript
import { createApp } from 'vue'
|
|
import { VueQueryPlugin } from '@tanstack/vue-query'
|
|
import App from './App.vue'
|
|
import { router } from './router'
|
|
import '@/styles/tailwind.css'
|
|
import '@/styles/main.scss'
|
|
import sprite from '@/assets/icons/sprite.svg?raw'
|
|
|
|
// Inject SVG sprite into DOM once so <use href="#icon-*"> works everywhere
|
|
const spriteContainer = document.createElement('div')
|
|
spriteContainer.style.cssText = 'display:none;position:absolute;width:0;height:0'
|
|
spriteContainer.setAttribute('aria-hidden', 'true')
|
|
spriteContainer.innerHTML = sprite
|
|
document.body.prepend(spriteContainer)
|
|
|
|
const app = createApp(App)
|
|
|
|
app.use(router)
|
|
app.use(VueQueryPlugin, {
|
|
queryClientConfig: {
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 1000 * 60,
|
|
retry: 1,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
app.mount('#app')
|