From 0e73c2569a0165e2b1c4a0918f135ed6eda11246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E6=99=93=E6=B5=A9?= <1923911906@qq.com> Date: Sun, 28 Apr 2024 13:45:39 +0800 Subject: [PATCH] feat: theme switch; fix: pwa config; fix: pwa nginx config --- packages/web-chat-x-vue/default.conf | 14 +++++++- packages/web-chat-x-vue/index.html | 5 ++- .../web-chat-x-vue/public/WebChatX_192.svg | 1 + .../web-chat-x-vue/public/WebChatX_512.svg | 1 + .../web-chat-x-vue/src/classes/ChatChannel.ts | 2 ++ .../web-chat-x-vue/src/classes/ChatUser.ts | 2 ++ .../src/classes/Libp2pManager.ts | 34 +++++++++++-------- .../src/components/SetAdvancedComponent.vue | 4 +++ .../src/components/SetGeneralComponent.vue | 12 ++++++- .../src/components/SwitchComponent.vue | 13 ++----- packages/web-chat-x-vue/src/hooks/useDark.ts | 26 +++----------- packages/web-chat-x-vue/src/router/index.ts | 2 +- .../libp2p/current/libp2pManagerClient2.ts | 2 +- packages/web-chat-x-vue/src/types/global.d.ts | 1 + packages/web-chat-x-vue/vite.config.ts | 5 +-- 15 files changed, 69 insertions(+), 55 deletions(-) create mode 100644 packages/web-chat-x-vue/public/WebChatX_192.svg create mode 100644 packages/web-chat-x-vue/public/WebChatX_512.svg diff --git a/packages/web-chat-x-vue/default.conf b/packages/web-chat-x-vue/default.conf index b7f862f..db4f323 100644 --- a/packages/web-chat-x-vue/default.conf +++ b/packages/web-chat-x-vue/default.conf @@ -13,7 +13,19 @@ server { } location ^~/libp2p/ { - proxy_pass http://web-chat-x-express:8098/; + proxy_pass http://web-chat-x-express:8100/; + } + + # MIME类型设置 + types { + application/manifest+json manifest.webmanifest; + } + + # 针对PWA关键文件的缓存控制 + location ~* ^(\/sw\.js|\/index\.html|\/manifest\.webmanifest)$ { + add_header Cache-Control "no-cache, no-store, must-revalidate"; + add_headerPragma "no-cache"; + add_header Expires "0"; } location / { diff --git a/packages/web-chat-x-vue/index.html b/packages/web-chat-x-vue/index.html index eee328f..635eafc 100644 --- a/packages/web-chat-x-vue/index.html +++ b/packages/web-chat-x-vue/index.html @@ -2,8 +2,11 @@ - + + + + WebChatX diff --git a/packages/web-chat-x-vue/public/WebChatX_192.svg b/packages/web-chat-x-vue/public/WebChatX_192.svg new file mode 100644 index 0000000..259095f --- /dev/null +++ b/packages/web-chat-x-vue/public/WebChatX_192.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/web-chat-x-vue/public/WebChatX_512.svg b/packages/web-chat-x-vue/public/WebChatX_512.svg new file mode 100644 index 0000000..8f20e7f --- /dev/null +++ b/packages/web-chat-x-vue/public/WebChatX_512.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/web-chat-x-vue/src/classes/ChatChannel.ts b/packages/web-chat-x-vue/src/classes/ChatChannel.ts index 4e6537c..053ecd3 100644 --- a/packages/web-chat-x-vue/src/classes/ChatChannel.ts +++ b/packages/web-chat-x-vue/src/classes/ChatChannel.ts @@ -7,6 +7,7 @@ export default class ChatChannel implements ChatChannelInfo { friends: ChatUserInfo[]; channels: ChatChannelInfo[]; relayMultiaddrs: string[]; + stunTurn: string[]; unique: string = "currentUser"; avatar: string; name: string; @@ -32,6 +33,7 @@ export default class ChatChannel implements ChatChannelInfo { this.description = description; this.friends = []; this.relayMultiaddrs = []; + this.stunTurn = []; this.channels = []; this.avatar = ""; this.email = ""; diff --git a/packages/web-chat-x-vue/src/classes/ChatUser.ts b/packages/web-chat-x-vue/src/classes/ChatUser.ts index f233643..db00e35 100644 --- a/packages/web-chat-x-vue/src/classes/ChatUser.ts +++ b/packages/web-chat-x-vue/src/classes/ChatUser.ts @@ -16,6 +16,7 @@ export default class ChatUser implements ChatUserInfo { password: string; hashedPassword: string; relayMultiaddrs: string[]; + stunTurn: string[]; constructor( id: string, peerId: PeerId, @@ -33,6 +34,7 @@ export default class ChatUser implements ChatUserInfo { this.friends = []; this.channels = []; this.relayMultiaddrs = []; + this.stunTurn = []; this.avatar = ""; this.email = ""; this.phone = ""; diff --git a/packages/web-chat-x-vue/src/classes/Libp2pManager.ts b/packages/web-chat-x-vue/src/classes/Libp2pManager.ts index ba61cfc..efc7534 100644 --- a/packages/web-chat-x-vue/src/classes/Libp2pManager.ts +++ b/packages/web-chat-x-vue/src/classes/Libp2pManager.ts @@ -9,7 +9,7 @@ import { echo } from "@libp2p/echo"; import * as filters from "@libp2p/websockets/filters"; import { KadDHT, kadDHT } from "@libp2p/kad-dht"; import { PeerId, PeerStore, Stream } from "@libp2p/interface"; -import { Multiaddr } from "@multiformats/multiaddr"; +import { Multiaddr, multiaddr } from "@multiformats/multiaddr"; import { GossipSub, gossipsub } from "@chainsafe/libp2p-gossipsub"; import ChatUser from "./ChatUser"; import ChatChannel from "./ChatChannel"; @@ -21,7 +21,17 @@ export class Libp2pManager { private peerStore: PeerStore | undefined; private friends: ChatUser[] | undefined; private channels: ChatChannel[] | undefined; + private relayMultiaddr: Multiaddr = multiaddr( + "/dns/webchatx.mayuan.work/tcp/9000/ws/p2p/12D3KooWFzsY7wUBHwbrz6m9nFfLCDwqLD4LS9JykKxSZ4zqG7Pg" + ); + getRelayMultiaddr(): Multiaddr { + return this.relayMultiaddr; + } + setRelayMultiaddr(relayMultiaddr: Multiaddr): Multiaddr { + this.relayMultiaddr = relayMultiaddr; + return this.relayMultiaddr; + } // Getter for libp2p getLibp2p(): Libp2p | undefined { return this.libp2p; @@ -103,9 +113,8 @@ export class Libp2pManager { this.peerStore = this.libp2p.peerStore; } - async startLibp2pNode( - relayMultiaddrs: Multiaddr[] | Multiaddr - ): Promise { + async startLibp2pNode(relayMultiaddr: Multiaddr): Promise { + relayMultiaddr && this.setRelayMultiaddr(relayMultiaddr); return new Promise(async (resolve, reject) => { const timeIntervalStart = () => { const timeInterval = setInterval(() => { @@ -146,7 +155,7 @@ export class Libp2pManager { await this.libp2p!.start(); try { await this.libp2p!.dialProtocol( - relayMultiaddrs, + this.relayMultiaddr, this.libp2p!.getProtocols(), { signal: AbortSignal.timeout(5000), @@ -154,7 +163,7 @@ export class Libp2pManager { ); timeIntervalStart(); } catch (error) { - reject(new Error("FindPeer Failed")); + reject(error); } }); } @@ -176,11 +185,9 @@ export class Libp2pManager { } } - async connectFriendLibp2p( - multiaddr: Multiaddr[] | Multiaddr - ): Promise { + async connectFriendLibp2p(multiaddr: Multiaddr): Promise { return new Promise(async (resolve) => { - const timeIntervalStart = (multiaddr: Multiaddr[] | Multiaddr) => { + const timeIntervalStart = (multiaddr: Multiaddr) => { const timeInterval = setInterval(async () => { try { const stream = await this.libp2p?.dialProtocol( @@ -198,10 +205,7 @@ export class Libp2pManager { }); } - async sendMessage( - multiaddr: Multiaddr[] | Multiaddr, - message: string - ): Promise { + async sendMessage(multiaddr: Multiaddr, message: string): Promise { return new Promise(async (_, reject) => { try { const stream = await this.connectFriendLibp2p(multiaddr); @@ -223,7 +227,7 @@ export class Libp2pManager { }); } - async connectVideo(multiaddr: Multiaddr[] | Multiaddr) { + async connectVideo(multiaddr: Multiaddr) { return new Promise(async (_, reject) => { try { await this.connectFriendLibp2p(multiaddr); diff --git a/packages/web-chat-x-vue/src/components/SetAdvancedComponent.vue b/packages/web-chat-x-vue/src/components/SetAdvancedComponent.vue index aacac3a..23ac5c5 100644 --- a/packages/web-chat-x-vue/src/components/SetAdvancedComponent.vue +++ b/packages/web-chat-x-vue/src/components/SetAdvancedComponent.vue @@ -5,6 +5,9 @@ + + + 保存 @@ -24,6 +27,7 @@ const save = () => { } catch (error: any) { console.log(error.message); user.value.relayMultiaddrs[0] = ""; + user.value.stunTurn[0] = ""; return; } // 如果仍在任务在队列的话,清除该宏任务,重新设置任务 diff --git a/packages/web-chat-x-vue/src/components/SetGeneralComponent.vue b/packages/web-chat-x-vue/src/components/SetGeneralComponent.vue index 8e3fad9..9a449d1 100644 --- a/packages/web-chat-x-vue/src/components/SetGeneralComponent.vue +++ b/packages/web-chat-x-vue/src/components/SetGeneralComponent.vue @@ -1,2 +1,12 @@ + - diff --git a/packages/web-chat-x-vue/src/components/SwitchComponent.vue b/packages/web-chat-x-vue/src/components/SwitchComponent.vue index 5a5688e..3517c66 100644 --- a/packages/web-chat-x-vue/src/components/SwitchComponent.vue +++ b/packages/web-chat-x-vue/src/components/SwitchComponent.vue @@ -1,13 +1,5 @@