UNPKG

@jsxc/jsxc

Version:

Real-time XMPP chat application with video calls, file transfer and encrypted communication

112 lines (77 loc) 3.64 kB
import { IConnection } from '../connection/Connection.interface'; import { IContact as Contact, IContact } from '../Contact.interface'; import { IMessage, IMessagePayload, DIRECTION } from '../Message.interface'; import { IJID as JID } from '../JID.interface'; import { IDiscoInfoRepository } from '../DiscoInfoRepository.interface'; import { ILog } from '../util/Log.interface'; import ChatWindow from '@ui/ChatWindow'; import ContactManager from '@src/ContactManager'; import ContactProvider from '@src/ContactProvider'; import { IAvatar } from '@src/Avatar.interface'; import Pipe from '@util/Pipe'; import CommandRepository, { CommandAction } from '@src/CommandRepository'; import IStorage from '@src/Storage.interface'; import CallManager from '@src/CallManager'; import IMenuItemFactory from '@src/MenuItemFactory.interface'; export interface IPluginAPI { Log: ILog; createJID(node: string, domain: string, resource: string): JID; createJID(bare: string, resource: string): JID; createJID(full: string): JID; createMessage(uid: string): IMessage; createMessage(data: IMessagePayload): IMessage; getStorage(): IStorage; getSessionStorage(): IStorage; send(stanzaElement: Strophe.Builder); sendIQ(stanzaElement: Strophe.Builder): Promise<Element>; getDiscoInfoRepository(): IDiscoInfoRepository; getConnection(): IConnection; getContact(jid: JID): Contact; getVersion(): string; addPreSendMessageProcessor(processor: (contact: Contact, message: IMessage) => Promise<{}>, position?: number); addAfterReceiveMessageProcessor( processor: (contact: Contact, message: IMessage, stanza: Element) => Promise<{}>, position?: number ); addAfterReceiveGroupMessageProcessor( processor: (contact: Contact, message: IMessage, stanza: Element) => Promise<[Contact, IMessage, Element]>, position?: number ); addAfterReceiveErrorMessageProcessor( processor: (contact: Contact, message: IMessage, stanza: Element) => Promise<[Contact, IMessage, Element]>, position?: number ); addPreSendMessageStanzaProcessor( processor: (message: IMessage, xmlMsg: Strophe.Builder) => Promise<any>, position?: number ); addAvatarProcessor(processor: (contact: Contact, avatar: IAvatar) => Promise<[Contact, IAvatar]>, position?: number); addCallProcessor( processor: ( contact: IContact, type: 'video' | 'audio' | 'screen', resources: string[], sessionId: string ) => Promise<[IContact, 'video' | 'audio' | 'screen', string[], string]>, position?: number ): void; addTerminateCallProcessor(processor: (sessionId?: string) => Promise<[string]>): void; addFeature(feature: string); registerConnectionHook(func: (status: number, condition?: string) => void); registerPresenceHook(func); getConnectionCreationDate(): Date; registerChatWindowInitializedHook(hook: (chatWindow: ChatWindow) => void); registerContactProvider(source: ContactProvider); registerTextFormatter( formatter: (text: string, direction: DIRECTION, contact: Contact) => Promise<string> | string, priority?: number ); getContactManager(): ContactManager; getAfterReceiveGroupMessagePipe(): Pipe; getAfterReceiveMessagePipe(): Pipe; registerCommand(command: string, action: CommandAction, description: string, category?: string): void; getCommandRepository(): CommandRepository; getAccountUid(): string; getCallManager(): CallManager; registerChatMessageMenuItem(menuItem: IMenuItemFactory<[IContact, IMessage]>): void; }