diff --git a/components.d.ts b/components.d.ts index a2be2a7..01127df 100644 --- a/components.d.ts +++ b/components.d.ts @@ -13,10 +13,26 @@ declare module 'vue' { AppLoading: typeof import('./src/components/common/AppLoading.vue')['default'] AppLogos: typeof import('./src/components/AppLogos.vue')['default'] AppNavBar: typeof import('./src/components/common/AppNavBar.vue')['default'] + AppTabBar: typeof import('./src/components/common/AppTabBar.vue')['default'] + CallWindow: typeof import('./src/components/call/CallWindow.vue')['default'] + GroupCallBanner: typeof import('./src/components/call/GroupCallBanner.vue')['default'] + GroupCallIncoming: typeof import('./src/components/call/GroupCallIncoming.vue')['default'] + GroupCallModal: typeof import('./src/components/call/GroupCallModal.vue')['default'] + GroupCallWindow: typeof import('./src/components/call/GroupCallWindow.vue')['default'] + ImagePreview: typeof import('./src/components/common/ImagePreview.vue')['default'] InputEntry: typeof import('./src/components/InputEntry.vue')['default'] + MentionPicker: typeof import('./src/components/chat/MentionPicker.vue')['default'] MessageBubble: typeof import('./src/components/chat/MessageBubble.vue')['default'] MessageInput: typeof import('./src/components/chat/MessageInput.vue')['default'] MomentCard: typeof import('./src/components/moment/MomentCard.vue')['default'] + MomentCommentInput: typeof import('./src/components/moment/MomentCommentInput.vue')['default'] + MomentCommentList: typeof import('./src/components/moment/MomentCommentList.vue')['default'] + MomentNotificationPanel: typeof import('./src/components/moment/MomentNotificationPanel.vue')['default'] + SelectContactsModal: typeof import('./src/components/chat/SelectContactsModal.vue')['default'] + UserInfoCard: typeof import('./src/components/common/UserInfoCard.vue')['default'] + UserMomentsModal: typeof import('./src/components/moment/UserMomentsModal.vue')['default'] + VideoPlayer: typeof import('./src/components/common/VideoPlayer.vue')['default'] + VisibilitySelector: typeof import('./src/components/moment/VisibilitySelector.vue')['default'] WdActionSheet: typeof import('wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue')['default'] WdBadge: typeof import('wot-design-uni/components/wd-badge/wd-badge.vue')['default'] WdButton: typeof import('wot-design-uni/components/wd-button/wd-button.vue')['default'] diff --git a/package.json b/package.json index add7302..baf50e9 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@uni-helper/unh": "^0.2.7", "@uni-helper/uni-types": "^1.0.0-alpha.7", "@uni-helper/vite-plugin-uni-components": "^0.2.3", + "@uni-ku/root": "^1.4.1", "@vue/runtime-core": "3.4.21", "@vue/tsconfig": "^0.8.1", "eslint": "^9.39.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7929ec5..582370e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,6 +108,9 @@ importers: '@uni-helper/vite-plugin-uni-components': specifier: ^0.2.3 version: 0.2.3(rollup@4.53.3) + '@uni-ku/root': + specifier: ^1.4.1 + version: 1.4.1(vite@5.2.8(@types/node@24.10.1)(sass@1.64.2)(terser@5.44.1)) '@vue/runtime-core': specifier: 3.4.21 version: 3.4.21 @@ -1825,6 +1828,11 @@ packages: '@uni-helper/vite-plugin-uni-components@0.2.3': resolution: {integrity: sha512-in7jRYQnPkLg6W13dzz8mzHDuZC+OFc3qb8MrnmDQgniIxHfxJw8vaibL1au6gvq7ij3h6EHvhHaRytIJ2PkYw==} + '@uni-ku/root@1.4.1': + resolution: {integrity: sha512-DI9LLbWmPXjqJVwZTC84GuvSz9vzOgSUjbFrOE1y3kivttEReNVqwWM3n/kzFoNuS3KKm/DissOph4rFs912Zw==} + peerDependencies: + vite: ^5.0.0 + '@vitejs/plugin-legacy@5.3.2': resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8291,6 +8299,13 @@ snapshots: - rollup - supports-color + '@uni-ku/root@1.4.1(vite@5.2.8(@types/node@24.10.1)(sass@1.64.2)(terser@5.44.1))': + dependencies: + '@vue/compiler-sfc': 3.4.21 + chokidar: 3.6.0 + jsonc-parser: 3.3.1 + vite: 5.2.8(@types/node@24.10.1)(sass@1.64.2)(terser@5.44.1) + '@vitejs/plugin-legacy@5.3.2(terser@5.44.1)(vite@5.2.8(@types/node@24.10.1)(sass@1.64.2)(terser@5.44.1))': dependencies: '@babel/core': 7.25.2 diff --git a/src/App.ku.vue b/src/App.ku.vue new file mode 100644 index 0000000..d5c4033 --- /dev/null +++ b/src/App.ku.vue @@ -0,0 +1,12 @@ + + + + diff --git a/src/App.vue b/src/App.vue index 792b6a3..97d11f5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,38 @@ @@ -39,7 +72,10 @@ page { } /* 暗色模式下的 wot-design-uni 组件适配 */ -page.dark { +page.dark, +.dark, +html.dark, +body.dark { // Cell --wot-cell-bg-color: var(--bg-content); --wot-cell-title-color: var(--text-primary); diff --git a/src/api/modules/room.ts b/src/api/modules/room.ts index b6f3dd1..8d6c2a3 100644 --- a/src/api/modules/room.ts +++ b/src/api/modules/room.ts @@ -149,3 +149,8 @@ export function getGroupSettings(roomId: string) { updated_at: string }>(`/groups/${roomId}/settings`) } + +// 更新我在群里的昵称 +export function updateMyNickname(roomId: string, nickname: string) { + return request.post(`/groups/${roomId}/nickname`, { nickname }) +} \ No newline at end of file diff --git a/src/components/call/CallWindow.vue b/src/components/call/CallWindow.vue new file mode 100644 index 0000000..dd5388f --- /dev/null +++ b/src/components/call/CallWindow.vue @@ -0,0 +1,325 @@ + + + + + + diff --git a/src/components/call/GroupCallBanner.vue b/src/components/call/GroupCallBanner.vue new file mode 100644 index 0000000..dddb7a0 --- /dev/null +++ b/src/components/call/GroupCallBanner.vue @@ -0,0 +1,189 @@ + + + + + + diff --git a/src/components/call/GroupCallIncoming.vue b/src/components/call/GroupCallIncoming.vue new file mode 100644 index 0000000..d1c76a4 --- /dev/null +++ b/src/components/call/GroupCallIncoming.vue @@ -0,0 +1,295 @@ + + + + + + diff --git a/src/components/call/GroupCallModal.vue b/src/components/call/GroupCallModal.vue new file mode 100644 index 0000000..4e413c1 --- /dev/null +++ b/src/components/call/GroupCallModal.vue @@ -0,0 +1,346 @@ + + + + + + diff --git a/src/components/call/GroupCallWindow.vue b/src/components/call/GroupCallWindow.vue new file mode 100644 index 0000000..450033b --- /dev/null +++ b/src/components/call/GroupCallWindow.vue @@ -0,0 +1,474 @@ + + + + + + diff --git a/src/components/chat/MentionPicker.vue b/src/components/chat/MentionPicker.vue new file mode 100644 index 0000000..6eecf45 --- /dev/null +++ b/src/components/chat/MentionPicker.vue @@ -0,0 +1,154 @@ + + + + + + diff --git a/src/components/chat/MessageBubble.vue b/src/components/chat/MessageBubble.vue index 560c2e8..01f49ba 100644 --- a/src/components/chat/MessageBubble.vue +++ b/src/components/chat/MessageBubble.vue @@ -105,3 +105,10 @@ const bubbleClass = computed(() => { } } + + + + + + + diff --git a/src/components/chat/MessageInput.vue b/src/components/chat/MessageInput.vue index 1d0643b..262617c 100644 --- a/src/components/chat/MessageInput.vue +++ b/src/components/chat/MessageInput.vue @@ -1,10 +1,37 @@