From 62563c365e1b2b4b8cbdbfeec0adea3acbd958b0 Mon Sep 17 00:00:00 2001 From: lq Date: Fri, 4 Jul 2025 12:56:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + pnpm-lock.yaml | 34 ++ src/components/CallInviteDialog.vue | 487 +++++++++++++++ src/components/MediaPreview.vue | 32 +- src/components/MessageBubble.vue | 85 ++- src/components/SettingsModal.vue | 831 ++++++++++++++++++-------- src/components/SideNavigation.vue | 455 ++++++++------ src/components/UserProfileModal.vue | 657 +++++++++++--------- src/components/VideoCallComponent.vue | 445 +++++++++----- src/composables/useMediaPreview.js | 39 +- src/composables/useWebRTC.js | 132 ++++ src/composables/useWebSocket.js | 282 +++++++-- src/views/Chat.vue | 2 +- 13 files changed, 2501 insertions(+), 981 deletions(-) create mode 100644 src/components/CallInviteDialog.vue create mode 100644 src/composables/useWebRTC.js diff --git a/package.json b/package.json index 1d69479..b32b9ec 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@ant-design/icons-vue": "^7.0.1", "@fortawesome/fontawesome-free": "^6.7.2", "@tailwindcss/vite": "^4.1.4", + "@vueuse/core": "^13.5.0", "@vueuse/head": "^2.0.0", "ant-design-vue": "^4.1.1", "axios": "^1.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87b22cc..b5ab189 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@tailwindcss/vite': specifier: ^4.1.4 version: 4.1.4(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.88.0)) + '@vueuse/core': + specifier: ^13.5.0 + version: 13.5.0(vue@3.5.13) '@vueuse/head': specifier: ^2.0.0 version: 2.0.0(vue@3.5.13) @@ -551,6 +554,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@unhead/dom@1.11.20': resolution: {integrity: sha512-jgfGYdOH+xHJF/j8gudjsYu3oIjFyXhCWcgKaw3vQnT616gSqyqnGQGOItL+BQtQZACKNISwIfx5PuOtztMKLA==} @@ -607,11 +613,24 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vueuse/core@13.5.0': + resolution: {integrity: sha512-wV7z0eUpifKmvmN78UBZX8T7lMW53Nrk6JP5+6hbzrB9+cJ3jr//hUlhl9TZO/03bUkMK6gGkQpqOPWoabr72g==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/head@2.0.0': resolution: {integrity: sha512-ykdOxTGs95xjD4WXE4na/umxZea2Itl0GWBILas+O4oqS7eXIods38INvk3XkJKjqMdWPcpCyLX/DioLQxU1KA==} peerDependencies: vue: '>=2.7 || >=3' + '@vueuse/metadata@13.5.0': + resolution: {integrity: sha512-euhItU3b0SqXxSy8u1XHxUCdQ8M++bsRs+TYhOLDU/OykS7KvJnyIFfep0XM5WjIFry9uAPlVSjmVHiqeshmkw==} + + '@vueuse/shared@13.5.0': + resolution: {integrity: sha512-K7GrQIxJ/ANtucxIXbQlUHdB0TPA8c+q5i+zbrjxuhJCnJ9GtBg75sBSnvmLSxHKPg2Yo8w62PWksl9kwH0Q8g==} + peerDependencies: + vue: ^3.5.0 + ant-design-vue@4.2.6: resolution: {integrity: sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==} engines: {node: '>=12.22.0'} @@ -1402,6 +1421,8 @@ snapshots: '@types/estree@1.0.7': {} + '@types/web-bluetooth@0.0.21': {} + '@unhead/dom@1.11.20': dependencies: '@unhead/schema': 1.11.20 @@ -1491,6 +1512,13 @@ snapshots: '@vue/shared@3.5.13': {} + '@vueuse/core@13.5.0(vue@3.5.13)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.5.0 + '@vueuse/shared': 13.5.0(vue@3.5.13) + vue: 3.5.13 + '@vueuse/head@2.0.0(vue@3.5.13)': dependencies: '@unhead/dom': 1.11.20 @@ -1499,6 +1527,12 @@ snapshots: '@unhead/vue': 1.11.20(vue@3.5.13) vue: 3.5.13 + '@vueuse/metadata@13.5.0': {} + + '@vueuse/shared@13.5.0(vue@3.5.13)': + dependencies: + vue: 3.5.13 + ant-design-vue@4.2.6(vue@3.5.13): dependencies: '@ant-design/colors': 6.0.0 diff --git a/src/components/CallInviteDialog.vue b/src/components/CallInviteDialog.vue new file mode 100644 index 0000000..1342805 --- /dev/null +++ b/src/components/CallInviteDialog.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/src/components/MediaPreview.vue b/src/components/MediaPreview.vue index 1062eaf..3c0ce98 100644 --- a/src/components/MediaPreview.vue +++ b/src/components/MediaPreview.vue @@ -1,19 +1,19 @@