/// /// /// /// /// /// /// /// /// /// /// /// let settings: Settings; let globalClient: TSClient; let chat: ChatBox; let forumIdentity: TeaForumIdentity; const js_render = window.jsrender || $; const native_client = window.require !== undefined; function getUserMediaFunction() { if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) return (settings, success, fail) => { navigator.mediaDevices.getUserMedia(settings).then(success).catch(fail); }; return navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; } function setup_close() { if(settings.static(Settings.KEY_DISABLE_UNLOAD_DIALOG, false)) return; window.onbeforeunload = event => { if(!globalClient.serverConnection || !globalClient.serverConnection.connected) return; if(!native_client) { event.returnValue = "Are you really sure?
You're still connected!"; } else { event.preventDefault(); event.returnValue = "question"; const {remote} = require('electron'); const dialog = remote.dialog; dialog.showMessageBox(remote.getCurrentWindow(), { type: 'question', buttons: ['Yes', 'No'], title: 'Confirm', message: 'Are you really sure?\nYou\'re still connected!' }, choice => { if(choice === 0) { window.onbeforeunload = undefined; remote.getCurrentWindow().close(); } }); } }; } declare function moment(...arguments) : any; function setup_jsrender() : boolean { if(!js_render) { displayCriticalError("Missing jsrender extension!"); return false; } if(!js_render.views) { displayCriticalError("Missing jsrender viewer extension!"); return false; } js_render.views.settings.allowCode(true); js_render.views.tags("rnd", (argument) => { let min = parseInt(argument.substr(0, argument.indexOf('~'))); let max = parseInt(argument.substr(argument.indexOf('~') + 1)); return (Math.round(Math.random() * (min + max + 1) - min)).toString(); }); js_render.views.tags("fmt_date", (...arguments) => { return moment(arguments[0]).format(arguments[1]); }); $(".jsrender-template").each((idx, _entry) => { if(!js_render.templates(_entry.id, _entry.innerHTML)) { //, _entry.innerHTML console.error("Failed to cache template " + _entry.id + " for js render!"); } else console.debug("Successfully loaded jsrender template " + _entry.id); }); return true; } function main() { if(!setup_jsrender()) return; //http://localhost:63343/Web-Client/index.php?_ijt=omcpmt8b9hnjlfguh8ajgrgolr&default_connect_url=true&default_connect_type=teamspeak&default_connect_url=localhost%3A9987&disableUnloadDialog=1&loader_ignore_age=1 AudioController.initializeAudioController(); if(!TSIdentityHelper.setup()) { console.error("Could not setup the TeamSpeak identity parser!"); return; } settings = new Settings(); globalClient = new TSClient(); /** Setup the XF forum identity **/ if(settings.static("forum_user_data")) { forumIdentity = new TeaForumIdentity(settings.static("forum_user_data"), settings.static("forum_user_sign")); } chat = new ChatBox($("#chat")); globalClient.setup(); if(!settings.static(Settings.KEY_DISABLE_UNLOAD_DIALOG, false) && !native_client) { } //Modals.spawnConnectModal(); //Modals.spawnSettingsModal(); //Modals.createChannelModal(undefined); if(settings.static("default_connect_url")) { switch (settings.static("default_connect_type")) { case "teaforo": if(forumIdentity && forumIdentity.valid()) globalClient.startConnection(settings.static("default_connect_url"), forumIdentity); else Modals.spawnConnectModal({ url: settings.static("default_connect_url"), enforce: true }, { identity: IdentitifyType.TEAFORO, enforce: true}); break; case "teamspeak": let connectIdentity = TSIdentityHelper.loadIdentity(settings.global("connect_identity_teamspeak_identity", "")); if(!connectIdentity || !connectIdentity.valid()) Modals.spawnConnectModal({ url: settings.static("default_connect_url"), enforce: true }, { identity: IdentitifyType.TEAMSPEAK, enforce: true}); else globalClient.startConnection(settings.static("default_connect_url"), connectIdentity); break; default: Modals.spawnConnectModal({ url: settings.static("default_connect_url"), enforce: true }); } } ppt.initialize().catch(error => { console.error("Failed to initialize ppt!"); //TODO error notification? }); /* let tag = $("#tmpl_music_frame").renderTag({ //thumbnail: "img/loading_image.svg" }); $("#music-test").replaceWith(tag); Modals.spawnSettingsModal(); /* Modals.spawnYesNo("Are your sure?", "Do you really want to exit?", flag => { console.log("Response: " + flag); }) */ setup_close(); let _resize_timeout: NodeJS.Timer; $(window).on('resize', () => { if(_resize_timeout) clearTimeout(_resize_timeout); _resize_timeout = setTimeout(() => { globalClient.channelTree.handle_resized(); }, 1000); }); } app.loadedListener.push(() => { try { main(); if(!audio.player.initialized()) { log.info(LogCategory.VOICE, "Initialize audio controller later!"); if(!audio.player.initializeFromGesture) { console.error("Missing audio.player.initializeFromGesture"); } else $(document).one('click', event => audio.player.initializeFromGesture()); } } catch (ex) { console.error(ex.stack); if(ex instanceof ReferenceError || ex instanceof TypeError) ex = ex.name + ": " + ex.message; displayCriticalError("Failed to invoke main function:
" + ex); } });