obsidian-douban/src/org/wanxp/douban/component/DoubanLogoutModel.ts
Wanxp a120e450e9 fix #139 #128
1. 优化配置将配置页面调整为tab
2. 优化文件夹选取方式避免卡顿
3. 优化模板文件选取方式避免卡顿
4. 增加设置的导入导出用以备份
5. 优化加载插件的卡顿问题,现在加载会非常快
6. 优化了配置的文本,简化了文本内容
2025-03-06 18:54:01 +08:00

71 lines
2.6 KiB
TypeScript

import {DoubanSettingTab} from "../setting/DoubanSettingTab";
import {i18nHelper} from "../../lang/helper";
import SettingsManager from "../setting/SettingsManager";
import {constructDoubanTokenSettingsUI, constructLoginSettingsUI} from "../setting/LoginSettingsHelper";
import {log} from "../../utils/Logutil";
// Credits go to zhaohongxuan's Weread Plugin : https://github.com/zhaohongxuan/obsidian-weread-plugin
export default class DoubanLogoutModel {
private modal: any;
private settingsManager: SettingsManager;
private containerEl: HTMLElement;
constructor(containerEl: HTMLElement, settingsManager: SettingsManager) {
this.settingsManager = settingsManager;
this.settingsManager.debug(`配置界面:初始化登出界面`)
this.containerEl = containerEl;
const { remote } = require('electron');
const { BrowserWindow: RemoteBrowserWindow } = remote;
this.modal = new RemoteBrowserWindow({
parent: remote.getCurrentWindow(),
width: 960,
height: 540,
show: false
});
this.modal.once('ready-to-show', () => {
this.modal.setTitle(i18nHelper.getMessage('100101'));
this.modal.show();
});
this.modal.on('closed', () => {
this.showCloseMessage();
constructDoubanTokenSettingsUI(this.containerEl, this.settingsManager);
});
const session = this.modal.webContents.session;
const filter = {
urls: ['https://www.douban.com/',
'https://www.douban.com/accounts/logout']
};
session.webRequest.onSendHeaders(filter, (details:any) => {
this.settingsManager.debug(`配置界面:登出界面请求头检测:${details.url}`)
const cookies = details.requestHeaders['Cookie'];
// const wr_name = cookieArr.find((cookie) => cookie.name == 'wr_name').value;
// if (cookies && cookies.indexOf('dbcl2') < 0) {
this.settingsManager.debug(`配置界面:登出界面退出登录请求检测成功,准备退出登录`)
this.settingsManager.plugin.userComponent.logout();
this.settingsManager.debug(`配置界面:登出界面退出登录成功`);
this.onClose();
// }
});
}
async doLogout() {
this.settingsManager.debug(`配置界面:登出界面加载登出页面`)
await this.modal.loadURL('https://www.douban.com/accounts/logout?source=main&ck=DfFJ');
}
onClose() {
this.settingsManager.debug(`配置界面:登出界面关闭, 自动退出登出界面`);
// this.modal.destroy();
this.modal.close();
}
private showCloseMessage() {
if(this.settingsManager.plugin.userComponent.isLogin()) {
this.settingsManager.debug(`配置界面:登出界面关闭, 但未检测到登出, 退出登录失败`)
}else {
this.settingsManager.debug(`配置界面:登出界面关闭, 退出登录成功`)
}
}
}