/**
 * 入口文件
 *
 * 本文件为默认扩展入口文件，如果你想要配置其它文件作为入口文件，
 * 请修改 `extension.json` 中的 `entry` 字段；
 *
 * 请在此处使用 `export`  导出所有你希望在 `headerMenus` 中引用的方法，
 * 方法通过方法名与 `headerMenus` 关联。
 *
 * 如需了解更多开发细节，请阅读：
 * https://prodocs.lceda.cn/cn/api/guide/
 */
import * as extensionConfig from '../extension.json';

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function activate(status?: 'onStartupFinished', arg?: string): void {}

export async function about(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/about.html', 400, 200);
}

export async function openLeyeIFrame(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/leye.html', 1280, 680, 'leye-main', { minimizeButton: true, grayscaleMask: true });
}

export async function openLeyeIFrameNew(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/newLeye.html', 1280, 680, 'leye-main', { minimizeButton: true, grayscaleMask: true });
}

export async function openImportIFrame(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/import.html', 1280, 680, 'leye-import', { minimizeButton: true, grayscaleMask: true });
}

export async function openExportIFrame(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/export.html', 1000, 600, 'leye-export', { minimizeButton: true, grayscaleMask: true });
}

export async function openSettings(): Promise<void> {
	await eda.sys_IFrame.openIFrame('/iframe/settings.html', 400, 600);
}

// @ts-ignore
if (!globalThis['__LEYE_INIT_FLAG__']) {
	console.log('[LEYE] 扩展初始化');
	// @ts-ignore
	globalThis['__LEYE_INIT_FLAG__'] = true;
	// @ts-ignore
	eda.sys_ShortcutKey.unregisterShortcutKey(['Shift+L']).then((r) => console.log('[LEYE] 注销快捷键: ', r));
	// @ts-ignore
	eda.sys_ShortcutKey
		.registerShortcutKey(['Shift+L'], 'openLeyeIFrame', async () => {
			await openLeyeIFrameNew();
		})
		.then((r) => console.log('[LEYE] 注册快捷键: ', r));

	// 获取公告
	console.log('[LEYE] 获取公告和更新');
	eda.sys_ClientUrl
		.request('https://leye.dragon.edu.kg/release/notice.json')
		.then(async (res: any) => {
			const data = await res.json();
			console.log('[LEYE] 获取公告: ', data);
			if (eda.sys_Storage.getExtensionUserConfig('cache-notice-id') !== data.notices[0].id) {
				await eda.sys_Storage.setExtensionUserConfig('cache-notice-id', data.notices[0].id);
				eda.sys_Dialog.showInformationMessage(data.notices[0].content, data.notices[0].title, '知道了');
			}
		})
		.catch((err: any) => {
			console.error('[LEYE] 获取公告和更新失败: ', err);
		});

	// 获取最新版本
	console.log('[LEYE] 获取最新版本');
	if (eda.sys_Storage.getExtensionUserConfig('auto-check-update') ?? true) {
		eda.sys_ClientUrl
			.request('https://leye.dragon.edu.kg/release/eext.ver.json')
			.then(async (res: any) => {
				const data = await res.json();
				console.log('[LEYE] 获取最新版本: ', data);
				if (extensionConfig.version !== data.versions[0].ver) {
					eda.sys_Dialog.showConfirmationMessage(
						data.versions[0].changelog,
						`LEYE 有新版本 ${data.versions[0].ver} 可用，是否前往下载？`,
						'前往下载',
						'算了',
						async (r) => {
							if (r) {
								eda.sys_Window.open('https://lrurl.top/LeyeEEXT', ESYS_WindowOpenTarget.BLANK);
							}
						},
					);
				}
			})
			.catch((err: any) => {
				console.error('[LEYE] 获取最新版本失败: ', err);
			});
	} else {
		console.log('[LEYE] 用户主动关闭自动检查更新');
	}
}
