mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 16:48:44 +08:00
add login by cookie
This commit is contained in:
parent
afecbcdcd0
commit
2b3c310f4c
@ -1,4 +1,4 @@
|
|||||||
import {i18nHelper} from "../../lang/helper";
|
import I18nHelper, {i18nHelper} from "../../lang/helper";
|
||||||
import {Platform, Setting} from "obsidian";
|
import {Platform, Setting} from "obsidian";
|
||||||
import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings";
|
import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings";
|
||||||
import SettingsManager from "./SettingsManager";
|
import SettingsManager from "./SettingsManager";
|
||||||
@ -7,6 +7,7 @@ import DoubanLogoutModel from "../component/DoubanLogoutModel";
|
|||||||
import User from "../user/User";
|
import User from "../user/User";
|
||||||
import {createFolderSelectionSetting} from "./TemplateSettingHelper";
|
import {createFolderSelectionSetting} from "./TemplateSettingHelper";
|
||||||
import StringUtil from "../../utils/StringUtil";
|
import StringUtil from "../../utils/StringUtil";
|
||||||
|
import {log} from "../../utils/Logutil";
|
||||||
|
|
||||||
export function constructBasicUI(containerEl: HTMLElement, manager: SettingsManager) {
|
export function constructBasicUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
containerEl.createEl('h3', { text: i18nHelper.getMessage('1210') });
|
containerEl.createEl('h3', { text: i18nHelper.getMessage('1210') });
|
||||||
@ -124,10 +125,12 @@ export function constructDoubanTokenSettingsUI(containerEl: HTMLElement, manager
|
|||||||
|
|
||||||
export function constructLoginSettingsUI(containerEl: HTMLElement, manager: SettingsManager) {
|
export function constructLoginSettingsUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
manager.debug(`配置界面:未登录-展示登录按钮`)
|
manager.debug(`配置界面:未登录-展示登录按钮`)
|
||||||
new Setting(containerEl).setName(i18nHelper.getMessage('100131')).addButton((button) => {
|
let loginSetting = containerEl.createDiv("login-button");
|
||||||
|
let loginCookie = containerEl.createDiv("login-button-cookie");
|
||||||
|
|
||||||
|
new Setting(loginSetting).setName(i18nHelper.getMessage('100131')).addButton((button) => {
|
||||||
return button
|
return button
|
||||||
.setButtonText(i18nHelper.getMessage('100130'))
|
.setButtonText(i18nHelper.getMessage('100130'))
|
||||||
.setCta()
|
|
||||||
.onClick(async () => {
|
.onClick(async () => {
|
||||||
button.setDisabled(true);
|
button.setDisabled(true);
|
||||||
manager.debug(`配置界面:点击登录按钮`)
|
manager.debug(`配置界面:点击登录按钮`)
|
||||||
@ -135,6 +138,67 @@ export function constructLoginSettingsUI(containerEl: HTMLElement, manager: Sett
|
|||||||
await loginModel.doLogin();
|
await loginModel.doLogin();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
const loginCookieSetting:Setting = new Setting(loginSetting).setName(i18nHelper.getMessage('100133'));
|
||||||
|
// .setDesc(i18nHelper.getMessage('100134'))
|
||||||
|
loginCookieSetting.addButton((button) => {
|
||||||
|
loginCookieSetting.descEl.appendChild(
|
||||||
|
createFragment((frag) => {
|
||||||
|
frag.appendText(
|
||||||
|
i18nHelper.getMessage('100134')
|
||||||
|
);
|
||||||
|
frag.createEl(
|
||||||
|
'a',
|
||||||
|
{
|
||||||
|
text: i18nHelper.getMessage('100139'),
|
||||||
|
href: 'https://wiki.wanxuping.com/zh/obsidian-douban/setting/login/getCookie',
|
||||||
|
},
|
||||||
|
(a) => {
|
||||||
|
a.setAttr('target', '_blank');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
frag.appendText(i18nHelper.getMessage('100138'));
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return button
|
||||||
|
.setButtonText(i18nHelper.getMessage('100135'))
|
||||||
|
.onClick(async () => {
|
||||||
|
button.setDisabled(true);
|
||||||
|
manager.debug(`配置界面:点击登录异常处理按钮`)
|
||||||
|
constructLoginCookieSettingsUI(loginCookie, containerEl, manager);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructLoginCookieSettingsUI(containerEl: HTMLElement, parentContainerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
manager.debug(`配置界面:登录异常处理按钮-展示Cookie输入框`)
|
||||||
|
new Setting(containerEl).setName(i18nHelper.getMessage('100136'))
|
||||||
|
.setClass("obsidian_douban_settings_cookie_login").addTextArea((text) => {
|
||||||
|
text.onChange(value => manager.updateCookieTemp(value));
|
||||||
|
return text;
|
||||||
|
}).addExtraButton((button) => {
|
||||||
|
return button
|
||||||
|
.setIcon('check')
|
||||||
|
.onClick(async () => {
|
||||||
|
button.setDisabled(true);
|
||||||
|
manager.debug(`配置界面:确认输入Cookie`);
|
||||||
|
const user:User = await manager.plugin.userComponent.loginCookie(manager.getCookieTemp())
|
||||||
|
if (!user || !user.id) {
|
||||||
|
log.notice(i18nHelper.getMessage('100137'))
|
||||||
|
}
|
||||||
|
constructDoubanTokenSettingsUI(parentContainerEl, manager);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.addExtraButton((button) => {
|
||||||
|
return button
|
||||||
|
.setIcon('x')
|
||||||
|
.onClick(async () => {
|
||||||
|
button.setDisabled(true);
|
||||||
|
manager.debug(`配置界面:取消输入Cookie`);
|
||||||
|
constructDoubanTokenSettingsUI(parentContainerEl, manager);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function constructHasLoginSettingsUI(containerEl: HTMLElement, manager: SettingsManager) {
|
export function constructHasLoginSettingsUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
|||||||
@ -11,6 +11,8 @@ export default class SettingsManager {
|
|||||||
cleanupFns: Array<() => void> = [];
|
cleanupFns: Array<() => void> = [];
|
||||||
innerLogger: Logger = new Logger();
|
innerLogger: Logger = new Logger();
|
||||||
|
|
||||||
|
cookieTemp:string;
|
||||||
|
|
||||||
constructor(app: App, plugin: DoubanPlugin) {
|
constructor(app: App, plugin: DoubanPlugin) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@ -43,4 +45,12 @@ export default class SettingsManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateCookieTemp(cookie:string):void {
|
||||||
|
this.cookieTemp = cookie;
|
||||||
|
}
|
||||||
|
|
||||||
|
getCookieTemp():string {
|
||||||
|
return this.cookieTemp;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,7 +74,9 @@ export default class UserComponent {
|
|||||||
this.user = user;
|
this.user = user;
|
||||||
this.settingsManager.debug(`配置界面:loginCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
this.settingsManager.debug(`配置界面:loginCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
||||||
});
|
});
|
||||||
|
if(this.user) {
|
||||||
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
||||||
|
}
|
||||||
return this.user;
|
return this.user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -88,6 +88,13 @@ PS: This file could be delete if you want to.
|
|||||||
'100129': `You have not login Douban, please login in computer first! After login, you can use your rating and reading status, see the last for specific variables.`,
|
'100129': `You have not login Douban, please login in computer first! After login, you can use your rating and reading status, see the last for specific variables.`,
|
||||||
'100130': `Login`,
|
'100130': `Login`,
|
||||||
'100131': `Login Douban`,
|
'100131': `Login Douban`,
|
||||||
|
'100133': `For Login Error `,
|
||||||
|
'100135': `LoginByCookie`,
|
||||||
|
'100136': `Cookie Input`,
|
||||||
|
'100137': `Cookie Login Failed, Can not get User Info By Cookie, Please Check Your Cookie Text`,
|
||||||
|
'100134': `If you login failed, please click this button and follow`,
|
||||||
|
'100139': `Tutorial`,
|
||||||
|
'100138': `get Cookie and input to text area bellow`,
|
||||||
'100132': `Load Douban Login Page Failed`,
|
'100132': `Load Douban Login Page Failed`,
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -82,6 +82,13 @@ export default {
|
|||||||
'100129': `豆瓣未登录,请先在电脑端登录!登录后导入参数可使用你的评分以及阅读状态等,具体可用参数见最后.`,
|
'100129': `豆瓣未登录,请先在电脑端登录!登录后导入参数可使用你的评分以及阅读状态等,具体可用参数见最后.`,
|
||||||
'100130': `登录`,
|
'100130': `登录`,
|
||||||
'100131': `登录豆瓣`,
|
'100131': `登录豆瓣`,
|
||||||
|
'100133': `登录出错处理`,
|
||||||
|
'100135': `Cookie登录`,
|
||||||
|
'100136': `Cookie输入`,
|
||||||
|
'100137': `使用Cookie登录失败,请确认Cookie填写是否正确`,
|
||||||
|
'100134': `如果上面登录按钮点击后在弹窗中登录还是没成功,请点击此[Cookie登录]按钮,然后按照`,
|
||||||
|
'100139': `[教程]`,
|
||||||
|
'100138': `获取Cookie,并将Cookie复制到下面输入框中,最后点击✔️`,
|
||||||
'100132': `加载豆瓣登录页面失败`,
|
'100132': `加载豆瓣登录页面失败`,
|
||||||
|
|
||||||
//DoubanSettingTab
|
//DoubanSettingTab
|
||||||
|
|||||||
@ -4,6 +4,13 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.obsidian_douban_settings_cookie_login > .setting-item-control > textarea {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
height: 100px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.obsidian_douban_settings_textField {
|
.obsidian_douban_settings_textField {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user