From 45bc8485b37ed2541b703fccb810b759fc9b255a Mon Sep 17 00:00:00 2001 From: Megghy Date: Thu, 14 Nov 2024 15:37:25 +0800 Subject: [PATCH] add rtc feature, set payment page to wip state --- bun.lockb | Bin 499616 -> 498108 bytes index.html | 1 + package.json | 24 +-- plugins/vite-plugin-caddy.ts | 49 ++++++ src/api/account.ts | 100 ++++++++---- src/data/RTCClient.ts | 192 +++++++++++++++++++++++ src/router/index.ts | 2 +- src/router/singlePage.ts | 12 +- src/store/useAuthStore.ts | 1 + src/store/useRTC.ts | 44 ++++++ src/store/useVTsuruHub.ts | 106 +++++++++++++ src/views/TestView.vue | 36 +++++ src/views/manage/DashboardView.vue | 3 +- src/views/manage/Setting_PaymentView.vue | 5 +- src/views/obs/MusicRequestOBS.vue | 2 + src/views/obs/QuestionDisplayOBS.vue | 2 + src/views/obs/QueueOBS.vue | 2 + vite.config.mts | 15 +- 18 files changed, 544 insertions(+), 52 deletions(-) create mode 100644 plugins/vite-plugin-caddy.ts create mode 100644 src/data/RTCClient.ts create mode 100644 src/store/useRTC.ts create mode 100644 src/store/useVTsuruHub.ts create mode 100644 src/views/TestView.vue diff --git a/bun.lockb b/bun.lockb index d968990dab5ef96dcd4a500ced1aa5df3a2cf9b9..f5f509f30951dc6c3446efe43ebead11eb0035ce 100644 GIT binary patch delta 102816 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

Jj+_FCxps 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∨_$ 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 AssI20 diff --git a/index.html b/index.html index e9d98f3..fa148af 100644 --- a/index.html +++ b/index.html @@ -15,6 +15,7 @@ + diff --git a/package.json b/package.json index 9f91083..987b18b 100644 --- a/package.json +++ b/package.json @@ -11,21 +11,22 @@ "dependencies": { "@microsoft/signalr": "^8.0.7", "@microsoft/signalr-protocol-msgpack": "^8.0.7", - "@types/node": "^22.8.2", - "@typescript-eslint/eslint-plugin": "^8.12.1", + "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^8.13.0", "@vicons/fluent": "^0.12.0", + "@vitejs/plugin-basic-ssl": "^1.1.0", "@vitejs/plugin-vue": "^5.1.4", "@vue/cli": "^5.0.8", - "@vueuse/core": "^11.1.0", - "@vueuse/router": "^11.1.0", + "@vueuse/core": "^11.2.0", + "@vueuse/router": "^11.2.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", "date-fns": "^4.1.0", "easy-speech": "^2.4.0", "echarts": "^5.5.1", - "eslint": "^9.13.0", + "eslint": "^9.14.0", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-oxlint": "^0.10.1", + "eslint-plugin-oxlint": "^0.11.0", "eslint-plugin-prettier": "^5.2.1", "fast-xml-parser": "^4.5.0", "file-saver": "^2.0.5", @@ -34,9 +35,10 @@ "linqts": "^2.0.0", "mitt": "^3.0.1", "music-metadata-browser": "^2.5.11", - "pinia": "^2.2.4", + "peerjs": "^1.5.4", + "pinia": "^2.2.6", "prettier": "^3.3.3", - "qrcode.vue": "^3.5.1", + "qrcode.vue": "^3.6.0", "queue-typescript": "^1.0.1", "unplugin-vue-markdown": "^0.26.2", "uuid": "^11.0.2", @@ -50,16 +52,16 @@ "vue3-aplayer": "^1.7.3", "vue3-marquee": "^4.2.2", "vueuc": "^0.4.64", - "worker-timers": "^8.0.10", + "worker-timers": "^8.0.11", "xlsx": "^0.18.5" }, "devDependencies": { "@eslint/eslintrc": "^3.1.0", - "@types/bun": "^1.1.12", + "@types/bun": "^1.1.13", "@types/eslint": "^9.6.1", "@types/obs-studio": "^2.17.2", "@types/uuid": "^10.0.0", - "@typescript-eslint/parser": "^8.12.1", + "@typescript-eslint/parser": "^8.13.0", "@vicons/ionicons5": "^0.12.0", "@vitejs/plugin-vue-jsx": "^4.0.1", "@vue/eslint-config-typescript": "^14.1.3", diff --git a/plugins/vite-plugin-caddy.ts b/plugins/vite-plugin-caddy.ts new file mode 100644 index 0000000..69df042 --- /dev/null +++ b/plugins/vite-plugin-caddy.ts @@ -0,0 +1,49 @@ +// src/index.ts +import chalk from 'chalk' +import { spawn } from 'child_process' + +// src/utils.ts +import { execSync } from 'child_process' +function validateCaddyIsInstalled() { + let caddyInstalled = false + try { + execSync('caddy version') + caddyInstalled = true + } catch { + caddyInstalled = false + console.error('caddy cli is not installed') + } + return caddyInstalled +} + +// src/index.ts +function viteCaddyTlsPlugin(url?:string) { + return { + name: 'vite:caddy-tls', + async configResolved({ command }) { + if (command !== 'serve') return + console.log('starting caddy plugin...') + validateCaddyIsInstalled() + const handle = spawn( + `caddy reverse-proxy ${url ? `--from ${url}` : ''} --to http://localhost:5173`, + { + shell: true + } + ) + handle.stdout.on('data', (data) => { + console.log(`stdout: ${data}`) + }) + handle.stderr.on('data', () => {}) + //const servers = parseNamesFromCaddyFile(`${cwd}/Caddyfile`); + console.log() + console.log( + chalk.green('\u{1F512} Caddy is running to proxy your traffic on https') + ) + console.log() + console.log(`\u{1F517} Access your local server `) + console.log(chalk.blue(`\u{1F30D} https://${url ?? 'localhost'}`)) + console.log() + } + } +} +export { viteCaddyTlsPlugin as default } diff --git a/src/api/account.ts b/src/api/account.ts index 64fe061..f544c07 100644 --- a/src/api/account.ts +++ b/src/api/account.ts @@ -9,7 +9,6 @@ import { useRoute } from 'vue-router' export const ACCOUNT = ref({} as AccountInfo) export const isLoadingAccount = ref(true) -const route = useRoute() const { message } = createDiscreteApi(['message']) const cookie = useLocalStorage('JWT_Token', '') @@ -47,6 +46,7 @@ export async function GetSelfAccount() { } export function UpdateAccountLoop() { setInterval(() => { + const route = useRoute() if (ACCOUNT.value && route?.name != 'question-display') { // 防止在问题详情页刷新 GetSelfAccount() @@ -63,47 +63,68 @@ function refreshCookie() { }) } export async function SaveAccountSettings() { - return await QueryPostAPI(ACCOUNT_API_URL + 'update-setting', ACCOUNT.value?.settings) + return await QueryPostAPI( + ACCOUNT_API_URL + 'update-setting', + ACCOUNT.value?.settings + ) } export async function SaveEnableFunctions(functions: FunctionTypes[]) { - return await QueryPostAPI(ACCOUNT_API_URL + 'update-enable-functions', functions) + return await QueryPostAPI( + ACCOUNT_API_URL + 'update-enable-functions', + functions + ) } export async function SaveSetting( - name: 'Queue' | 'Point' | 'Index' | 'General' | 'QuestionDisplay' | 'SongRequest' | 'QuestionBox' | 'SendEmail', - setting: unknown, + name: + | 'Queue' + | 'Point' + | 'Index' + | 'General' + | 'QuestionDisplay' + | 'SongRequest' + | 'QuestionBox' + | 'SendEmail', + setting: unknown ) { const result = await QueryPostAPIWithParams( ACCOUNT_API_URL + 'update-single-setting', { - name, + name }, - setting, + setting ) return result.message } export async function UpdateFunctionEnable(func: FunctionTypes) { if (ACCOUNT.value) { - const oldValue = JSON.parse(JSON.stringify(ACCOUNT.value.settings.enableFunctions)) + const oldValue = JSON.parse( + JSON.stringify(ACCOUNT.value.settings.enableFunctions) + ) if (ACCOUNT.value?.settings.enableFunctions.includes(func)) { - ACCOUNT.value.settings.enableFunctions = ACCOUNT.value.settings.enableFunctions.filter((f) => f != func) + ACCOUNT.value.settings.enableFunctions = + ACCOUNT.value.settings.enableFunctions.filter((f) => f != func) } else { ACCOUNT.value.settings.enableFunctions.push(func) } await SaveEnableFunctions(ACCOUNT.value?.settings.enableFunctions) .then((data) => { if (data.code == 200) { - message.success(`已${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}`) + message.success( + `已${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}` + ) } else { if (ACCOUNT.value) { ACCOUNT.value.settings.enableFunctions = oldValue } message.error( - `${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}失败: ${data.message}`, + `${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}失败: ${data.message}` ) } }) .catch((err) => { - message.error(`${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}失败: ${err}`) + message.error( + `${ACCOUNT.value?.settings.enableFunctions.includes(func) ? '启用' : '禁用'}失败: ${err}` + ) }) } } @@ -111,74 +132,85 @@ export function useAccount() { return ACCOUNT } -export async function Register(name: string, email: string, password: string, token: string): Promise> { +export async function Register( + name: string, + email: string, + password: string, + token: string +): Promise> { return QueryPostAPI(`${ACCOUNT_API_URL}register`, { name, email, password, - token, + token }) } -export async function Login(nameOrEmail: string, password: string): Promise> { +export async function Login( + nameOrEmail: string, + password: string +): Promise> { return QueryPostAPI(`${ACCOUNT_API_URL}login`, { nameOrEmail, - password, + password }) } export async function Self(): Promise> { return QueryPostAPI(`${ACCOUNT_API_URL}self`) } -export async function AddBiliBlackList(id: number, name: string): Promise> { +export async function AddBiliBlackList( + id: number, + name: string +): Promise> { return QueryGetAPI(`${ACCOUNT_API_URL}black-list/add-bili`, { id: id, - name: name, + name: name }) } export async function DelBiliBlackList(id: number): Promise> { return QueryGetAPI(`${ACCOUNT_API_URL}black-list/del-bili`, { - id: id, + id: id }) } export async function DelBlackList(id: number): Promise> { return QueryGetAPI(`${ACCOUNT_API_URL}black-list/del`, { - id: id, + id: id }) } export function downloadConfigDirect(name: string) { return QueryGetAPI(VTSURU_API_URL + 'get-config', { - name: name, + name: name }) } export async function DownloadConfig(name: string) { try { const resp = await QueryGetAPI(VTSURU_API_URL + 'get-config', { - name: name, + name: name }) if (resp.code == 200) { console.log('已获取配置文件: ' + name) return { msg: undefined, - data: JSON.parse(resp.data) as T, + data: JSON.parse(resp.data) as T } } else if (resp.code == 404) { console.error(`未找到名为 ${name} 的配置文件`) return { msg: `未找到名为 ${name} 的配置文件, 需要先上传`, - data: undefined, + data: undefined } } else { console.error(`无法获取配置文件 [${name}]: ` + resp.message) return { msg: `无法获取配置文件 [${name}]: ` + resp.message, - data: undefined, + data: undefined } } } catch (err) { console.error(`无法获取配置文件 [${name}]: ` + err) return { msg: `无法获取配置文件 [${name}]: ` + err, - data: undefined, + data: undefined } } } @@ -186,7 +218,7 @@ export async function UploadConfig(name: string, data: unknown) { try { const resp = await QueryPostAPI(VTSURU_API_URL + 'set-config', { name: name, - json: JSON.stringify(data), + json: JSON.stringify(data) }) if (resp.code == 200) { console.log('已保存配置文件至服务器:' + name) @@ -208,7 +240,10 @@ export async function EnableFunction(func: FunctionTypes) { if (await updateFunctionEnable()) { return true } else { - ACCOUNT.value.settings.enableFunctions.splice(ACCOUNT.value.settings.enableFunctions.indexOf(func), 1) + ACCOUNT.value.settings.enableFunctions.splice( + ACCOUNT.value.settings.enableFunctions.indexOf(func), + 1 + ) return false } } @@ -220,7 +255,10 @@ export async function DisableFunction(func: FunctionTypes) { if (!ACCOUNT.value.settings.enableFunctions.includes(func)) { return true } else { - ACCOUNT.value.settings.enableFunctions.splice(ACCOUNT.value.settings.enableFunctions.indexOf(func), 1) + ACCOUNT.value.settings.enableFunctions.splice( + ACCOUNT.value.settings.enableFunctions.indexOf(func), + 1 + ) if (await updateFunctionEnable()) { return true } else { @@ -234,7 +272,9 @@ export async function DisableFunction(func: FunctionTypes) { async function updateFunctionEnable() { if (ACCOUNT.value) { try { - const data = await SaveEnableFunctions(ACCOUNT.value.settings.enableFunctions) + const data = await SaveEnableFunctions( + ACCOUNT.value.settings.enableFunctions + ) if (data.code == 200) { return true } else { diff --git a/src/data/RTCClient.ts b/src/data/RTCClient.ts new file mode 100644 index 0000000..a1cc30a --- /dev/null +++ b/src/data/RTCClient.ts @@ -0,0 +1,192 @@ +import { useAccount } from '@/api/account' +import { useVTsuruHub } from '@/store/useVTsuruHub' +import Peer, { DataConnection } from 'peerjs' +import { Ref, ref } from 'vue' + +export interface ComponentsEventHubModel { + IsMaster: boolean + Token: string +} +export interface RTCData { + Key: string + Data: any +} + +abstract class BaseRTCClient { + constructor(user: string, pass: string) { + this.user = user + this.pass = pass + } + + protected user: string + protected pass: string + protected vhub = useVTsuruHub() + + public isInited = false + + public peer?: Peer + + protected connections: DataConnection[] = [] + + protected events: { + [key: string]: ((args: unknown) => void)[] + } = {} + + abstract type: 'master' | 'slave' + + public on(eventName: string, listener: (args: unknown) => void) { + eventName = eventName.toLowerCase() + if (!this.events[eventName]) { + this.events[eventName] = [] + } + this.events[eventName].push(listener) + } + public off(eventName: string, listener: (args: unknown) => void) { + if (this.events[eventName]) { + const index = this.events[eventName].indexOf(listener) + if (index > -1) { + this.events[eventName].splice(index, 1) + } + } + } + public send(eventName: string, data: unknown) { + this.connections.forEach((item) => + item.send({ + Key: eventName, + Data: data + }) + ) + } + + protected connectRTC() { + //console.log('[Components-Event] 正在连接到 PeerJS 服务器...') + this.peer = new Peer({ + host: 'peer.suki.club', + port: 443, + key: 'vtsuru', + secure: true, + config: { + iceServers: [ + { urls: 'stun:turn.suki.club' }, + { + urls: 'turn:turn.suki.club', + username: this.user, + credential: this.pass + } + ] + } + //debug: 3 + }) + + this.peer?.on('open', async (id) => { + console.log('[Components-Event] 已连接到 PeerJS 服务器: ' + id) + this.vhub?.send('SetRTCToken', id, this.type == 'master') + }) + this.peer?.on('error', (err) => { + console.error(err) + }) + this.peer?.on('close', () => { + console.log('[Components-Event] PeerJS 连接已关闭') + }) + this.peer?.on('disconnected', () => { + console.log('[Components-Event] PeerJS 连接已断开') + this.peer?.reconnect() + }) + } + public processData(data: RTCData) { + //console.log(data) + if (data.Key == 'Heartbeat') return + if (this.events[data.Key.toLowerCase()]) { + this.events[data.Key].forEach((item) => item(data.Data)) + } + } + public async getAllRTC() { + return ( + (await this.vhub.invoke('GetOnlineRTC')) || [] + ) + } + protected onConnectionClose(id: string) { + this.connections = this.connections.filter((item) => item.peer != id) + console.log( + `[Components-Event] <${this.connections.length}> ${this.type == 'master' ? 'Slave' : 'Master'} 下线: ` + + id + ) + } + + public Init() { + if (!this.isInited) { + this.isInited = true + this.connectRTC() + } + this.vhub.on('RTCOffline', (id: string) => this.onConnectionClose(id)) + return this + } +} + +export class SlaveRTCClient extends BaseRTCClient { + constructor(user: string, pass: string) { + super(user, pass) + } + type: 'slave' = 'slave' as const + public async connectToAllMaster() { + const masters = (await this.getAllRTC()).filter( + (item) => + item.IsMaster && + item.Token != this.peer!.id && + !this.connections.some((conn) => conn.peer == item.Token) + ) + masters.forEach((item) => { + this.connectToMaster(item.Token) + //console.log('[Components-Event] 正在连接到现有 Master: ' + item.Token) + }) + } + public connectToMaster(token: string) { + if (this.connections.some((conn) => conn.peer == token)) return + const c = this.peer?.connect(token) + c?.on('open', () => { + this.connections.push(c) + console.log( + `[Components-Event] <${this.connections.length}> ==> Master 连接已建立: ` + + token + ) + }) + c?.on('data', (data) => this.processData(data as RTCData)) + c?.on('close', () => this.onConnectionClose(c.peer)) + } + public Init() { + super.Init() + this.vhub?.on('MasterOnline', (data: string) => this.connectToMaster(data)) + setTimeout(() => { + this.connectToAllMaster() + }, 500) + setInterval(() => { + this.connectToAllMaster() + }, 30000) + + return this + } +} +export class MasterRTCClient extends BaseRTCClient { + constructor(user: string, pass: string) { + super(user, pass) + } + type: 'master' = 'master' as const + public connectRTC() { + super.connectRTC() + this.peer?.on('connection', (conn) => { + conn.on('open', () => { + this.connections.push(conn) + console.log( + `[Components-Event] <${this.connections.length}> Slave 上线: ` + + conn.peer + ) + }) + conn.on('data', (data) => this.processData(data as RTCData)) + conn.on('error', (err) => console.error(err)) + conn.on('close', () => this.onConnectionClose(conn.peer)) + }) + } + public Init() { + return super.Init() + } +} diff --git a/src/router/index.ts b/src/router/index.ts index b174d02..076ffdb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -97,7 +97,7 @@ const routes: Array = [ { path: '/:pathMatch(.*)*', name: 'notfound', - component: import('@/views/NotfoundView.vue'), + component: () => import('@/views/NotfoundView.vue'), meta: { title: '页面不存在', }, diff --git a/src/router/singlePage.ts b/src/router/singlePage.ts index 97c37f7..f32e4a0 100644 --- a/src/router/singlePage.ts +++ b/src/router/singlePage.ts @@ -4,7 +4,15 @@ export default [ name: 'question-display', component: () => import('@/views/single/QuestionDisplay.vue'), meta: { - title: '棉花糖展示页', - }, + title: '棉花糖展示页' + } }, + { + path: '/playground/test', + name: 'test', + component: () => import('@/views/TestView.vue'), + meta: { + title: '测试页' + } + } ] diff --git a/src/store/useAuthStore.ts b/src/store/useAuthStore.ts index 27879be..3212ba0 100644 --- a/src/store/useAuthStore.ts +++ b/src/store/useAuthStore.ts @@ -36,6 +36,7 @@ export const useAuthStore = defineStore('BiliAuth', () => { async function getAuthInfo() { try { isLoading.value = true + if(!currentToken.value) return await QueryBiliAuthGetAPI(BILI_AUTH_API_URL + 'info').then((data) => { if (data.code == 200) { biliAuth.value = data.data diff --git a/src/store/useRTC.ts b/src/store/useRTC.ts new file mode 100644 index 0000000..808fa5f --- /dev/null +++ b/src/store/useRTC.ts @@ -0,0 +1,44 @@ +import { useAccount } from '@/api/account' +import { MasterRTCClient, SlaveRTCClient } from '@/data/RTCClient' +import { acceptHMRUpdate, defineStore } from 'pinia' +import { ref } from 'vue' + +export const useWebRTC = defineStore('WebRTC', () => { + const masterClient = ref() + const slaveClient = ref() + const accountInfo = useAccount() + + function Init(type: 'master' | 'slave') { + if (type == 'master') { + if (masterClient.value) { + return masterClient + } else { + masterClient.value = new MasterRTCClient( + accountInfo.value.id.toString(), + accountInfo.value.token + ) + masterClient.value.Init() + return masterClient + } + } else { + if (slaveClient.value) { + return slaveClient + } else { + slaveClient.value = new SlaveRTCClient( + accountInfo.value.id.toString(), + accountInfo.value.token + ) + slaveClient.value.Init() + return slaveClient + } + } + } + + return { + Init + } +}) + +if (import.meta.hot) { + import.meta.hot.accept(acceptHMRUpdate(useWebRTC, import.meta.hot)) +} diff --git a/src/store/useVTsuruHub.ts b/src/store/useVTsuruHub.ts new file mode 100644 index 0000000..66afa7e --- /dev/null +++ b/src/store/useVTsuruHub.ts @@ -0,0 +1,106 @@ +import { useAccount } from '@/api/account' +import { BASE_HUB_URL } from '@/data/constants' +import { + HttpTransportType, + HubConnectionBuilder, + LogLevel +} from '@microsoft/signalr' +import { MessagePackHubProtocol } from '@microsoft/signalr-protocol-msgpack' +import { acceptHMRUpdate, defineStore } from 'pinia' +import { ref } from 'vue' + +export const useVTsuruHub = defineStore('VTsuruHub', () => { + const accountInfo = useAccount() + const signalRClient = ref() + const isInited = ref(false) + const isIniting = ref(false) + + async function connectSignalR() { + if (isIniting.value) return + isIniting.value = true + //console.log('[Components-Event] 正在连接到 VTsuru 服务器...') + const connection = new HubConnectionBuilder() + .withUrl(BASE_HUB_URL + 'main?token=' + accountInfo.value.token, { + skipNegotiation: true, + transport: HttpTransportType.WebSockets, + logger: LogLevel.Error + }) + .withAutomaticReconnect([0, 2000, 10000, 30000]) + .withHubProtocol(new MessagePackHubProtocol()) + .build() + connection.on('Finished', async () => { + connection.send('Finished') + }) + connection.on('Disconnect', (reason: unknown) => { + console.log('[Hub] 被 VTsuru 服务器断开连接: ' + reason) + }) + + connection.onclose(reconnect) + try { + await connection.start() + console.log('[Hub] 已连接到 VTsuru 服务器') + signalRClient.value = connection + isInited.value = true + return true + } catch (e) { + console.log('[Hub] 无法连接到 VTsuru 服务器: ' + e) + return false + } finally { + isIniting.value = false + } + } + async function reconnect() { + try { + await signalRClient.value?.start() + signalRClient.value?.send('Reconnected') + console.log('[Hub] 已重新连接') + } catch (err) { + console.log(err) + setTimeout(reconnect, 5000) // 如果连接失败,则每5秒尝试一次重新启动连接 + } + } + + async function send(methodName: string, ...args: any[]) { + if (!isInited.value) { + await connectSignalR() + } + signalRClient.value?.send(methodName, ...args) + } + async function invoke(methodName: string, ...args: any[]) { + if (!isInited.value) { + await connectSignalR() + } + return signalRClient.value?.invoke(methodName, ...args) + } + async function on(eventName: string, listener: (args: any) => any) { + if (!isInited.value) { + await connectSignalR() + } + signalRClient.value?.on(eventName, listener) + } + async function off(eventName: string, listener: (args: any) => any) { + if (!isInited.value) { + await connectSignalR() + } + signalRClient.value?.off(eventName, listener) + } + async function onreconnected(listener: (id: any) => any) { + if (!isInited.value) { + await connectSignalR() + } + signalRClient.value?.onreconnected(listener) + } + + function Init() { + if (!isInited.value) { + connectSignalR() + } + return useVTsuruHub() + } + + return { signalRClient, Init, send, invoke, on, off, onreconnected } +}) + +if (import.meta.hot) { + import.meta.hot.accept(acceptHMRUpdate(useVTsuruHub, import.meta.hot)) +} diff --git a/src/views/TestView.vue b/src/views/TestView.vue new file mode 100644 index 0000000..8c38a58 --- /dev/null +++ b/src/views/TestView.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/src/views/manage/DashboardView.vue b/src/views/manage/DashboardView.vue index 0d81f4b..997258b 100644 --- a/src/views/manage/DashboardView.vue +++ b/src/views/manage/DashboardView.vue @@ -486,6 +486,8 @@ onUnmounted(() => { + + - diff --git a/src/views/manage/Setting_PaymentView.vue b/src/views/manage/Setting_PaymentView.vue index 4c3f880..a32ef8a 100644 --- a/src/views/manage/Setting_PaymentView.vue +++ b/src/views/manage/Setting_PaymentView.vue @@ -36,7 +36,10 @@ onMounted(() => {