optimize code and settings

This commit is contained in:
wanxp 2022-11-04 00:15:28 +08:00
parent 16aacc680b
commit cd9c300cb7
13 changed files with 51 additions and 18 deletions

@ -3,6 +3,9 @@ import {PersonNameMode} from "./Constsant";
import {doubanHeaders} from "./Douban";
export const DEFAULT_SETTINGS: DoubanPluginSetting = {
//以后会被移除
bookTemplate: "", gameTemplate: "", movieTemplate: "", musicTemplate: "", noteTemplate: "", teleplayTemplate: "",
movieTemplateFile: ``,
bookTemplateFile: ``,
musicTemplateFile: ``,

@ -12,6 +12,7 @@ import HandleContext from "@App/data/model/HandleContext";
import HandleResult from "@App/data/model/HandleResult";
import {DEFAULT_TEMPLATE_CONTENT} from "../../../constant/DefaultTemplateContent";
import FileHandler from "../../../file/FileHandler";
import StringUtil from "../../../utils/StringUtil";
export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject> implements DoubanSubjectLoadHandler<T> {
@ -205,17 +206,26 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
private async getTemplate(context: HandleContext):Promise<string> {
const tempKey:TemplateKey = this.getTemplateKey(context);
// @ts-ignore
const oldTemplate:string = context.settings[tempKey.replace('File', '')]
if (oldTemplate && oldTemplate.length > 0) {
return oldTemplate;
}
const templatePath:string = context.settings[tempKey];
let firstLinkpathDest:TFile = this.doubanPlugin.app.metadataCache.getFirstLinkpathDest(templatePath, '');
// @ts-ignore
const defaultContent = DEFAULT_TEMPLATE_CONTENT[tempKey + 'Content'];
if (!templatePath || StringUtil.isBlank(templatePath)) {
return defaultContent;
}
let firstLinkpathDest:TFile = this.doubanPlugin.app.metadataCache.getFirstLinkpathDest(templatePath, '');
if (!firstLinkpathDest) {
return defaultContent;
}else {
// return firstLinkpathDest.
const val = await new FileHandler(this.doubanPlugin.app).getFileContent(firstLinkpathDest.path);
const val = await this.doubanPlugin.fileHandler.getFileContent(firstLinkpathDest.path);
return val?val:defaultContent;
}
}

@ -14,7 +14,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.bookTemplate;
return TemplateKey.bookTemplateFile;
}
parseText(beforeContent: string, extract: DoubanBookSubject, context: HandleContext, textMode: TemplateTextMode): string {

@ -14,7 +14,7 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.gameTemplate;
return TemplateKey.gameTemplateFile;
}
parseText(beforeContent: string, extract: DoubanGameSubject, context: HandleContext): string {

@ -15,7 +15,7 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.movieTemplate;
return TemplateKey.movieTemplateFile;
}
parseText(beforeContent: string, extract: DoubanMovieSubject, context: HandleContext): string {

@ -13,7 +13,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.musicTemplate;
return TemplateKey.musicTemplateFile;
}
parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string {

@ -14,7 +14,7 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.noteTemplate;
return TemplateKey.noteTemplateFile;
}
parseText(beforeContent: string, extract: DoubanNoteSubject, context: HandleContext): string {

@ -11,7 +11,7 @@ import {TemplateKey} from "../../../constant/Constsant";
*/
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.bookTemplate
return TemplateKey.bookTemplateFile
}
parseText(beforeContent: string, extract: DoubanSubject, context: HandleContext): string {

@ -17,7 +17,7 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
}
getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.teleplayTemplate
return TemplateKey.teleplayTemplateFile;
}
parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string {

@ -2,6 +2,7 @@ import {i18nHelper} from "../../lang/helper";
import {CreateTemplateSelectParams} from "@App/setting/model/CreateTemplateSelectParams";
import { FileSuggest } from "./model/FileSuggest";
import {SearchComponent, Setting} from "obsidian";
import { log } from "src/utils/Logutil";
export function createFileSelectionSetting({
@ -10,23 +11,27 @@ export function createFileSelectionSetting({
return (setting: Setting) => {
// @ts-ignore
setting.setName( i18nHelper.getMessage(name));
const templateDesc = new DocumentFragment();
// @ts-ignore
setting.setDesc( i18nHelper.getMessage(desc));
templateDesc.createDiv().innerHTML = i18nHelper.getMessage(desc) + `<br> <text class="obsidian_douban_settings_desc has_error" >不存在文件夹</> `;
setting.setDesc(templateDesc);
setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSetting(key);
let v = defaultVal;
if (oldValue) {
v = oldValue;
}
new FileSuggest(manager.app, search.inputEl);
const fs = new FileSuggest(manager.app, search.inputEl);
search.setValue(v);
// @ts-ignore
search.setPlaceholder(i18nHelper.getMessage());
search.setPlaceholder(i18nHelper.getMessage(placeholder));
search.onChange(async (value: string) => {
log.trace(`hange to : ${value} `)
manager.updateSetting(key, value);
});
});
});
});
};
}

@ -1,5 +1,13 @@
export interface DoubanPluginSetting {
//==兼容之前的配置
movieTemplate: string,
bookTemplate: string,
musicTemplate: string,
noteTemplate: string,
gameTemplate: string,
teleplayTemplate: string,
//一段时间后会被删除,以上
movieTemplateFile: string,
bookTemplateFile: string,
musicTemplateFile: string,

@ -1,21 +1,18 @@
.obsidian_douban_settings_area {
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
width: 100%;
}
.obsidian_douban_settings_textField {
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
width: 100%;
}
.obsidian_douban_search_input {
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
width: 90%;
}
@ -23,5 +20,15 @@
margin-top: 10px;
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
}
.obsidian_douban_settings_desc.has_error {
color: #fb464c;
}
.obsidian_douban_settings_input.has-error {
color: #fb464c;
border-color: #fb464c;
}