var authToken = ''; var tokenRefreshTime = 0; function createToken() { var api = new mw.Api(); return api.postWithToken('csrf', { action: 'chatcomplete', method: 'createtoken' }); } function openChatCompletePage(token) { var urlTemplate = mw.config.get('wgIsekaiChatCompleteFrontendUrl'); var title = mw.config.get('wgTitle'); var url = urlTemplate.replace(/\{title\}/g, encodeURIComponent(title)).replace(/\{token\}/g, token); window.open(url, '_blank'); } function launchChatComplete() { var currentTime = new Date().getTime(); if (currentTime - tokenRefreshTime > 3600000) { mw.notify(mw.msg('isekai-chatcomplete-loading'), { id: "loading-chatcomplete-notify" }); createToken().done(function(data) { if (data.chatcomplete && data.chatcomplete.createtoken) { authToken = data.chatcomplete.createtoken.token; tokenRefreshTime = new Date().getTime(); openChatCompletePage(authToken); $('#loading-chatcomplete-notify').trigger('click'); } }); } else { openChatCompletePage(authToken); } } $(function() { if (mw.config.get('wgIsArticle')) { var menuIcon = new OO.ui.IconWidget({ icon: 'robot' }); isekai.fab.addButton({ id: 'chatcomplete-launcher', label: mw.msg('isekai-chatcomplete-menubutton'), icon: menuIcon.$element[0], priority: 90, onClick: function() { launchChatComplete(); } }); var bottomMenuIcon = new OO.ui.IconWidget({ icon: 'robot' }); bottomNavBtn = isekai.bottomNav.addButton({ id: 'chatcomplete-launcher', label: mw.msg('isekai-chatcomplete-menubutton'), icon: bottomMenuIcon.$element[0], priority: 90, onClick: function() { launchChatComplete(); } }); } });