mirror of
https://github.com/Megghy/vtsuru.live.git
synced 2025-12-06 18:36:55 +08:00
- 完成弹幕机功能 - 在 .editorconfig 中新增对 vine.ts 文件的支持。 - 更新 package.json 中多个依赖的版本,提升稳定性和性能。 - 在 vite.config.mts 中引入 @guolao/vue-monaco-editor 插件,增强代码编辑功能。 - 在 App.vue 中调整内容填充的样式,优化界面布局。 - 新增获取配置文件哈希的 API 方法,提升配置管理能力。 - 在多个组件中优化了样式和逻辑,提升用户交互体验。
150 lines
4.6 KiB
TypeScript
150 lines
4.6 KiB
TypeScript
import { GetSelfAccount, useAccount, UpdateAccountLoop } from "@/api/account";
|
|
import { QueryGetAPI } from "@/api/query";
|
|
import { useAuthStore } from "@/store/useAuthStore";
|
|
import { useNotificationStore } from "@/store/useNotificationStore";
|
|
import { createDiscreteApi, NText, NFlex, NButton } from "naive-ui";
|
|
import { BASE_API_URL, isTauri, apiFail } from "./constants";
|
|
import { GetNotifactions } from "./notifactions";
|
|
import HyperDX from '@hyperdx/browser'
|
|
import EasySpeech from "easy-speech";
|
|
import { checkUpdateNote } from "./UpdateNote";
|
|
|
|
let currentVersion: string
|
|
let isHaveNewVersion = false
|
|
|
|
const { notification } = createDiscreteApi(['notification'])
|
|
|
|
export function InitVTsuru() {
|
|
QueryGetAPI<string>(`${BASE_API_URL}vtsuru/version`)
|
|
.then((version) => {
|
|
if (version.code == 200) {
|
|
currentVersion = version.data
|
|
const savedVersion = localStorage.getItem('Version')
|
|
localStorage.setItem('Version', currentVersion)
|
|
|
|
if (currentVersion && savedVersion && savedVersion !== currentVersion) {
|
|
setTimeout(() => {
|
|
location.reload()
|
|
}, 1000)
|
|
// alert('发现新的版本更新, 请按 Ctrl+F5 强制刷新页面')
|
|
notification.info({
|
|
title: '发现新的版本更新',
|
|
content: '将自动刷新页面',
|
|
duration: 5000,
|
|
meta: () => h(NText, { depth: 3 }, () => currentVersion),
|
|
})
|
|
}
|
|
else {
|
|
InitVersionCheck();
|
|
}
|
|
}
|
|
InitOther();
|
|
})
|
|
.catch(() => {
|
|
apiFail.value = true
|
|
console.log('默认API调用失败, 切换至故障转移节点')
|
|
})
|
|
.finally(async () => {
|
|
|
|
})
|
|
}
|
|
|
|
async function InitOther() {
|
|
if (process.env.NODE_ENV !== 'development') {
|
|
HyperDX.init({
|
|
apiKey: '7d1eb66c-24b8-445e-a406-dc2329fa9423',
|
|
service: 'vtsuru.live',
|
|
tracePropagationTargets: [/vtsuru.suki.club/i], // Set to link traces from frontend to backend requests
|
|
consoleCapture: true, // Capture console logs (default false)
|
|
advancedNetworkCapture: true, // Capture full HTTP request/response headers and bodies (default false)
|
|
})
|
|
}
|
|
// 加载其他数据
|
|
InitTTS()
|
|
await GetSelfAccount()
|
|
const account = useAccount()
|
|
const useAuth = useAuthStore()
|
|
if (account.value.id) {
|
|
if (account.value.biliUserAuthInfo && !useAuth.currentToken) {
|
|
useAuth.currentToken = account.value.biliUserAuthInfo.token
|
|
}
|
|
HyperDX.setGlobalAttributes({
|
|
userId: account.value.id.toString(),
|
|
userName: account.value.name,
|
|
})
|
|
}
|
|
useAuth.getAuthInfo()
|
|
GetNotifactions()
|
|
UpdateAccountLoop()
|
|
|
|
useNotificationStore().init()
|
|
}
|
|
function InitVersionCheck() {
|
|
setInterval(() => {
|
|
if (isHaveNewVersion) {
|
|
return
|
|
}
|
|
QueryGetAPI<string>(`${BASE_API_URL}vtsuru/version`).then(
|
|
(keepCheckData) => {
|
|
if (
|
|
keepCheckData.code == 200
|
|
&& keepCheckData.data != currentVersion
|
|
) {
|
|
isHaveNewVersion = true
|
|
currentVersion = keepCheckData.data
|
|
localStorage.setItem('Version', currentVersion)
|
|
console.log(`[vtsuru] 发现新版本: ${currentVersion}`)
|
|
|
|
if (window.$route.meta.forceReload || isTauri()) {
|
|
location.reload()
|
|
}
|
|
else {
|
|
const n = notification.info({
|
|
title: '发现新的版本更新',
|
|
content: '是否现在刷新?',
|
|
meta: () => h(NText, { depth: 3 }, () => currentVersion),
|
|
action: () =>
|
|
h(NFlex, null, () => [
|
|
h(
|
|
NButton,
|
|
{
|
|
text: true,
|
|
type: 'primary',
|
|
onClick: () => location.reload(),
|
|
size: 'small',
|
|
},
|
|
{ default: () => '刷新' },
|
|
),
|
|
h(
|
|
NButton,
|
|
{
|
|
text: true,
|
|
onClick: () => n.destroy(),
|
|
size: 'small',
|
|
},
|
|
{ default: () => '稍后' },
|
|
),
|
|
]),
|
|
})
|
|
}
|
|
}
|
|
},
|
|
)
|
|
}, 60 * 1000)
|
|
}
|
|
function InitTTS() {
|
|
try {
|
|
const result = EasySpeech.detect()
|
|
if (result.speechSynthesis) {
|
|
EasySpeech.init({ maxTimeout: 5000, interval: 250 })
|
|
.then(() => console.log('[SpeechSynthesis] 已加载tts服务'))
|
|
.catch(e => console.error(e))
|
|
}
|
|
else {
|
|
console.log('[SpeechSynthesis] 当前浏览器不支持tts服务')
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log('[SpeechSynthesis] 当前浏览器不支持tts服务')
|
|
}
|
|
} |