agora-react-native-rtm
Version:
React Native around the Agora RTM SDKs for Android and iOS agora
997 lines (897 loc) • 29.6 kB
text/typescript
import {
EmitterSubscription,
NativeEventEmitter,
NativeModules,
} from 'react-native';
import {
AgoraPeerMessage,
Callback,
ChannelAttributeOptions,
ConnectionChangeReason,
ConnectionState,
Listener,
ListPeerStatus,
LocalInvitation,
LocalInvitationError,
LocalInvitationProps,
LogLevel,
Members,
PeerOnlineState,
PeersOnlineStatus,
PeerSubscriptionOption,
RemoteInvitation,
RemoteInvitationError,
RemoteInvitationProps,
RtmAttribute,
RtmChannelAttribute,
RtmChannelMember,
RTMChannelMessage,
RtmConnectionState,
RTMLocalInvitationErrorMessage,
RTMLocalInvitationMessage,
RTMMemberInfo,
RtmMessage,
RTMPeerMessage,
RTMRemoteInvitationErrorMessage,
RTMRemoteInvitationMessage,
SendMessageOptions,
UserAttribute,
UserInfo,
UserProfile,
} from './types';
/**
* @deprecated
*/
export interface RtmEngineEvents {
/**
* @deprecated
* @event error
* @param evt The received event object
* error | occurs when wrapper emit error | on("error") |
*/
error: (evt: any) => void;
/**
* @deprecated {@link ConnectionStateChanged}
* @event connectionStateChanged
* @param evt The received event object {@link ConnectionState}
* connectionStateChanged | occurs when connection state changed |
*/
connectionStateChanged: (evt: ConnectionState) => void;
/**
* @deprecated {@link MessageReceived}
* @event messageReceived
* @param evt The received event object {@link RTMPeerMessage}
* messageReceived | occurs when message received |
*/
messageReceived: (evt: RTMPeerMessage) => void;
/**
* @deprecated {@link TokenExpired}
* @event tokenExpired
* @param evt The received event object
* tokenExpired | occurs when token has expired |
*/
tokenExpired: (evt: any) => void;
/**
* @deprecated {@link ChannelMessageReceived}
* @event channelMessageReceived
* @param evt The received event object {@link RTMChannelMessage}
* channelMessageReceived | occurs when received channel message |
*/
channelMessageReceived: (evt: RTMChannelMessage) => void;
/**
* @deprecated {@link ChannelMemberJoined}
* @event channelMemberJoined
* @param evt The received event object {@link RTMMemberInfo}
* channelMemberJoined | occurs when some one joined in the subscribed channel
*/
channelMemberJoined: (evt: RTMMemberInfo) => void;
/**
* @deprecated {@link ChannelMemberLeft}
* @event channelMemberLeft
* @param evt The received event object {@link RTMMemberInfo}
* channelMemberLeft | occurs when sone one left from u subscribed channel
*/
channelMemberLeft: (evt: RTMMemberInfo) => void;
/**
* @deprecated {@link LocalInvitationReceivedByPeer}
* @event localInvitationReceivedByPeer
* @param evt The received event object {@link RTMLocalInvitationMessage}
* localInvitationReceivedByPeer | occurs when local inviation received by peer |
*/
localInvitationReceivedByPeer: (evt: RTMLocalInvitationMessage) => void;
/**
* @deprecated {@link LocalInvitationAccepted}
* @event localInvitationAccepted
* @param evt The received event object {@link RTMLocalInvitationMessage}
* localInvitationAccepted | occurs when local invitation accepted |
*/
localInvitationAccepted: (evt: RTMLocalInvitationMessage) => void;
/**
* @deprecated {@link LocalInvitationRefused}
* @event localInvitationRefused
* @param evt The received event object {@link RTMLocalInvitationMessage}
* localInvitationRefused | occurs when local invitation refused |
*/
localInvitationRefused: (evt: RTMLocalInvitationMessage) => void;
/**
* @deprecated {@link LocalInvitationCanceled}
* @event localInvitationCanceled
* @param evt The received event object {@link RTMLocalInvitationMessage}
* localInvitationCanceled | occurs when local invitation canceled |
*/
localInvitationCanceled: (evt: RTMLocalInvitationMessage) => void;
/**
* @deprecated {@link LocalInvitationFailure}
* @event localInvitationFailure
* @param evt The received event object {@link RTMLocalInvitationErrorMessage}
* localInvitationFailure | occurs when local invitation failure |
*/
localInvitationFailure: (evt: RTMLocalInvitationErrorMessage) => void;
/**
* @deprecated {@link RemoteInvitationReceived}
* @event remoteInvitationReceived
* @param evt The received event object {@link RTMRemoteInvitationMessage}
* remoteInvitationReceived | occurs when remote invitation received |
*/
remoteInvitationReceived: (evt: RTMRemoteInvitationMessage) => void;
/**
* @deprecated {@link RemoteInvitationAccepted}
* @event remoteInvitationAccepted
* @param evt The received event object {@link RTMRemoteInvitationMessage}
* remoteInvitationAccepted | occurs when remote invitation accepted |
*/
remoteInvitationAccepted: (evt: RTMRemoteInvitationMessage) => void;
/**
* @deprecated {@link RemoteInvitationRefused}
* @event remoteInvitationRefused
* @param evt The received event object {@link RTMRemoteInvitationMessage}
* remoteInvitationRefused | occurs when remote invitation refused |
*/
remoteInvitationRefused: (evt: RTMRemoteInvitationMessage) => void;
/**
* @deprecated {@link RemoteInvitationCanceled}
* @event remoteInvitationCanceled
* @param evt The received event object {@link RTMRemoteInvitationMessage}
* remoteInvitationCanceled | occurs when remote invitation canceled |
*/
remoteInvitationCanceled: (evt: RTMRemoteInvitationMessage) => void;
/**
* @deprecated {@link RemoteInvitationFailure}
* @event remoteInvitationFailure
* @param evt The received event object {@link RTMRemoteInvitationErrorMessage}
* remoteInvitationFailure | occurs when remote invitation failure |
*/
remoteInvitationFailure: (evt: RTMRemoteInvitationErrorMessage) => void;
}
export interface RtmClientEvents {
ConnectionStateChanged: (
state: RtmConnectionState,
reason: ConnectionChangeReason
) => void;
MessageReceived: (message: RtmMessage, peerId: string) => void;
TokenExpired: () => void;
PeersOnlineStatusChanged: (peersStatus: PeersOnlineStatus) => void;
MemberCountUpdated: (memberCount: number) => void;
ChannelAttributesUpdated: (attributeList: RtmChannelAttribute[]) => void;
ChannelMessageReceived: (
message: RtmMessage,
fromMember: RtmChannelMember
) => void;
ChannelMemberJoined: (member: RtmChannelMember) => void;
ChannelMemberLeft: (member: RtmChannelMember) => void;
LocalInvitationReceivedByPeer: (localInvitation: LocalInvitation) => void;
LocalInvitationAccepted: (
localInvitation: LocalInvitation,
response?: string
) => void;
LocalInvitationRefused: (
localInvitation: LocalInvitation,
response?: string
) => void;
LocalInvitationCanceled: (localInvitation: LocalInvitation) => void;
LocalInvitationFailure: (
localInvitation: LocalInvitation,
errorCode: LocalInvitationError
) => void;
RemoteInvitationReceived: (remoteInvitation: RemoteInvitation) => void;
RemoteInvitationAccepted: (remoteInvitation: RemoteInvitation) => void;
RemoteInvitationRefused: (remoteInvitation: RemoteInvitation) => void;
RemoteInvitationCanceled: (remoteInvitation: RemoteInvitation) => void;
RemoteInvitationFailure: (
remoteInvitation: RemoteInvitation,
errorCode: RemoteInvitationError
) => void;
}
const {
/**
* @ignore
*/
AgoraRTM,
} = NativeModules;
/**
* @ignore
*/
const Prefix = AgoraRTM.prefix;
/**
* @ignore
*/
const RtmClientEvent = new NativeEventEmitter(AgoraRTM);
/**
* `RtmEngine` is the entry point of the react native agora rtm sdk. You can call the {@link createClient} method of {@link RtmEngine} to create an `RtmEngine` instance.
* @noInheritDoc
*/
export default class RtmEngine {
/**
* @ignore
*/
private _listeners = new Map<string, Map<Listener, EmitterSubscription>>();
/**
* @deprecated {@link addListener}
* supports platform: ios, android
* @events {@link RtmEngineEvents}
* @param eventName string required
* @param callback (evt) => {} required
*/
on<EventName extends keyof RtmEngineEvents>(
eventName: EventName,
callback: RtmEngineEvents[EventName]
) {
switch (eventName) {
case 'tokenExpired':
this.addListener('TokenExpired', () => {
callback(undefined);
});
break;
case 'remoteInvitationRefused':
this.addListener('RemoteInvitationRefused', (remoteInvitation) => {
const ret: RTMRemoteInvitationMessage = { ...remoteInvitation };
callback(ret);
});
break;
case 'remoteInvitationFailure':
this.addListener(
'RemoteInvitationFailure',
(remoteInvitation, errorCode) => {
const ret: RTMRemoteInvitationErrorMessage = {
...remoteInvitation,
code: errorCode,
};
callback(ret);
}
);
break;
case 'remoteInvitationCanceled':
this.addListener('RemoteInvitationCanceled', (remoteInvitation) => {
const ret: RTMRemoteInvitationMessage = { ...remoteInvitation };
callback(ret);
});
break;
case 'remoteInvitationAccepted':
this.addListener('RemoteInvitationAccepted', (remoteInvitation) => {
const ret: RTMRemoteInvitationMessage = { ...remoteInvitation };
callback(ret);
});
break;
case 'messageReceived':
this.addListener('MessageReceived', (message, peerId) => {
const ret: RTMPeerMessage = {
text: message.text,
ts: message.serverReceivedTs?.toString(),
offline: message.isOfflineMessage,
peerId,
};
callback(ret);
});
break;
case 'localInvitationRefused':
this.addListener('LocalInvitationRefused', (localInvitation) => {
const ret: RTMLocalInvitationMessage = { ...localInvitation };
callback(ret);
});
break;
case 'localInvitationReceivedByPeer':
this.addListener('LocalInvitationReceivedByPeer', (localInvitation) => {
const ret: RTMLocalInvitationMessage = { ...localInvitation };
callback(ret);
});
break;
case 'localInvitationFailure':
this.addListener(
'LocalInvitationFailure',
(localInvitation, errorCode) => {
const ret: RTMLocalInvitationErrorMessage = {
...localInvitation,
code: errorCode,
};
callback(ret);
}
);
break;
case 'localInvitationCanceled':
this.addListener('LocalInvitationCanceled', (localInvitation) => {
const ret: RTMLocalInvitationMessage = { ...localInvitation };
callback(ret);
});
break;
case 'localInvitationAccepted':
this.addListener('LocalInvitationAccepted', (localInvitation) => {
const ret: RTMLocalInvitationMessage = { ...localInvitation };
callback(ret);
});
break;
case 'error':
console.warn('deprecated');
break;
case 'connectionStateChanged':
this.addListener('ConnectionStateChanged', (state, reason) => {
const ret: ConnectionState = { reason, state };
callback(ret);
});
break;
case 'channelMessageReceived':
this.addListener('ChannelMessageReceived', (message, fromMember) => {
const ret: RTMChannelMessage = {
channelId: fromMember.channelId,
offline: message.isOfflineMessage,
text: message.text,
ts: message.serverReceivedTs?.toString(),
uid: fromMember.userId,
};
callback(ret);
});
break;
case 'channelMemberLeft':
this.addListener('ChannelMemberLeft', (member) => {
const ret: RTMMemberInfo = {
channelId: member.channelId,
uid: member.userId,
};
callback(ret);
});
break;
case 'channelMemberJoined':
this.addListener('ChannelMemberJoined', (member) => {
const ret: RTMMemberInfo = {
channelId: member.channelId,
uid: member.userId,
};
callback(ret);
});
break;
case 'remoteInvitationReceived':
this.addListener('RemoteInvitationReceived', (remoteInvitation) => {
const ret: RTMRemoteInvitationMessage = { ...remoteInvitation };
callback(ret);
});
break;
}
}
/**
* @deprecated {@link removeAllListeners}
*/
removeEvents() {
this.removeAllListeners();
}
addListener<EventType extends keyof RtmClientEvents>(
event: EventType,
listener: RtmClientEvents[EventType]
): EmitterSubscription {
const callback = (res: any) => {
// @ts-ignore
listener(...res);
};
let map = this._listeners.get(event);
if (map === undefined) {
map = new Map<Listener, EmitterSubscription>();
this._listeners.set(event, map);
}
const subscription = RtmClientEvent.addListener(Prefix + event, callback);
map.set(listener, subscription);
return subscription;
}
removeListener<EventType extends keyof RtmClientEvents>(
event: EventType,
listener: RtmClientEvents[EventType]
) {
const map = this._listeners.get(event);
if (map === undefined) return;
RtmClientEvent.removeSubscription(map.get(listener)!);
map.delete(listener);
}
removeAllListeners<EventType extends keyof RtmClientEvents>(
event?: EventType
) {
if (event === undefined) {
this._listeners.forEach((_, key) => {
RtmClientEvent.removeAllListeners(Prefix + key);
});
this._listeners.clear();
return;
}
RtmClientEvent.removeAllListeners(Prefix + event);
this._listeners.delete(event as string);
}
/**
* @deprecated {@link release}
* supports platform: ios, android
* This method destroy AgoraRTM instance, stop event observing, release all both remote and local invitaitons and channels resources.
* @return void
*/
destroyClient(): Promise<void> {
return this.release();
}
async release(): Promise<void> {
this.removeAllListeners();
await AgoraRTM.destroy();
}
/**
* @deprecated {@link loginV2}
* supports platform: ios, android
* This method do login with UserInfo
* @param params {@link UserInfo}
* ---
* token | string | optional |
* uid | string | required |
* ---
* @return Promise<void>
*/
login(params: UserInfo): Promise<void> {
return this.loginV2(params.uid, params.token);
}
loginV2(userId: string, token?: string): Promise<void> {
return AgoraRTM.login({ token, userId });
}
/**
* supports platform: ios, android
* This method do logout.
* @return Promise<void>
*/
logout(): Promise<void> {
return AgoraRTM.logout();
}
/**
* @deprecated {@link sendMessageToPeerV2}
* supports platform: ios, android
* This method do send p2p message with {@link AgoraPeerMessage}
* @param params AgoraPeerMessage
* ---
* peerId | string | required |
* offline | boolean | requried |
* text | string | required |
* ---
* @return Promise<void>
*/
sendMessageToPeer(params: AgoraPeerMessage): Promise<void> {
return this.sendMessageToPeerV2(
params.peerId,
new RtmMessage(params.text),
{ enableOfflineMessaging: params.offline }
);
}
sendMessageToPeerV2(
peerId: string,
message: RtmMessage,
options: SendMessageOptions
): Promise<void> {
return AgoraRTM.sendMessageToPeer({ peerId, message, options });
}
/**
* @deprecated {@link queryPeersOnlineStatusV2}
* supports platform: ios, android
* This method enables query peer online user by id array.
* @param ids string array
* @return Promise<ListPeerStatus> {@link ListPeerStatus}
* ---
* items | {@link MemberStatus} |
* ---
*
* MemberStatus
* ---
* uid | string | user id|
* online | boolean | online state|
* ---
*/
queryPeersOnlineStatus(ids: string[]): Promise<ListPeerStatus> {
return this.queryPeersOnlineStatusV2(ids).then((res) => {
return {
items: Object.entries(res).map((value) => {
return { uid: value[0], online: value[1] === PeerOnlineState.ONLINE };
}),
};
});
}
queryPeersOnlineStatusV2(peerIds: string[]): Promise<PeersOnlineStatus> {
return AgoraRTM.queryPeersOnlineStatus({ peerIds });
}
subscribePeersOnlineStatus(peerIds: string[]): Promise<void> {
return AgoraRTM.subscribePeersOnlineStatus({ peerIds });
}
unsubscribePeersOnlineStatus(peerIds: string[]): Promise<void> {
return AgoraRTM.unsubscribePeersOnlineStatus({ peerIds });
}
queryPeersBySubscriptionOption(
option: PeerSubscriptionOption
): Promise<string[]> {
return AgoraRTM.queryPeersBySubscriptionOption({ option });
}
/**
* supports platform: ios, android
* This method do renewToken when got `tokenExpired` event.
* @param token string
* @return Promise<void>
*/
renewToken(token: string): Promise<void> {
return AgoraRTM.renewToken({ token });
}
/**
* @deprecated {@link setLocalUserAttributesV2}
* supports platform: ios, android
* This method enables set local user attributes with attributes {@link UserAttribute}
* @param attributes {@link UserAttribute []}
* @return Promise<void>
*
* UserAttribute
* ---
* key | string | required |
* value | string | required |
* ---
*/
setLocalUserAttributes(attributes: UserAttribute[]): Promise<void> {
return this.setLocalUserAttributesV2(attributes);
}
setLocalUserAttributesV2(attributes: RtmAttribute[]): Promise<void> {
return AgoraRTM.setLocalUserAttributes({ attributes });
}
/**
* @deprecated {@link addOrUpdateLocalUserAttributes}
* supports platform: ios, android
* This method enables you to replace attribute already exists or add attribute wasn't set for local user attributes;
* @param attributes {@link UserAttribute []}
* @return Promise<void>
*/
replaceLocalUserAttributes(attributes: UserAttribute[]): Promise<void> {
return this.addOrUpdateLocalUserAttributes(attributes);
}
addOrUpdateLocalUserAttributes(attributes: RtmAttribute[]): Promise<void> {
return AgoraRTM.addOrUpdateLocalUserAttributes({ attributes });
}
/**
* @deprecated {@link deleteLocalUserAttributesByKeys}
* supports platform: ios, android
* This method enables you to remove exists attribute for local user.
* @param keys string []
* @return Promise<void>
*/
removeLocalUserAttributesByKeys(keys: string[]): Promise<void> {
return this.deleteLocalUserAttributesByKeys(keys);
}
deleteLocalUserAttributesByKeys(attributeKeys: string[]): Promise<void> {
return AgoraRTM.deleteLocalUserAttributesByKeys({ attributeKeys });
}
/**
* @deprecated {@link clearLocalUserAttributes}
* supports platform: ios, android
* This method enables you to remove all of local user attributes;
* @return Promise<void>
*/
removeAllLocalUserAttributes(): Promise<void> {
return this.clearLocalUserAttributes();
}
clearLocalUserAttributes(): Promise<void> {
return AgoraRTM.clearLocalUserAttributes();
}
/**
* @deprecated {@link getUserAttributes}
* supports platform: ios, android
* This method enables you get user attributes by uid.
* @param uid string. user id
* @return Promise<UserProfile> {@link UserProfile}
*/
getUserAttributesByUid(uid: string): Promise<UserProfile> {
return this.getUserAttributes(uid).then((res: RtmAttribute[]) => {
let ret: any = {};
res.forEach((value) => {
ret[value.key] = value.value;
});
return { uid, attributes: ret };
});
}
getUserAttributes(userId: string): Promise<RtmAttribute[]> {
return AgoraRTM.getUserAttributes({ userId });
}
getUserAttributesByKeys(
userId: string,
attributeKeys: string[]
): Promise<RtmAttribute[]> {
return AgoraRTM.getUserAttributesByKeys({ userId, attributeKeys });
}
setChannelAttributes(
channelId: string,
attributes: RtmChannelAttribute[],
option: ChannelAttributeOptions
): Promise<void> {
return AgoraRTM.setChannelAttributes({ channelId, attributes, option });
}
addOrUpdateChannelAttributes(
channelId: string,
attributes: RtmChannelAttribute[],
option: ChannelAttributeOptions
): Promise<void> {
return AgoraRTM.addOrUpdateChannelAttributes({
channelId,
attributes,
option,
});
}
deleteChannelAttributesByKeys(
channelId: string,
attributeKeys: string[],
option: ChannelAttributeOptions
): Promise<void> {
return AgoraRTM.deleteChannelAttributesByKeys({
channelId,
attributeKeys,
option,
});
}
clearChannelAttributes(
channelId: string,
option: ChannelAttributeOptions
): Promise<void> {
return AgoraRTM.clearChannelAttributes({ channelId, option });
}
getChannelAttributes(channelId: string): Promise<RtmChannelAttribute[]> {
return AgoraRTM.getChannelAttributes({ channelId });
}
getChannelAttributesByKeys(
channelId: string,
attributeKeys: string[]
): Promise<RtmChannelAttribute[]> {
return AgoraRTM.getChannelAttributesByKeys({ channelId, attributeKeys });
}
setParameters(parameters: string): Promise<void> {
return AgoraRTM.setParameters({ parameters });
}
/**
* @deprecated {@link setLogFile} {@link setLogFilter} {@link setLogFileSize}
* set sdk log file
* @param path string: specified the generated log path
* @param level {@link LogLevel}: sdk log level (0: "OFF", 0b1111: "INFO", 0b1110: "WARN", 0b1100: "ERROR", 0b1000: "CRITICAL")
* @param size number: file size in kbytes
* Note File size settings of less than 512 KB or greater than 10 MB will not take effect.
* @return Promise<void> This method will return {path: boolean, level: boolean, size: boolean}
*/
async setSdkLog(path: string, level: LogLevel, size: number): Promise<void> {
await this.setLogFile(path);
await this.setLogFilter(level);
await this.setLogFileSize(size);
}
setLogFile(filePath: string): Promise<void> {
return AgoraRTM.setLogFile({ filePath });
}
setLogFilter(filter: LogLevel): Promise<void> {
return AgoraRTM.setLogFilter({ filter });
}
setLogFileSize(fileSizeInKBytes: number): Promise<void> {
return AgoraRTM.setLogFileSize({ fileSizeInKBytes });
}
/**
* @deprecated {@link createInstance}
* supports platform: ios, android
* This method creates AgoraRTM instance and begin event observing, collect all both remote and local invitations and channels resources.
* method: createClient
* @param appId string
* @return void
*/
async createClient(appId: string): Promise<void> {
return this.createInstance(appId);
}
async createInstance(appId: string): Promise<void> {
await AgoraRTM.createInstance(appId);
}
/**
* @deprecated
* get the version of rtm sdk
* @param callback (version) => {} required
*/
getSdkVersion(callback: Callback): void {
RtmEngine.getSdkVersion().then((res) => {
// @ts-ignore
callback(res);
});
}
static getSdkVersion(): Promise<string> {
return AgoraRTM.getSdkVersion();
}
/**
* supports platform: ios, android
* This method do join channel with channelId
* @param channelId string
* @return Promise<void>
*/
joinChannel(channelId: string): Promise<void> {
return AgoraRTM.joinChannel({ channelId });
}
/**
* supports platform: ios, android
* This method do leave channel with channelId
* @param channelId string
* @return Promise<void>
*/
leaveChannel(channelId: string): Promise<void> {
return AgoraRTM.leaveChannel({ channelId });
}
/**
* @deprecated {@link sendMessage}
* supports platform: ios, android
* This method enables send message by channel id.
* NOTICE: text bytelength has MAX_SIZE 32kb limit.
* @param channelId string.
* @param text string (bytesize shouldn't >= 32kb)
* @return Promise<void>
*/
sendMessageByChannelId(channelId: string, text: string): Promise<void> {
return this.sendMessage(channelId, new RtmMessage(text), {});
}
sendMessage(
channelId: string,
message: RtmMessage,
options: SendMessageOptions
): Promise<void> {
return AgoraRTM.sendMessage({ channelId, message, options });
}
/**
* @deprecated {@link getMembers}
* supports platform: ios, android
* This method enables you get members by channel id.
* @param channelId string.
* @return Promise<Members> {@link Members}}
*
* ---
* members | {@link MemberInfo} |
* ---
*
* MemberInfo
* ---
* uid | string | user id|
* channelId | string | channel id|
* ---
*/
getChannelMembersBychannelId(channelId: string): Promise<Members> {
return this.getMembers(channelId).then((res) => {
return {
members: res.map((value) => {
return { uid: value.userId, channelId };
}),
};
});
}
getMembers(channelId: string): Promise<RtmChannelMember[]> {
return AgoraRTM.getMembers({ channelId });
}
releaseChannel(channelId: string): Promise<void> {
return AgoraRTM.releaseChannel({ channelId });
}
createLocalInvitation(
calleeId: string,
content?: string,
channelId?: string
): Promise<LocalInvitation> {
return AgoraRTM.createLocalInvitation({ calleeId, content, channelId });
}
/**
* @deprecated {@link sendLocalInvitationV2}
* supports platform: ios, android
* This method enables send local invitation with invitationProps.
* NOTICE: content bytelength has MAX_SIZE 32kb limit.
* @param invitationProps {@link LocalInvitationProps}
*
* LocalInvitationProps
* ---
* uid | string | required |
* channelId | string | required |
* content | string | optional | 32kb limit |
* ---
*
* @return Promise<void>
*/
async sendLocalInvitation(
invitationProps: LocalInvitationProps
): Promise<void> {
return this.sendLocalInvitationV2(
await this.createLocalInvitation(
invitationProps.uid,
invitationProps.content,
invitationProps.channelId
)
);
}
sendLocalInvitationV2(localInvitation: LocalInvitation): Promise<void> {
return AgoraRTM.sendLocalInvitation({ localInvitation });
}
/**
* @deprecated {@link acceptRemoteInvitationV2}
* supports platform: ios, android
* This method enables accept remote invitation with RemoteInvitationProps.
* NOTICE: content bytelength has MAX_SIZE 32kb limit.
* @param remoteInvitationProps {@link RemoteInvitationProps}
*
* RemoteInvitationProps
* ---
* uid | string | required |
* channelId | string | required |
* response | string | optional | 32kb limit |
* ---
*
* @return Promise<void>
*/
acceptRemoteInvitation(
remoteInvitationProps: RemoteInvitationProps
): Promise<void> {
return this.acceptRemoteInvitationV2({
callerId: remoteInvitationProps.uid,
response: remoteInvitationProps.response,
channelId: remoteInvitationProps.channelId,
hash: 0,
});
}
acceptRemoteInvitationV2(remoteInvitation: RemoteInvitation): Promise<void> {
return AgoraRTM.acceptRemoteInvitation({ remoteInvitation });
}
/**
* @deprecated {@link refuseRemoteInvitationV2}
* supports platform: ios, android
* This method enables refuse remote invitation with RemoteInvitationProps.
* NOTICE: content bytelength has MAX_SIZE 32kb limit.
* @param remoteInvitationProps {@link RemoteInvitationProps}
*
* RemoteInvitationProps
* ---
* uid | string | required |
* channelId | string | required |
* response | string | optional | 32kb limit |
* ---
*
* @return Promise<void>
*/
refuseRemoteInvitation(
remoteInvitationProps: RemoteInvitationProps
): Promise<void> {
return this.refuseRemoteInvitationV2({
callerId: remoteInvitationProps.uid,
response: remoteInvitationProps.response,
channelId: remoteInvitationProps.channelId,
hash: 0,
});
}
refuseRemoteInvitationV2(remoteInvitation: RemoteInvitation): Promise<void> {
return AgoraRTM.refuseRemoteInvitation({ remoteInvitation });
}
/**
* @deprecated {@link cancelLocalInvitationV2}
* supports platform: ios, android
* This method enables cancel local invitation with invitationProps.
* NOTICE: content bytelength has MAX_SIZE 32kb limit.
* @param invitationProps {@link LocalInvitationProps}
*
* LocalInvitationProps
* ---
* uid | string | required |
* channelId | string | required |
* content | string | optional | 32kb limit |
* ---
*
* @return Promies<any>
*/
cancelLocalInvitation(invitationProps: LocalInvitationProps): Promise<void> {
return this.cancelLocalInvitationV2({
calleeId: invitationProps.uid,
content: invitationProps.content,
channelId: invitationProps.channelId,
hash: 0,
});
}
cancelLocalInvitationV2(localInvitation: LocalInvitation): Promise<void> {
return AgoraRTM.cancelLocalInvitation({ localInvitation });
}
}