UNPKG

nim-web-sdk-ng

Version:

Yunxin IM SDK next generation

494 lines (493 loc) 12.9 kB
import { V2NIMUser } from './V2NIMUserService'; import type { NIMEBaseServiceClass } from './types'; /** * v2 好友模块 * * 注: 使用 dist/esm 产物时,需要动态引入 V2NIMFriendService 后使用 * * @example * ``` * import { NIM, V2NIMFriendService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMFriendService, 'V2NIMFriendService') * ``` */ export declare class V2NIMFriendService extends NIMEBaseServiceClass<V2NIMFriendListener> { /** * 添加/申请好友 * @param accountId 好友 ID * @param params 申请相关参数 * @example * ```ts * await nim.V2NIMFriendService.addFriend("accountId1", { * addMode: 2, * postscript: "请求添加好友" * }) * ``` */ addFriend(accountId: string, params: V2NIMFriendAddParams): Promise<void>; /** * 删除好友 * * @param accountId 好友 ID * @param params 删除相关参数 * @example * ```ts * await nim.V2NIMFriendService.deleteFriend("accountId1", { deleteAlias: true }) * ``` */ deleteFriend(accountId: string, params: V2NIMFriendDeleteParams): Promise<void>; /** * 接受好友申请 * * @param application 好友申请信息 * @example * ```ts * await nim.V2NIMFriendService.acceptAddApplication(application) * ``` */ acceptAddApplication(application: V2NIMFriendAddApplication): Promise<void>; /** * 拒绝好友申请 * * @param application 好友申请信息 * @param postscript 拒绝时的附言 * @example * ```ts * await nim.V2NIMFriendService.rejectAddApplication(application, "暂时不加好友") * ``` */ rejectAddApplication(application: V2NIMFriendAddApplication, postscript?: string): Promise<void>; /** * 设置好友信息 * * @param accountId 好友 ID * @param params 设置好友信息参数 * @example * ```ts * await nim.V2NIMFriendService.setFriendInfo("accountId1", { alias: "好友备注" }) * ``` */ setFriendInfo(accountId: string, params: V2NIMFriendSetParams): Promise<void>; /** * 获取好友列表 * @example * ```ts * const friends = await nim.V2NIMFriendService.getFriendList() * ``` */ getFriendList(): Promise<V2NIMFriend[]>; /** * 根据账号 ID 获取好友信息 * * @param accountIds 好友 ID 列表 * @example * ```ts * const friends = await nim.V2NIMFriendService.getFriendByIds(["accountId1", "accountId2"]) * ``` */ getFriendByIds(accountIds: string[]): Promise<V2NIMFriend[]>; /** * 根据账号 ID 检查好友状态 * @param accountIds 好友 ID列表 * @example * ```ts * const result = await nim.V2NIMFriendService.checkFriend(["accountId1", "accountId2"]) * // result: { "accountId1": true, "accountId2": false } * ``` */ checkFriend(accountIds: string[]): Promise<V2NIMCheckFriendResult>; /** * 获取申请添加好友列表通知 * @example * ```ts * const result = await nim.V2NIMFriendService.getAddApplicationList({ offset: 0, limit: 50 }) * ``` */ getAddApplicationList(option: V2NIMFriendAddApplicationQueryOption): Promise<V2NIMFriendAddApplicationResult>; /** * 设置所有好友申请为已读 * @example * ```ts * await nim.V2NIMFriendService.setAddApplicationRead() * ``` */ setAddApplicationRead(): Promise<void>; /** * 设置好友申请已读. v10.9.20+ 支持 * * 注: 自 v10.9.60+ 此 API 明确含义将对此目标记录及其之前的记录都标记为已读. * * @param application 申请添加好友的相关信息. 若不传代表将所有好友申请设置为已读 * @example * ```ts * // 设置所有申请为已读 * await nim.V2NIMFriendService.setAddApplicationReadEx() * // 设置指定申请为已读 * await nim.V2NIMFriendService.setAddApplicationReadEx(application) * ``` */ setAddApplicationReadEx(application?: V2NIMFriendAddApplication): Promise<void>; /** * 获取未读的好友申请数量 * @example * ```ts * const count = await nim.V2NIMFriendService.getAddApplicationUnreadCount() * ``` */ getAddApplicationUnreadCount(): Promise<number>; /** * 清空所有好友申请 * * @example * ``` * await nim.V2NIMFriendService.clearAllAddApplication() * ``` */ clearAllAddApplication(): Promise<void>; /** * 清空好友申请. v10.9.60+ 支持 * * @param option 清空条件 * @example * ```ts * await nim.V2NIMFriendService.clearAllAddApplicationEx({ timestamp: Date.now() }) * ``` */ clearAllAddApplicationEx(option?: V2NIMFriendClearAddApplicationOption): Promise<void>; /** * 删除好友申请 * * 注: 会删除相同申请者的所有申请记录 * * @param applicationInfo 好友申请记录 * @example * ```ts * await nim.V2NIMFriendService.deleteAddApplication(application) * ``` */ deleteAddApplication(applicationInfo: V2NIMFriendAddApplication): Promise<void>; /** * 根据关键词搜索好友 * @param option 搜索好友的条件 * @example * ```ts * const friends = await nim.V2NIMFriendService.searchFriendByOption({ keyword: "关键词" }) * ``` */ searchFriendByOption(option: V2NIMFriendSearchOption): Promise<V2NIMFriend[]>; } export declare type V2NIMFriendClearAddApplicationOption = { /** * 时间戳,默认当前时间戳,会删除这个时间之前的所有记录 */ timestamp?: number; /** * 好友申请类型,默认全部 V2NIMFriendAddApplicationType.V2NIM_FRIEND_ADD_APPLICATION_TYPE_ALL * * 注: 本接口不能支持选项 V2NIMFriendAddApplicationType.V2NIM_FRIEND_ADD_APPLICATION_TYPE_LEGACY */ type?: V2NIMFriendAddApplicationType; }; /** * 好友信息,协议文档:https://docs.popo.netease.com/team/pc/MMC/pageDetail/d1f9d84a362d4e3db698a920e0bb9fac */ export declare type V2NIMFriend = { /** * 好友 ID */ accountId: string; /** * 好友备注名 */ alias?: string; /** * 服务器扩展字段 */ serverExtension: string; /** * 用户扩展字段 */ customerExtension: string; /** * 创建时间 */ createTime?: number; /** * 更新时间 */ updateTime?: number; /** * 好友来源。目前默认都是0 */ source?: number; /** * 好友关系。预留字段,后期实现单向好友关系时使用 */ /** * 方向好友关系。预留字段,后期实现单向好友关系时使用 */ /** * 扩展字段。预留字段 */ /** * @computed * * 所关联的用户信息 */ userProfile?: V2NIMUser; }; export declare const enum V2NIMFriendAddMode { /** * 直接加为好友 */ V2NIM_FRIEND_MODE_TYPE_ADD = 1, /** * 请求加为好友 */ V2NIM_FRIEND_MODE_TYPE_APPLY = 2 } export declare type V2NIMFriendAddParams = { /** * 添加好友模式 */ addMode: V2NIMFriendAddMode; /** * 添加/申请好友时的附言 */ postscript: string; }; /** * 申请添加好友的相关信息 */ export declare type V2NIMFriendAddApplication = { /** * 申请者账户 */ applicantAccountId: string; /** * 被申请人账户 */ recipientAccountId: string; /** * 操作者账号 */ operatorAccountId: string; /** * 操作时添加的附言 */ postscript?: string; /** * 操作的状态 */ status: V2NIMFriendAddApplicationStatus; /** * 操作的时间 */ timestamp: number; /** * 是否已读 */ read: boolean; /** * 记录ID. v10.9.60+ 支持 */ serverId: string; /** * 变更的时间. v10.9.60+ 支持 */ updateTimestamp: number; /** * 附言历史. v10.9.60+ 支持 */ postscriptHistory?: V2NIMPostscript[]; }; export declare type V2NIMPostscript = { /** * 产生附言的账号 */ fromAccount: string; /** * 附言产生的时间 */ time: number; /** * 附言内容 */ content: string; }; /** * 好友添加操作的类型 */ export declare const enum V2NIMFriendAddApplicationType { /** * 兼容老版本模式 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_LEGACY = 0, /** * 我发起的好友申请 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_FROM_SELF = 1, /** * 我收到的好友申请 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_TO_SELF = 2, /** * 所有好友申请 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_ALL = 3 } /** * 好友申请的处理状态 */ export declare const enum V2NIMFriendAddApplicationStatus { /** * 未处理 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_INIT = 0, /** * 已同意 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_AGREED = 1, /** * 已拒绝 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_REJECTED = 2, /** * 已过期 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_EXPIRED = 3, /** * 对方直接添加你为好友 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_DIRECT_ADD = 4 } export declare const enum V2NIMFriendDeletionType { /** * 自己删除好友 */ V2NIM_FRIEND_DELETION_TYPE_BY_SELF = 1, /** * 被好友删除 */ V2NIM_FRIEND_DELETION_TYPE_BY_PEER = 2 } export declare type V2NIMFriendDeleteParams = { /** * 是否同步删除前设置的备注 * * false:不同步删除备注 * true: 同步删除备注 */ deleteAlias: boolean; }; export declare type V2NIMFriendSetParams = { /** * 别名 */ alias?: string; /** * 扩展字段 */ serverExtension?: string; }; /** * 申请添加好友相关信息查询参数 */ export declare type V2NIMFriendAddApplicationQueryOption = { /** * 分页位置。首次查询传0,下一次传上一次返回的offset。查询结果不包含offset位置 */ offset?: number; /** * 查询数量, 默认50 */ limit?: number; /** * 要查询的状态列表 * 如果列表为空,或者不传,表示查询所有状态 */ status?: Array<V2NIMFriendAddApplicationStatus>; /** * 好友申请类型. 默认值为兼容老版本模式 V2NIMFriendAddApplicationType.V2NIM_FRIEND_ADD_APPLICATION_TYPE_LEGACY */ type?: V2NIMFriendAddApplicationType; }; export declare type V2NIMFriendAddApplicationResult = { infos: Array<V2NIMFriendAddApplication>; offset: number; finished: boolean; }; export declare const enum V2NIMFriendVerifyType { /** * 直接加为好友 */ V2NIM_FRIEND_VERIFY_TYPE_ADD = 1, /** * 请求加为好友 */ V2NIM_FRIEND_VERIFY_TYPE_APPLY = 2, /** * 同意添加好友 */ V2NIM_FRIEND_VERIFY_TYPE_ACCEPT = 3, /** * 拒绝添加好友 */ V2NIM_FRIEND_VERIFY_TYPE_REJECT = 4 } /** * 好友模块的事件定义 * * 注: 使用 dist/esm 产物时,需要动态引入 V2NIMFriendService 后使用 * * @example * ``` * import { NIM, V2NIMFriendService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMFriendService, 'V2NIMFriendService') * ``` */ export interface V2NIMFriendListener { /** * 已添加好友 */ onFriendAdded: [friend: V2NIMFriend]; /** * 已删除好友 */ onFriendDeleted: [accountId: string, deletionType: V2NIMFriendDeletionType]; /** * 收到好友申请 */ onFriendAddApplication: [application: V2NIMFriendAddApplication]; /** * 好友申请被拒绝的通知 */ onFriendAddRejected: [rejection: V2NIMFriendAddApplication]; /** * 好友信息更新 */ onFriendInfoChanged: [friend: V2NIMFriend]; } export interface V2NIMCheckFriendResult { [accountId: string]: boolean; } export declare type V2NIMFriendSearchOption = { /** * 查询的关键词,默认搜索好友备注。可以指定是否同时搜索用户账号 */ keyword: string; /** * 是否检索昵称。默认为 true */ searchAlias?: boolean; /** * 是否同时搜索用户账号。默认值为 false */ searchAccountId?: boolean; }; export declare type V2NIMFriendServiceConfig = { /** * 是否开启服务端好友申请记录功能. 默认为 false,即不开启。 */ enableServerV2FriendAddApplication?: boolean; };