You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/shared/model/user.ts

179 lines
3.3 KiB
TypeScript

import { request } from '../api/request';
import { buildCachedRequest } from '../cache/utils';
export interface UserBaseInfo {
_id: string;
email: string;
nickname: string;
discriminator: string;
avatar: string | null;
}
export interface UserLoginInfo extends UserBaseInfo {
token: string;
createdAt: string;
}
/**
*
*/
export interface UserDMList {
userId: string;
converseIds: string[];
}
/**
*
* @param email
* @param password
*/
export async function loginWithEmail(
email: string,
password: string
): Promise<UserLoginInfo> {
const { data } = await request.post('/api/user/login', {
email,
password,
});
return data;
}
/**
* 使 Token
* @param token JWT
*/
export async function loginWithToken(token: string): Promise<UserLoginInfo> {
const { data } = await request.post('/api/user/resolveToken', {
token,
});
return data;
}
/**
*
* @param email
* @param password
*/
export async function registerWithEmail(
email: string,
password: string
): Promise<UserLoginInfo> {
const { data } = await request.post('/api/user/register', {
email,
password,
});
return data;
}
/**
* 访
* @param nickname 访
*/
export async function createTemporaryUser(
nickname: string
): Promise<UserLoginInfo> {
const { data } = await request.post('/api/user/createTemporaryUser', {
nickname,
});
return data;
}
/**
* 使
* @param uniqueName : #0000
*/
export async function searchUserWithUniqueName(
uniqueName: string
): Promise<UserBaseInfo> {
const { data } = await request.post('/api/user/searchUserWithUniqueName', {
uniqueName,
});
return data;
}
/**
*
* @param userId ID
*/
export async function fetchUserInfo(userId: string): Promise<UserBaseInfo> {
const { data } = await request.get('/api/user/getUserInfo', {
params: {
userId,
},
});
return data;
}
/**
* 线
*/
export async function getUserOnlineStatus(
userIds: string[]
): Promise<boolean[]> {
const { data } = await request.get<boolean[]>(
'/api/gateway/checkUserOnline',
{
params: {
userIds,
},
}
);
return data;
}
/**
*
*
*/
export async function appendUserDMConverse(
converseId: string
): Promise<UserDMList> {
const { data } = await request.post<UserDMList>(
'/api/user/dmlist/addConverse',
{
converseId,
}
);
return data;
}
/**
*
* @param fieldName
* @param fieldValue
*/
type AllowedModifyField = 'nickname' | 'avatar';
export async function modifyUserField(
fieldName: AllowedModifyField,
fieldValue: unknown
): Promise<UserBaseInfo> {
const { data } = await request.post('/api/user/updateUserField', {
fieldName,
fieldValue,
});
return data;
}
/**
* Token
*/
export const checkTokenValid = buildCachedRequest(
'tokenValid',
async (token: string): Promise<boolean> => {
const { data } = await request.post<boolean>('/api/user/checkTokenValid', {
token,
});
return data;
}
);