vue-chat-kit 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -119
- package/dist/vue-chat-kit.css +1 -1
- package/dist/vue-chat-kit.es.js +1524 -1389
- package/dist/vue-chat-kit.umd.js +1 -1
- package/package.json +1 -1
- package/src/components/AvatarCrop.vue +475 -170
- package/src/components/ChatPanel.vue +7 -1
- package/src/core/adapter-example.js +189 -0
|
@@ -996,7 +996,7 @@ const saveUserInfo = async () => {
|
|
|
996
996
|
|
|
997
997
|
// 生命周期
|
|
998
998
|
onMounted(async () => {
|
|
999
|
-
await Promise.all([getFriendList(), loadFriendApplyList()
|
|
999
|
+
await Promise.all([getFriendList(), loadFriendApplyList()])
|
|
1000
1000
|
initWebSocket()
|
|
1001
1001
|
if (filteredUsers.value.length > 0) {
|
|
1002
1002
|
selectChat(filteredUsers.value[0])
|
|
@@ -1207,7 +1207,13 @@ onUnmounted(() => {
|
|
|
1207
1207
|
border-radius: 9999px;
|
|
1208
1208
|
padding: 2px 6px;
|
|
1209
1209
|
min-width: 18px;
|
|
1210
|
+
min-height: 18px;
|
|
1211
|
+
height: 18px;
|
|
1212
|
+
display: inline-flex;
|
|
1213
|
+
align-items: center;
|
|
1214
|
+
justify-content: center;
|
|
1210
1215
|
text-align: center;
|
|
1216
|
+
line-height: 1;
|
|
1211
1217
|
}
|
|
1212
1218
|
|
|
1213
1219
|
/* 添加好友 */
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 聊天组件 API 适配器示例
|
|
3
|
+
*
|
|
4
|
+
* 使用方法:
|
|
5
|
+
* 1. 复制这个文件到你的项目中
|
|
6
|
+
* 2. 修改实现以符合你的后端 API
|
|
7
|
+
* 3. 在组件配置中传入 adapter
|
|
8
|
+
*
|
|
9
|
+
* const chatConfig = createChatConfig({
|
|
10
|
+
* api: {
|
|
11
|
+
* baseUrl: 'http://your-api.com',
|
|
12
|
+
* adapter: customAdapter
|
|
13
|
+
* }
|
|
14
|
+
* })
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export const customAdapter = {
|
|
18
|
+
/**
|
|
19
|
+
* 获取好友列表
|
|
20
|
+
* @param {string} currentUser - 当前用户名
|
|
21
|
+
* @returns {Promise<{code: number, data: Array}>}
|
|
22
|
+
*/
|
|
23
|
+
async getFriends(currentUser) {
|
|
24
|
+
// 你的实现
|
|
25
|
+
// 预期返回格式:
|
|
26
|
+
// {
|
|
27
|
+
// code: 200,
|
|
28
|
+
// data: [
|
|
29
|
+
// {
|
|
30
|
+
// username: 'friend1',
|
|
31
|
+
// nickname: '好友昵称',
|
|
32
|
+
// avatar: '头像地址',
|
|
33
|
+
// online: true,
|
|
34
|
+
// isChatting: true,
|
|
35
|
+
// lastMsg: '最后一条消息',
|
|
36
|
+
// lastTime: '2024-01-01 12:00:00'
|
|
37
|
+
// }
|
|
38
|
+
// ]
|
|
39
|
+
// }
|
|
40
|
+
console.log('getFriends 被调用, currentUser:', currentUser)
|
|
41
|
+
return { code: 200, data: [] }
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 获取聊天历史
|
|
46
|
+
* @param {string} fromUser - 发送者
|
|
47
|
+
* @param {string} toUser - 接收者
|
|
48
|
+
* @returns {Promise<{code: number, data: Array}>}
|
|
49
|
+
*/
|
|
50
|
+
async getHistory(fromUser, toUser) {
|
|
51
|
+
// 你的实现
|
|
52
|
+
// 预期返回格式:
|
|
53
|
+
// {
|
|
54
|
+
// code: 200,
|
|
55
|
+
// data: [
|
|
56
|
+
// {
|
|
57
|
+
// sendUsername: '发送者',
|
|
58
|
+
// receiveUsername: '接收者',
|
|
59
|
+
// msgContent: '消息内容',
|
|
60
|
+
// type: 'text' | 'file' | 'image',
|
|
61
|
+
// createTime: '2024-01-01 12:00:00',
|
|
62
|
+
// fileUrl: '文件地址',
|
|
63
|
+
// fileName: '文件名',
|
|
64
|
+
// fileSize: 1024,
|
|
65
|
+
// isRead: false
|
|
66
|
+
// }
|
|
67
|
+
// ]
|
|
68
|
+
// }
|
|
69
|
+
console.log('getHistory 被调用', { fromUser, toUser })
|
|
70
|
+
return { code: 200, data: [] }
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 标记消息已读
|
|
75
|
+
* @param {string} currentUser - 当前用户
|
|
76
|
+
* @param {string} friendUser - 好友用户名
|
|
77
|
+
* @returns {Promise<{code: number}>}
|
|
78
|
+
*/
|
|
79
|
+
async setRead(currentUser, friendUser) {
|
|
80
|
+
console.log('setRead 被调用', { currentUser, friendUser })
|
|
81
|
+
return { code: 200 }
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* 上传文件
|
|
86
|
+
* @param {File} file - 文件对象
|
|
87
|
+
* @returns {Promise<{code: number, data: {fileUrl: string, fileName: string}}>}
|
|
88
|
+
*/
|
|
89
|
+
async uploadFile(file) {
|
|
90
|
+
console.log('uploadFile 被调用, file:', file)
|
|
91
|
+
return { code: 200, data: { fileUrl: '', fileName: file.name } }
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* 获取可添加的用户列表
|
|
96
|
+
* @param {string} currentUser - 当前用户名
|
|
97
|
+
* @returns {Promise<{code: number, data: Array}>}
|
|
98
|
+
*/
|
|
99
|
+
async getAvailableUsers(currentUser) {
|
|
100
|
+
console.log('getAvailableUsers 被调用, currentUser:', currentUser)
|
|
101
|
+
return { code: 200, data: [] }
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* 添加好友
|
|
106
|
+
* @param {string} currentUser - 当前用户
|
|
107
|
+
* @param {string} friendUser - 要添加的好友用户名
|
|
108
|
+
* @returns {Promise<{code: number}>}
|
|
109
|
+
*/
|
|
110
|
+
async addFriend(currentUser, friendUser) {
|
|
111
|
+
console.log('addFriend 被调用', { currentUser, friendUser })
|
|
112
|
+
return { code: 200 }
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* 获取好友申请列表
|
|
117
|
+
* @param {string} currentUser - 当前用户名
|
|
118
|
+
* @returns {Promise<{code: number, data: Array}>}
|
|
119
|
+
*/
|
|
120
|
+
async getApplyList(currentUser) {
|
|
121
|
+
console.log('getApplyList 被调用, currentUser:', currentUser)
|
|
122
|
+
return { code: 200, data: [] }
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* 同意好友申请
|
|
127
|
+
* @param {string} applyUser - 申请者用户名
|
|
128
|
+
* @param {string} friendUser - 被申请者用户名
|
|
129
|
+
* @returns {Promise<{code: number}>}
|
|
130
|
+
*/
|
|
131
|
+
async agreeFriend(applyUser, friendUser) {
|
|
132
|
+
console.log('agreeFriend 被调用', { applyUser, friendUser })
|
|
133
|
+
return { code: 200 }
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* 设置聊天状态
|
|
138
|
+
* @param {string} currentUser - 当前用户
|
|
139
|
+
* @param {string} friendUser - 好友用户名
|
|
140
|
+
* @param {number} status - 状态 1=聊天中 0=关闭
|
|
141
|
+
* @returns {Promise<{code: number}>}
|
|
142
|
+
*/
|
|
143
|
+
async setChatStatus(currentUser, friendUser, status) {
|
|
144
|
+
console.log('setChatStatus 被调用', { currentUser, friendUser, status })
|
|
145
|
+
return { code: 200 }
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* 获取用户信息
|
|
150
|
+
* @param {string} username - 用户名
|
|
151
|
+
* @returns {Promise<{code: number, data: Object}>}
|
|
152
|
+
*/
|
|
153
|
+
async getUserInfo(username) {
|
|
154
|
+
console.log('getUserInfo 被调用, username:', username)
|
|
155
|
+
return { code: 200, data: { username, nickname: '', avatar: '', email: '', phone: '', bio: '' } }
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* 更新用户信息
|
|
160
|
+
* @param {string} username - 用户名
|
|
161
|
+
* @param {Object} data - 更新的数据
|
|
162
|
+
* @returns {Promise<{code: number}>}
|
|
163
|
+
*/
|
|
164
|
+
async updateUserInfo(username, data) {
|
|
165
|
+
console.log('updateUserInfo 被调用', { username, data })
|
|
166
|
+
return { code: 200 }
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* 获取用户头像
|
|
171
|
+
* @param {string} username - 用户名
|
|
172
|
+
* @returns {Promise<{code: number, data: string}>} data 是头像地址
|
|
173
|
+
*/
|
|
174
|
+
async getUserAvatar(username) {
|
|
175
|
+
console.log('getUserAvatar 被调用, username:', username)
|
|
176
|
+
return { code: 200, data: '' }
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* 上传头像
|
|
181
|
+
* @param {File} file - 头像文件
|
|
182
|
+
* @param {string} username - 用户名
|
|
183
|
+
* @returns {Promise<{code: number, data: string}>} data 是新的头像地址
|
|
184
|
+
*/
|
|
185
|
+
async uploadAvatar(file, username) {
|
|
186
|
+
console.log('uploadAvatar 被调用', { file, username })
|
|
187
|
+
return { code: 200, data: '' }
|
|
188
|
+
}
|
|
189
|
+
}
|