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"; import {doubanHeaders} from "./Douban";
export const DEFAULT_SETTINGS: DoubanPluginSetting = { export const DEFAULT_SETTINGS: DoubanPluginSetting = {
//以后会被移除
bookTemplate: "", gameTemplate: "", movieTemplate: "", musicTemplate: "", noteTemplate: "", teleplayTemplate: "",
movieTemplateFile: ``, movieTemplateFile: ``,
bookTemplateFile: ``, bookTemplateFile: ``,
musicTemplateFile: ``, musicTemplateFile: ``,

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

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

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

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

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

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

@ -17,7 +17,7 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
} }
getTemplateKey(context: HandleContext): TemplateKey { getTemplateKey(context: HandleContext): TemplateKey {
return TemplateKey.teleplayTemplate return TemplateKey.teleplayTemplateFile;
} }
parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string { 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 {CreateTemplateSelectParams} from "@App/setting/model/CreateTemplateSelectParams";
import { FileSuggest } from "./model/FileSuggest"; import { FileSuggest } from "./model/FileSuggest";
import {SearchComponent, Setting} from "obsidian"; import {SearchComponent, Setting} from "obsidian";
import { log } from "src/utils/Logutil";
export function createFileSelectionSetting({ export function createFileSelectionSetting({
@ -10,23 +11,27 @@ export function createFileSelectionSetting({
return (setting: Setting) => { return (setting: Setting) => {
// @ts-ignore // @ts-ignore
setting.setName( i18nHelper.getMessage(name)); setting.setName( i18nHelper.getMessage(name));
const templateDesc = new DocumentFragment();
// @ts-ignore // @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) => { setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSetting(key); const [oldValue, defaultVal] = manager.getSetting(key);
let v = defaultVal; let v = defaultVal;
if (oldValue) { if (oldValue) {
v = oldValue; v = oldValue;
} }
new FileSuggest(manager.app, search.inputEl); const fs = new FileSuggest(manager.app, search.inputEl);
search.setValue(v); search.setValue(v);
// @ts-ignore // @ts-ignore
search.setPlaceholder(i18nHelper.getMessage()); search.setPlaceholder(i18nHelper.getMessage(placeholder));
search.onChange(async (value: string) => { search.onChange(async (value: string) => {
log.trace(`hange to : ${value} `)
manager.updateSetting(key, value); manager.updateSetting(key, value);
}); });
}); });
}; };
} }

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

@ -2,7 +2,7 @@ import {TAbstractFile, TFile, TFolder} from "obsidian";
import {TextInputSuggest} from "@App/setting/model/TextInputSuggest"; import {TextInputSuggest} from "@App/setting/model/TextInputSuggest";
// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes // Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes
export class FileSuggest extends TextInputSuggest<TFile> { export class FileSuggest extends TextInputSuggest<TFile> {
getSuggestions(inputStr: string): TFile[] { getSuggestions(inputStr: string): TFile[] {
const abstractFiles = this.app.vault.getAllLoadedFiles(); const abstractFiles = this.app.vault.getAllLoadedFiles();
const files: TFile[] = []; const files: TFile[] = [];

@ -1,21 +1,18 @@
.obsidian_douban_settings_area { .obsidian_douban_settings_area {
margin-left: 5px; margin-left: 5px;
margin-right: 5px; margin-right: 5px;
font-size: 14px;
width: 100%; width: 100%;
} }
.obsidian_douban_settings_textField { .obsidian_douban_settings_textField {
margin-left: 5px; margin-left: 5px;
margin-right: 5px; margin-right: 5px;
font-size: 14px;
width: 100%; width: 100%;
} }
.obsidian_douban_search_input { .obsidian_douban_search_input {
margin-left: 5px; margin-left: 5px;
margin-right: 5px; margin-right: 5px;
font-size: 14px;
width: 90%; width: 90%;
} }
@ -23,5 +20,15 @@
margin-top: 10px; margin-top: 10px;
margin-left: 5px; margin-left: 5px;
margin-right: 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;
}