mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 08:38:41 +08:00
106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
import {App, Setting} from "obsidian";
|
|
import { DEFAULT_SETTINGS } from "src/org/wanxp/constant/DefaultSettings";
|
|
import DoubanPlugin from "../../main";
|
|
import Logger from "../../utils/Logutil";
|
|
import { DoubanPluginSetting } from "./model/DoubanPluginSetting";
|
|
import StringUtil from "../../utils/StringUtil";
|
|
import {DEFAULT_DOUBAN_HEADERS, ONLINE_SETTING_DEFAULT, SupportType} from "../../constant/Constsant";
|
|
import GithubUtil from "../../utils/GithubUtil";
|
|
import {DoubanPluginOnlineData} from "./model/DoubanPluginOnlineData";
|
|
import {DoubanPluginOnlineSettings} from "./model/DoubanPluginOnlineSettings";
|
|
import {DoubanPluginSubjectProperty} from "./model/DoubanPluginSubjectProperty";
|
|
import HandleContext from "../data/model/HandleContext";
|
|
import HtmlUtil from "../../utils/HtmlUtil";
|
|
|
|
export default class SettingsManager {
|
|
app: App;
|
|
plugin: DoubanPlugin;
|
|
settings: DoubanPluginSetting;
|
|
cleanupFns: Array<() => void> = [];
|
|
innerLogger: Logger = new Logger();
|
|
cookieTemp:string;
|
|
onlineSettings: DoubanPluginOnlineSettings;
|
|
|
|
constructor(app: App, plugin: DoubanPlugin) {
|
|
this.app = app;
|
|
this.plugin = plugin;
|
|
this.settings = plugin.settings;
|
|
}
|
|
|
|
|
|
|
|
getSettingWithDefault(key: keyof DoubanPluginSetting) {
|
|
|
|
return [this.settings[key], DEFAULT_SETTINGS[key]];
|
|
}
|
|
|
|
getSetting(key: keyof DoubanPluginSetting) {
|
|
|
|
return this.settings[key];
|
|
}
|
|
|
|
getHeaders():object {
|
|
if (this.settings.loginHeadersContent) {
|
|
// return StringUtil.parseHeaders(this.settings.loginHeadersContent);
|
|
return JSON.parse(this.settings.loginHeadersContent);
|
|
}else if (this.settings.loginCookiesContent) {
|
|
return {Cookie: this.settings.loginCookiesContent, ...DEFAULT_DOUBAN_HEADERS};
|
|
}else {
|
|
return DEFAULT_DOUBAN_HEADERS;
|
|
}
|
|
}
|
|
|
|
getHeadersByCookie(cookie:string):object {
|
|
if (cookie) {
|
|
return {...DEFAULT_DOUBAN_HEADERS, Cookie: cookie};
|
|
}else {
|
|
return DEFAULT_DOUBAN_HEADERS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
async updateSetting(key: keyof DoubanPluginSetting, value:any) {
|
|
// @ts-ignore
|
|
this.settings[key] = value;
|
|
await this.plugin.saveSettings();
|
|
}
|
|
|
|
debug(message:any):any {
|
|
if(this.settings.debugMode) {
|
|
return this.innerLogger.debug(message);
|
|
}else {
|
|
return message;
|
|
}
|
|
}
|
|
|
|
updateCookieTemp(cookie:string):void {
|
|
this.cookieTemp = cookie;
|
|
}
|
|
|
|
getCookieTemp():string {
|
|
return this.cookieTemp;
|
|
}
|
|
|
|
getSelector(itemType: SupportType, propertyName: string):string[] {
|
|
if (this.onlineSettings && this.onlineSettings.properties) {
|
|
const doubanPluginSubjectProperty:DoubanPluginSubjectProperty = this.onlineSettings.properties.find(subjectProperty => subjectProperty.type === itemType && subjectProperty.name === propertyName);
|
|
if(doubanPluginSubjectProperty) {
|
|
return doubanPluginSubjectProperty.selectors;
|
|
}
|
|
}
|
|
const doubanPluginSubjectProperty = ONLINE_SETTING_DEFAULT.properties.find(subjectProperty => subjectProperty.type === itemType && subjectProperty.name === propertyName);
|
|
if(doubanPluginSubjectProperty) {
|
|
return doubanPluginSubjectProperty.selectors;
|
|
}
|
|
return [];
|
|
}
|
|
|
|
handleArray(arr: string[]): string {
|
|
let result:string = StringUtil.handleArray(arr, this.settings);
|
|
return HtmlUtil.strToHtml(result);
|
|
}
|
|
|
|
}
|