UNPKG

@jsxc/jsxc

Version:

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

104 lines (82 loc) 2.65 kB
import Log from '../../util/Log'; import Client from '../../Client'; import Roster from '../../ui/Roster'; import { IPlugin } from '../../plugin/AbstractPlugin'; import FormWatcher, { SettingsCallback } from '../../FormWatcher'; import { disconnect } from './disconnect'; import Translation from '@util/Translation'; import loginBox from '@ui/dialogs/loginBox'; import Account from './Account'; import LinkHandlerXMPP from '@src/LinkHandlerXMPP'; export { disconnect }; export { start, startAndPause } from './start'; export { register } from './register'; export { enableDebugMode, disableDebugMode, deleteAllData } from './debug'; export { testBOSHServer } from './testBOSHServer'; export function addPlugin(Plugin: IPlugin) { Client.addPlugin(Plugin); } export function addMenuEntry(options: { id: string; handler: (ev) => void; label: string | JQuery<HTMLElement>; icon?: string; offlineAvailable?: boolean; }) { Roster.get().addMenuEntry(options); } export function toggleRoster() { Roster.get().toggle(); } export function watchForm( formElement: JQuery, usernameElement: JQuery, passwordElement: JQuery, settingsCallback?: SettingsCallback ) { new FormWatcher(formElement, usernameElement, passwordElement, settingsCallback); } export function watchLogoutClick(element: JQuery) { if (element.length === 0) { throw new Error('I found no logout element.'); } Log.debug('Logout watcher armed'); function logout(ev) { ev.stopPropagation(); ev.preventDefault(); disconnect().then(() => { element.off('click', null, logout); $(this).get(0).click(); }); } element.off('click', null, logout).click(logout); } export function addHandlerToXMPPUri(container: JQuery = $('body')) { LinkHandlerXMPP.get().detect(container); } export function executeXMPPUri(uri: string) { return LinkHandlerXMPP.get().execute(uri); } export function exportAllOptions() { let accounts = Client.getAccountManager().getAccounts(); return { ...accounts.reduce((previous, account) => { let option = account.getOptions(); previous[option.getId()] = option.export(); return previous; }, {}), [Client.getOptions().getId()]: Client.getOptions().export(), }; } export function translate(str: string, param) { return Translation.t(str, param); } export function showLoginBox(username?: string) { loginBox(username); } export function getAccount(uid: string) { return new Account(uid); } export function restoreAccounts(): number { return Client.getAccountManager().restoreAccounts(); }