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 @@
-
+
@@ -17,8 +9,7 @@