|
|
|
@ -1,5 +1,13 @@
|
|
|
|
|
var authToken = '';
|
|
|
|
|
var tokenRefreshTime = 0;
|
|
|
|
|
var jsFrame = new JSFrame();
|
|
|
|
|
var frame = null;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
jsFrame.windowManager.parentElement.style.zIndex = 1000; // 设置jsFrame的z-index
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error('Cannot set z-index for jsFrame', e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createToken() {
|
|
|
|
|
var api = new mw.Api();
|
|
|
|
@ -9,29 +17,112 @@ function createToken() {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onFrameOpened() {
|
|
|
|
|
$('body').addClass('isekai-aitoolbox-visible');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onFrameClosed() {
|
|
|
|
|
$('body').removeClass('isekai-aitoolbox-visible');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function openAIToolboxPage(token) {
|
|
|
|
|
var urlTemplate = mw.config.get('wgIsekaiAIToolboxFrontendUrl');
|
|
|
|
|
var title = mw.config.get('wgTitle');
|
|
|
|
|
var url = urlTemplate.replace(/\{title\}/g, encodeURIComponent(title)).replace(/\{token\}/g, token);
|
|
|
|
|
window.open(url, '_blank');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function launchAIToolbox() {
|
|
|
|
|
var currentTime = new Date().getTime();
|
|
|
|
|
if (currentTime - tokenRefreshTime > 3600000) {
|
|
|
|
|
mw.notify(mw.msg('isekai-ai-toolbox-loading'), {
|
|
|
|
|
id: "loading-ai-toolbox-notify"
|
|
|
|
|
if ($(window).width() < 768) { // 手机端,直接打开新窗口
|
|
|
|
|
window.open(url, '_blank');
|
|
|
|
|
} else { // PC端,使用jsFrame打开
|
|
|
|
|
var frameWidth = 450;
|
|
|
|
|
var frameHeight = $(window).height() - 100;
|
|
|
|
|
var frameRight = 40;
|
|
|
|
|
var frameLeft = $(window).width() - frameWidth - frameRight;
|
|
|
|
|
|
|
|
|
|
frame = jsFrame.create({
|
|
|
|
|
name: `isekai-ai-toolbox`,
|
|
|
|
|
title: mw.msg('isekai-ai-toolbox-title'),
|
|
|
|
|
left: frameLeft, top: 40, width: frameWidth, height: frameHeight, minWidth: 350, minHeight: 550,
|
|
|
|
|
appearanceName: 'material',
|
|
|
|
|
appearanceParam: {
|
|
|
|
|
border: {
|
|
|
|
|
shadow: '2px 2px 10px rgba(0, 0, 0, 0.5)',
|
|
|
|
|
width: 0,
|
|
|
|
|
radius: 6,
|
|
|
|
|
},
|
|
|
|
|
titleBar: {
|
|
|
|
|
color: 'white',
|
|
|
|
|
background: '#333333',
|
|
|
|
|
leftMargin: 40,
|
|
|
|
|
buttonsOnLeft: [
|
|
|
|
|
{
|
|
|
|
|
fa: 'fas fa-external-link-alt',
|
|
|
|
|
name: 'openInNewTab',
|
|
|
|
|
visible: true,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
style: {
|
|
|
|
|
backgroundColor: 'rgba(249,250,251,0.95)',
|
|
|
|
|
overflow: 'auto'
|
|
|
|
|
},
|
|
|
|
|
url: url,
|
|
|
|
|
}).show();
|
|
|
|
|
|
|
|
|
|
onFrameOpened();
|
|
|
|
|
|
|
|
|
|
frame.setControl({
|
|
|
|
|
maximizeButton: 'maximizeButton',
|
|
|
|
|
demaximizeButton: 'restoreButton',
|
|
|
|
|
hideButton: 'closeButton',
|
|
|
|
|
animation: true,
|
|
|
|
|
animationDuration: 150,
|
|
|
|
|
});
|
|
|
|
|
createToken().done(function(data) {
|
|
|
|
|
if (data.aitoolbox && data.aitoolbox.createtoken) {
|
|
|
|
|
authToken = data.aitoolbox.createtoken.token;
|
|
|
|
|
tokenRefreshTime = new Date().getTime();
|
|
|
|
|
openAIToolboxPage(authToken);
|
|
|
|
|
$('#loading-ai-toolbox-notify').trigger('click');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
frame.control.on('hid', (frame, info) => {
|
|
|
|
|
frame.closeFrame();
|
|
|
|
|
frame = null;
|
|
|
|
|
onFrameClosed();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
frame.on('minimizeButton', 'click', () => {
|
|
|
|
|
frame.hide();
|
|
|
|
|
onFrameClosed();
|
|
|
|
|
|
|
|
|
|
mw.notify(mw.msg('isekai-ai-toolbox-minimized'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
frame.on('openInNewTab', 'click', () => {
|
|
|
|
|
window.open(url, '_blank');
|
|
|
|
|
frame.closeFrame();
|
|
|
|
|
frame = null;
|
|
|
|
|
onFrameClosed();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function launchAIToolbox() {
|
|
|
|
|
if (frame) {
|
|
|
|
|
// 恢复已经打开的窗口
|
|
|
|
|
frame.show();
|
|
|
|
|
onFrameOpened();
|
|
|
|
|
} else {
|
|
|
|
|
openAIToolboxPage(authToken);
|
|
|
|
|
var currentTime = new Date().getTime();
|
|
|
|
|
if (currentTime - tokenRefreshTime > 3600000) {
|
|
|
|
|
mw.notify(mw.msg('isekai-ai-toolbox-loading'), {
|
|
|
|
|
id: "loading-ai-toolbox-notify"
|
|
|
|
|
});
|
|
|
|
|
createToken().done(function(data) {
|
|
|
|
|
if (data.aitoolbox && data.aitoolbox.createtoken) {
|
|
|
|
|
authToken = data.aitoolbox.createtoken.token;
|
|
|
|
|
tokenRefreshTime = new Date().getTime();
|
|
|
|
|
openAIToolboxPage(authToken);
|
|
|
|
|
$('#loading-ai-toolbox-notify').trigger('click');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
openAIToolboxPage(authToken);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|