refactor: modify friend data struct

add nickname in friend model
pull/90/head
moonrailgun 2 years ago
parent 1932c3c26d
commit 0991dcde8e

@ -100,7 +100,9 @@ function initial(socket: AppSocket, store: AppStore) {
);
// 获取好友列表
socket.request<string[]>('friend.getAllFriends').then((data) => {
socket
.request<{ id: string; nickname?: string }[]>('friend.getAllFriends')
.then((data) => {
store.dispatch(userActions.setFriendList(data));
});
@ -144,7 +146,7 @@ function listenNotify(socket: AppSocket, store: AppStore) {
console.error('错误的信息', userId);
return;
}
store.dispatch(userActions.appendFriend(userId));
store.dispatch(userActions.appendFriend({ id: userId }));
});
socket.listen<FriendRequest>('friend.request.add', (request) => {

@ -3,9 +3,14 @@ import _set from 'lodash/set';
import type { UserLoginInfo } from '../../model/user';
import type { FriendRequest } from '../../model/friend';
export interface FriendInfo {
id: string;
nickname?: string;
}
export interface UserState {
info: UserLoginInfo | null;
friends: string[]; // 好友的id列表
friends: FriendInfo[]; // 好友的id列表
friendRequests: FriendRequest[];
}
@ -44,13 +49,13 @@ const userSlice = createSlice({
_set(state.info, ['extra', fieldName], fieldValue);
},
setFriendList(state, action: PayloadAction<string[]>) {
setFriendList(state, action: PayloadAction<FriendInfo[]>) {
state.friends = action.payload;
},
setFriendRequests(state, action: PayloadAction<FriendRequest[]>) {
state.friendRequests = action.payload;
},
appendFriend(state, action: PayloadAction<string>) {
appendFriend(state, action: PayloadAction<FriendInfo>) {
if (state.friends.some((id) => id === action.payload)) {
return;
}
@ -59,7 +64,7 @@ const userSlice = createSlice({
},
removeFriend(state, action: PayloadAction<string>) {
const friendId = action.payload;
const index = state.friends.indexOf(friendId);
const index = state.friends.findIndex((item) => item.id === friendId);
if (index >= 0) {
state.friends.splice(index, 1);
}

@ -71,16 +71,16 @@ export const FriendList: React.FC<{
<div className="py-2.5 px-5">
<div>{t('好友列表')}</div>
<div>
{friends.map((friendId) => (
{friends.map((item) => (
<UserListItem
key={friendId}
userId={friendId}
key={item.id}
userId={item.id}
actions={[
<Tooltip key="message" title={t('发送消息')}>
<div>
<IconBtn
icon="mdi:message-text-outline"
onClick={() => handleCreateConverse(friendId)}
onClick={() => handleCreateConverse(item.id)}
/>
</div>
</Tooltip>,
@ -91,7 +91,7 @@ export const FriendList: React.FC<{
{
key: 'delete',
danger: true,
onClick: () => handleRemoveFriend(friendId),
onClick: () => handleRemoveFriend(item.id),
label: t('删除'),
},
],

@ -31,6 +31,12 @@ export class Friend extends FindOrCreate implements Base {
})
to: Ref<User>;
/**
* ,
*/
@prop()
nickname?: string;
@prop()
createdAt: Date;

@ -1,5 +1,8 @@
import { TcCacheCleaner } from '../../../mixins/cache.cleaner.mixin';
import type { FriendDocument, FriendModel } from '../../../models/user/friend';
import type {
Friend,
FriendDocument,
FriendModel,
} from '../../../models/user/friend';
import { TcService, TcDbService, TcContext } from 'tailchat-server-sdk';
interface FriendService
@ -44,10 +47,13 @@ class FriendService extends TcService {
},
});
const records = await this.transformDocuments(ctx, {}, list);
const ids = records.map((r) => r.to);
const records: Friend[] = await this.transformDocuments(ctx, {}, list);
const res = records.map((r) => ({
id: r.to,
nickname: r.nickname,
}));
return ids;
return res;
}
/**

Loading…
Cancel
Save