diff --git a/src/org/wanxp/constant/DefaultSettings.ts b/src/org/wanxp/constant/DefaultSettings.ts
index 956e3b6..b6e0711 100644
--- a/src/org/wanxp/constant/DefaultSettings.ts
+++ b/src/org/wanxp/constant/DefaultSettings.ts
@@ -30,4 +30,5 @@ export const DEFAULT_SETTINGS: DoubanPluginSetting = {
loginCookiesContent: '',
cacheImage: true,
attachmentPath: 'assets',
+ syncHandledData: new Map(),
}
diff --git a/src/org/wanxp/douban/component/DoubanSyncModal.ts b/src/org/wanxp/douban/component/DoubanSyncModal.ts
index a7abe76..2fcb160 100644
--- a/src/org/wanxp/douban/component/DoubanSyncModal.ts
+++ b/src/org/wanxp/douban/component/DoubanSyncModal.ts
@@ -90,7 +90,7 @@ export class DoubanSyncModal extends Modal {
if (!this.plugin.statusHolder.syncStarted) {
progress.innerHTML = `
- ${syncStatus.getHandle()}/${syncStatus.getTotal()}:${i18nHelper.getMessage('110036')}
+ ${syncStatus.getHandle()}/${syncStatus.getTotal()}:${i18nHelper.getMessage('110036')}
`
backgroundButton.setDisabled(true);
stopButton.setButtonText(i18nHelper.getMessage('110036'))
@@ -98,7 +98,7 @@ export class DoubanSyncModal extends Modal {
}
progress.innerHTML = `
- ${syncStatus.getHandle()}/${syncStatus.getTotal()}
+ ${syncStatus.getHandle()}/${syncStatus.getTotal()}
`}
private showSyncConfig(contentEl: HTMLElement) {
@@ -114,6 +114,7 @@ export class DoubanSyncModal extends Modal {
cacheImage: ( settings.cacheImage == null) ? DEFAULT_SETTINGS.cacheImage : settings.cacheImage,
attachmentPath: (settings.attachmentPath == '' || settings.attachmentPath == null) ? DEFAULT_SETTINGS.attachmentPath : settings.attachmentPath,
templateFile: (settings.movieTemplateFile == '' || settings.movieTemplateFile == null) ? DEFAULT_SETTINGS.movieTemplateFile : settings.movieTemplateFile,
+ incrementalUpdate: true,
};
this.showConfigPan(contentEl.createDiv('config'), syncConfig, false);
const controls = contentEl.createDiv("controls");
@@ -155,6 +156,7 @@ export class DoubanSyncModal extends Modal {
this.showOutputFolderSelections(contentEl, config, disable);
this.showOutiFleName(contentEl, config, disable);
this.showAttachmentsFileConfig(contentEl, config, disable);
+ this.showUpdateAllConfig(contentEl, config, disable);
this.showForceUpdateConfig(contentEl, config, disable);
}
@@ -218,33 +220,21 @@ export class DoubanSyncModal extends Modal {
}).setDisabled(disable);
}
- private showOutiFleName(containerEl: HTMLElement, config: SyncConfig, disable:boolean) {
- const {settings} = this.plugin;
- const placeHolder =(settings.dataFileNamePath == '' || settings.dataFileNamePath == null) ? DEFAULT_SETTINGS.dataFileNamePath : settings.dataFileNamePath;
+ private showOutiFleName(containerEl: HTMLElement, config: SyncConfig, disable:boolean) {
const dataFilePathSetting = new Setting(containerEl)
.setName(i18nHelper.getMessage('121601'))
.setDesc(i18nHelper.getMessage('121602'))
.addText((textField) => {
- textField.setPlaceholder(placeHolder)
+ textField.setPlaceholder(i18nHelper.getMessage('121602'))
.setValue(config.dataFileNamePath)
.onChange(async (value) => {
config.dataFileNamePath = value
});
})
.setDisabled(disable);
- // dataFilePathSetting.addExtraButton((button) => {
- // button
- // .setIcon('reset')
- // .setTooltip(i18nHelper.getMessage('121902'))
- // .onClick(async () => {
- // config.dataFileNamePath = placeHolder
- // this.showOutiFleName(containerEl, config, disable);
- // });
- // })
}
showOutputFolderSelections(containerEl: HTMLElement, config: SyncConfig, disable:boolean) {
- const placeHolder:string = this.plugin.settings.dataFilePath ? this.plugin.settings.dataFilePath : DEFAULT_SETTINGS.dataFilePath;
new Setting(containerEl)
.setName( i18nHelper.getMessage('121501'))
.setDesc( i18nHelper.getMessage('121502'))
@@ -253,7 +243,7 @@ export class DoubanSyncModal extends Modal {
// @ts-ignore
search.setValue(config.dataFilePath)
// @ts-ignore
- .setPlaceholder(placeHolder)
+ .setPlaceholder(i18nHelper.getMessage('121503'))
.onChange(async (value: string) => {
config.dataFilePath = value;
});
@@ -265,7 +255,6 @@ export class DoubanSyncModal extends Modal {
containerEl.empty();
const key:string = this.getKey(config.syncType);
// @ts-ignore
- const placeHolder:string = this.plugin.settings[key] ? this.plugin.settings[key] : DEFAULT_SETTINGS[key];
let setting = new Setting(containerEl)
.setName(i18nHelper.getMessage('121101'))
.setDesc(i18nHelper.getMessage('121102'))
@@ -274,7 +263,6 @@ export class DoubanSyncModal extends Modal {
// @ts-ignore
search.setValue(config.templateFile)
// @ts-ignore
- .setPlaceholder(placeHolder)
.onChange(async (value: string) => {
config.templateFile = value;
});
@@ -323,6 +311,8 @@ export class DoubanSyncModal extends Modal {
.setDisabled(disable);
}
+
+
showAttachmentsFileConfig(containerEl: HTMLElement, config: SyncConfig, disable:boolean) {
const settings = new Setting(containerEl);
let attachmentFileEl = containerEl.createDiv('attachment-file-path-selection');
@@ -346,7 +336,6 @@ export class DoubanSyncModal extends Modal {
if (!show) {
return;
}
- const placeHolder:string = this.plugin.settings.attachmentPath ? this.plugin.settings.attachmentPath : DEFAULT_SETTINGS.attachmentPath;
new Setting(containerEl)
.setName( i18nHelper.getMessage('121432'))
.setDesc( i18nHelper.getMessage('121433'))
@@ -355,7 +344,7 @@ export class DoubanSyncModal extends Modal {
// @ts-ignore
search.setValue(config.attachmentPath)
// @ts-ignore
- .setPlaceholder(placeHolder)
+ .setPlaceholder(i18nHelper.getMessage('121434'))
.onChange(async (value: string) => {
config.attachmentPath = value;
});
@@ -363,4 +352,19 @@ export class DoubanSyncModal extends Modal {
.setDisabled(disable);
}
+ showUpdateAllConfig(containerEl: HTMLElement, config: SyncConfig, disable:boolean) {
+ new Setting(containerEl)
+ .setName(i18nHelper.getMessage('110039'))
+ .setDesc(i18nHelper.getMessage('110040'))
+ .addToggle((toggleComponent) => {
+ toggleComponent
+ .setTooltip(i18nHelper.getMessage('110040'))
+ .setValue(config.incrementalUpdate)
+ .onChange(async (value) => {
+ config.incrementalUpdate = value;
+ });
+ })
+ .setDisabled(disable);
+ }
+
}
diff --git a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts
index 597035a..b959367 100644
--- a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts
+++ b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts
@@ -160,9 +160,9 @@ export default abstract class DoubanAbstractLoadHandler
log.error(i18nHelper.getMessage('130101', e.toString()), e);
if (url) {
let id = StringUtil.analyzeIdByUrl(url);
- context.syncStatusHolder?context.syncStatusHolder.fail(id, ''):null;
+ context.syncStatusHolder?context.syncStatusHolder.syncFail(id, ''):null;
}else {
- context.syncStatusHolder?context.syncStatusHolder.handled(1):null;
+ context.syncStatusHolder?context.syncStatusHolder.syncHandled(1):null;
}
});
@@ -338,11 +338,13 @@ export default abstract class DoubanAbstractLoadHandler
private async getTemplate(extract: T, context: HandleContext): Promise {
const {syncConfig} = context;
- if (syncConfig && syncConfig.templateFile) {
- const val = await this.doubanPlugin.fileHandler.getFileContent(syncConfig.templateFile);
- if (val) {
- return val;
- }
+ if (syncConfig) {
+ if(syncConfig.templateFile) {
+ const val = await this.doubanPlugin.fileHandler.getFileContent(syncConfig.templateFile);
+ if (val) {
+ return val;
+ }
+ }
}
const tempKey: TemplateKey = this.getTemplateKey();
const templatePath: string = context.settings[tempKey];
diff --git a/src/org/wanxp/douban/data/model/HandleContext.ts b/src/org/wanxp/douban/data/model/HandleContext.ts
index 3189e37..18030b1 100644
--- a/src/org/wanxp/douban/data/model/HandleContext.ts
+++ b/src/org/wanxp/douban/data/model/HandleContext.ts
@@ -7,6 +7,7 @@ import DoubanPlugin from "../../../main";
import SyncStatusHolder from "../../sync/model/SyncStatusHolder";
import {SyncConfig} from "../../sync/model/SyncConfig";
import DoubanSubject from "./DoubanSubject";
+import GlobalStatusHolder from "../../model/GlobalStatusHolder";
export default interface HandleContext {
plugin:DoubanPlugin;
@@ -16,7 +17,7 @@ export default interface HandleContext {
userComponent: UserComponent;
netFileHandler: NetFileHandler;
showAfterCreate?:boolean;
- syncStatusHolder?:SyncStatusHolder;
+ syncStatusHolder?:GlobalStatusHolder;
action:string;
syncConfig?: SyncConfig;
listItem?:DoubanSubject;
diff --git a/src/org/wanxp/douban/model/GlobalStatusHolder.ts b/src/org/wanxp/douban/model/GlobalStatusHolder.ts
index b1f915d..5ff54de 100644
--- a/src/org/wanxp/douban/model/GlobalStatusHolder.ts
+++ b/src/org/wanxp/douban/model/GlobalStatusHolder.ts
@@ -1,17 +1,30 @@
-import GlobalSyncStatusHolder from "../sync/model/GlobalSyncStatusHolder";
import {SyncConfig} from "../sync/model/SyncConfig";
-import {Notice} from "obsidian";
+import {App, Notice} from "obsidian";
import {i18nHelper} from "../../lang/helper";
-import {SyncTypeRecords} from "../../constant/Constsant";
+import { SyncTypeRecords} from "../../constant/Constsant";
import {DoubanSubjectState} from "../../constant/DoubanUserState";
+import SyncStatusHolder from "../sync/model/SyncStatusHolder";
+import DoubanPlugin from "../../main";
+import {HandleKey} from "../sync/model/HandledKey";
+import {HandleValue} from "../sync/model/HandleValue";
export default class GlobalStatusHolder {
- public syncStatus:GlobalSyncStatusHolder;
+ public syncStatus:SyncStatusHolder;
public syncStarted:boolean;
public syncStartTime:number;
- public completeSync() {
+ private _app:App;
+ private _plugin:DoubanPlugin;
+
+
+ constructor(app:App, plugin:DoubanPlugin) {
+ this._app = app;
+ this._plugin = plugin;
+ }
+
+ public async completeSync() {
this.syncStarted = false;
+ await this.saveHandledData();
}
public startSync(syncConfigOut: SyncConfig):boolean {
@@ -21,7 +34,7 @@ export default class GlobalStatusHolder {
new Notice(i18nHelper.getMessage('110008'), SyncTypeRecords[syncConfig.syncType], DoubanSubjectState[syncConfig.scope]);
return false;
}
- this.syncStatus = new GlobalSyncStatusHolder(syncConfigOut);
+ this.syncStatus = new SyncStatusHolder(syncConfigOut);
this.syncStarted = true;
this.syncStartTime = new Date().getTime();
return true;
@@ -29,10 +42,70 @@ export default class GlobalStatusHolder {
public stopSync() {
this.syncStarted = false;
-
}
public syncing() {
return this.syncStarted;
}
+
+ public syncReplace(id:string, title:string) {
+ this.syncStatus.replace(id, title);
+ }
+
+ public syncExists(id:string, title:string) {
+ this.syncStatus.exists(id, title);
+ }
+
+ public syncCreate(id:string, title:string) {
+ this.syncStatus.create(id, title);
+ }
+
+ public syncFail(id:string, title:string) {
+ this.syncStatus.fail(id, title);
+ }
+
+ public putSyncHandledData(handledData:Map>) {
+ this.syncStatus.handledData = handledData;
+ }
+
+ public initSyncHandledData() {
+ this.putSyncHandledData(this._plugin.settings.syncHandledData);
+ const incrementalUpdate:boolean = this.syncStatus.syncConfig.incrementalUpdate;
+ if (incrementalUpdate == false) {
+ this.syncStatus.resetSyncHandledSet();
+ }
+ }
+
+ public setTotal(total:number) {
+ this.syncStatus.setTotal(total);
+ }
+
+ syncHandled(num:number) {
+ this.syncStatus.handled(num);
+ }
+
+ syncTotalNum(num:number) {
+ this.syncStatus.setTotal(num);
+ }
+
+ getSyncTotal():number {
+ return this.syncStatus.getTotal();
+ }
+
+ getSyncHandle():number {
+ return this.syncStatus.getHandle();
+ }
+
+ private async saveHandledData() {
+ if(!this.syncStatus || !this.syncStatus.handledData) {
+ return;
+ }
+ this._plugin.settings.syncHandledData = this.syncStatus.handledData;
+ await this._plugin.saveSettings();
+
+ }
+
+ shouldSync(id: string) {
+ return this.syncStatus.shouldSync(id);
+ }
}
diff --git a/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts b/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts
index bd2e90b..794255f 100644
--- a/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts
+++ b/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts
@@ -1,4 +1,7 @@
import {CustomProperty} from "./CustomProperty";
+import {SyncConfig} from "../../sync/model/SyncConfig";
+import {HandleKey} from "../../sync/model/HandledKey";
+import {HandleValue} from "../../sync/model/HandleValue";
export interface DoubanPluginSetting {
movieTemplateFile: string,
@@ -21,4 +24,5 @@ export interface DoubanPluginSetting {
loginCookiesContent: string,
cacheImage: boolean,
attachmentPath: string,
+ syncHandledData?:Map>,
}
diff --git a/src/org/wanxp/douban/sync/handler/DoubanAbstractSyncHandler.ts b/src/org/wanxp/douban/sync/handler/DoubanAbstractSyncHandler.ts
index 7b8f186..35e9f37 100644
--- a/src/org/wanxp/douban/sync/handler/DoubanAbstractSyncHandler.ts
+++ b/src/org/wanxp/douban/sync/handler/DoubanAbstractSyncHandler.ts
@@ -71,7 +71,9 @@ export abstract class DoubanAbstractSyncHandler implem
if (!context.plugin.statusHolder.syncing()) {
return;
}
- await this.doubanSubjectLoadHandler.handle(item.url, context);
+ if(context.syncStatusHolder.shouldSync(item.id)) {
+ await this.doubanSubjectLoadHandler.handle(item.url, context);
+ }
}
}
diff --git a/src/org/wanxp/douban/sync/handler/SyncHandler.ts b/src/org/wanxp/douban/sync/handler/SyncHandler.ts
index 21903f9..e586328 100644
--- a/src/org/wanxp/douban/sync/handler/SyncHandler.ts
+++ b/src/org/wanxp/douban/sync/handler/SyncHandler.ts
@@ -48,9 +48,9 @@ export default class SyncHandler {
async showResult() {
const {syncStatusHolder} = this.context;
- const {statusHandleMap} = syncStatusHolder;
- const {syncResultMap} = syncStatusHolder;
- let summary:string = `${i18nHelper.getMessage('syncall')}: ${syncStatusHolder.getTotal()}
+ const {statusHandleMap} = syncStatusHolder.syncStatus;
+ const {syncResultMap} = syncStatusHolder.syncStatus;
+ let summary:string = `${i18nHelper.getMessage('syncall')}: ${syncStatusHolder.getSyncTotal()}
`;
for (const [key, value] of statusHandleMap) {
// @ts-ignore
@@ -63,7 +63,7 @@ export default class SyncHandler {
details+= `${value.id}-[[${value.title}]]: ${i18nHelper.getMessage(value.status)}
`;
}
- summary+= `${i18nHelper.getMessage('notsync')}: ${syncStatusHolder.getTotal() - syncStatusHolder.getHandle()}
+ summary+= `${i18nHelper.getMessage('notsync')}: ${syncStatusHolder.getSyncTotal() - syncStatusHolder.getSyncHandle()}
`
const result : string = i18nHelper.getMessage('110037', summary, details);
diff --git a/src/org/wanxp/douban/sync/model/GlobalSyncStatusHolder.ts b/src/org/wanxp/douban/sync/model/GlobalSyncStatusHolder.ts
index f17db6b..686e9c1 100644
--- a/src/org/wanxp/douban/sync/model/GlobalSyncStatusHolder.ts
+++ b/src/org/wanxp/douban/sync/model/GlobalSyncStatusHolder.ts
@@ -8,7 +8,7 @@ export default class GlobalSyncStatusHolder {
constructor(syncConfig: SyncConfig) {
this.syncConfig = syncConfig;
- this.total = 100;
+ this.total = 0;
this.handle = 0;
}
diff --git a/src/org/wanxp/douban/sync/model/HandleValue.ts b/src/org/wanxp/douban/sync/model/HandleValue.ts
new file mode 100644
index 0000000..766bc3b
--- /dev/null
+++ b/src/org/wanxp/douban/sync/model/HandleValue.ts
@@ -0,0 +1,3 @@
+export interface HandleValue {
+ v: string;
+}
diff --git a/src/org/wanxp/douban/sync/model/HandledKey.ts b/src/org/wanxp/douban/sync/model/HandledKey.ts
new file mode 100644
index 0000000..ca2a578
--- /dev/null
+++ b/src/org/wanxp/douban/sync/model/HandledKey.ts
@@ -0,0 +1,3 @@
+export interface HandleKey {
+ k: string;
+}
diff --git a/src/org/wanxp/douban/sync/model/SyncConfig.ts b/src/org/wanxp/douban/sync/model/SyncConfig.ts
index 310820b..ad2b2f3 100644
--- a/src/org/wanxp/douban/sync/model/SyncConfig.ts
+++ b/src/org/wanxp/douban/sync/model/SyncConfig.ts
@@ -1,10 +1,11 @@
export interface SyncConfig {
syncType: string,
scope: string,
- force:boolean,
- dataFilePath:string;
- dataFileNamePath:string;
+ force: boolean,
+ dataFilePath: string;
+ dataFileNamePath: string;
cacheImage:boolean;
- attachmentPath:string;
- templateFile:string;
+ attachmentPath: string;
+ templateFile: string;
+ incrementalUpdate: boolean;
}
diff --git a/src/org/wanxp/douban/sync/model/SyncStatusHolder.ts b/src/org/wanxp/douban/sync/model/SyncStatusHolder.ts
index 111de07..14226dc 100644
--- a/src/org/wanxp/douban/sync/model/SyncStatusHolder.ts
+++ b/src/org/wanxp/douban/sync/model/SyncStatusHolder.ts
@@ -2,10 +2,12 @@ import {SyncConfig} from "./SyncConfig";
import GlobalSyncStatusHolder from "./GlobalSyncStatusHolder";
import {SyncItemResult} from "./SyncItemResult";
import {SyncItemStatus} from "../../../constant/Constsant";
-import GlobalStatusHolder from "../../model/GlobalStatusHolder";
+import {HandleKey} from "./HandledKey";
+import {HandleValue} from "./HandleValue";
export default class SyncStatusHolder extends GlobalSyncStatusHolder{
+ public handledData: Map>;
public syncResultMap: Map = new Map();
public statusHandleMap: Map = new Map([
[SyncItemStatus.exists, 0],
@@ -13,23 +15,23 @@ export default class SyncStatusHolder extends GlobalSyncStatusHolder{
[SyncItemStatus.create, 0],
[SyncItemStatus.fail, 0],
]);
- private globalStatus:GlobalStatusHolder;
-
- constructor(syncConfig: SyncConfig, globalStatus: GlobalStatusHolder) {
+ constructor(syncConfig: SyncConfig) {
super(syncConfig)
- this.globalStatus = globalStatus;
}
public replace(id:string, title:string) {
+ this.putToHandled(id, title);
this.updateResult(id, title, SyncItemStatus.replace);
}
public exists(id:string, title:string) {
+ this.putToHandled(id, title);
this.updateResult(id, title, SyncItemStatus.exists);
}
public create(id:string, title:string) {
+ this.putToHandled(id, title);
this.updateResult(id, title, SyncItemStatus.create);
}
@@ -41,16 +43,36 @@ export default class SyncStatusHolder extends GlobalSyncStatusHolder{
this.syncResultMap.set(id, {id: id,title:title,status:status});
this.statusHandleMap.set(status, this.statusHandleMap.get(status) + 1);
super.handled(1);
- if (this.globalStatus.syncing()) {
- this.globalStatus.syncStatus.handled(1);
- }
}
public setTotal(total:number) {
super.totalNum(total);
- this.globalStatus.syncStatus.totalNum(total);
}
+ private putToHandled(id: string, title: string) {
+ if (!this.handledData) {
+ this.handledData = new Map>();
+ }
+ const key = {k: this.syncConfig.dataFilePath}
+ if (!this.handledData.has(key)) {
+ this.handledData.set(key, new Set());
+ }
+ this.handledData.get(key).add({v:id})
+ }
+ resetSyncHandledSet() {
+ if (!this.handledData) {
+ return;
+ }
+ const key = {k: this.syncConfig.dataFilePath}
+ if (this.handledData.has(key)) {
+ this.handledData.set(key, new Set());
+ }
+ }
+
+ shouldSync(id: string) {
+ const key = {k: this.syncConfig.dataFilePath}
+ return !this.handledData.get(key).has({v:id});
+ }
}
diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts
index e50016a..fdffddd 100644
--- a/src/org/wanxp/lang/locale/en.ts
+++ b/src/org/wanxp/lang/locale/en.ts
@@ -33,6 +33,11 @@ export default {
PS: This file could be delete if you want to.
`,
'110038': `DoubanSyncResult`,
+ '110039': `SyncNotSync:`,
+ '110040': `Only sync that haven't been synced yet. if not enabled, will sync all the subject'`,
+ '110041': `If`,
+
+
'exists':`[exists]`,
'replace':`[replace]`,
'create':`[create]`,
@@ -182,6 +187,7 @@ PS: This file could be delete if you want to.
'121601': `Note Name`,
'121602': `Nodes created from Obsidian-Douban will use this fileName as template(also support filePath),
If blank, they will be created by default name. support all basic template variables. example: {{type}}/{{title}}`,
+ '121603': `assets`,
'121701': `Search Template File`,
// '121702': `Movie created from Obsidian-Douban will be placed in this folder, If blank, they will be placed in the default location for this vault. `,
diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts
index 6f643f0..1f52f4c 100644
--- a/src/org/wanxp/lang/locale/zh-cn.ts
+++ b/src/org/wanxp/lang/locale/zh-cn.ts
@@ -35,6 +35,9 @@ export default {
注:此文档可删除
`,
'110038': `豆瓣同步结果`,
+ '110039': `增量同步:`,
+ '110040': `仅同步上面'笔记存放位置'目录中最近新增/同步失败/未同步的部分,不同步已同步的内容.若关闭则会全量同步.增量同步会更快,适合之前同步中途失败停止或最近有豆瓣新增了内容,全量同步适合修改了模板或修改了存放路径情况下进行.`,
+ '110041': `使用增量`,
'exists':`[未替换]`,
'replace':`[已替换]`,
diff --git a/src/org/wanxp/main.ts b/src/org/wanxp/main.ts
index 547c5bc..5f26704 100644
--- a/src/org/wanxp/main.ts
+++ b/src/org/wanxp/main.ts
@@ -44,7 +44,7 @@ export default class DoubanPlugin extends Plugin {
return;
}
if (Action.Sync == context.action) {
- this.showStatus(i18nHelper.getMessage('140207', syncStatusHolder.getHandle(), syncStatusHolder.getTotal(), extract.title));
+ this.showStatus(i18nHelper.getMessage('140207', syncStatusHolder.getSyncHandle(), syncStatusHolder.getSyncTotal(), extract.title));
}else {
this.showStatus(i18nHelper.getMessage('140204', extract.title));
}
@@ -53,13 +53,13 @@ export default class DoubanPlugin extends Plugin {
await this.putContentToObsidian(context, result);
}
if (Action.Sync == context.action) {
- this.showStatus(i18nHelper.getMessage('140208', syncStatusHolder.getHandle(), syncStatusHolder.getTotal(), extract.title));
+ this.showStatus(i18nHelper.getMessage('140208', syncStatusHolder.getSyncHandle(), syncStatusHolder.getSyncTotal(), extract.title));
}else {
this.showStatus(i18nHelper.getMessage('140205', extract.title));
}
} catch (e) {
log.error(i18nHelper.getMessage('140206', e.message), e);
- syncStatusHolder!=null?syncStatusHolder.fail(extract.id, extract.title):null;
+ syncStatusHolder!=null?syncStatusHolder.syncFail(extract.id, extract.title):null;
} finally {
this.clearStatusBarDelay();
}
@@ -93,16 +93,16 @@ export default class DoubanPlugin extends Plugin {
const {subject} = result;
const {content} = result;
if (Action.Sync == context.action) {
- if (context.syncStatusHolder.syncConfig.force) {
+ if (context.syncStatusHolder.syncStatus.syncConfig.force) {
const exists:boolean = await this.fileHandler.createOrReplaceNewNoteWithData(filePath, content, context.showAfterCreate);
if (exists) {
- syncStatusHolder != null ? syncStatusHolder.replace(subject.id, subject.title):null;
+ syncStatusHolder != null ? syncStatusHolder.syncReplace(subject.id, subject.title):null;
}else {
- syncStatusHolder != null ?syncStatusHolder.create(subject.id, subject.title):null;
+ syncStatusHolder != null ?syncStatusHolder.syncCreate(subject.id, subject.title):null;
}
}else {
const created:boolean = await this.fileHandler.createNewNoteWithData(filePath, content, context.showAfterCreate, false);
- created ?syncStatusHolder.create(subject.id, subject.title):syncStatusHolder.exists(subject.id, subject.title);
+ created ?syncStatusHolder.syncCreate(subject.id, subject.title):syncStatusHolder.syncExists(subject.id, subject.title);
}
}else {
await this.fileHandler.createNewNoteWithData(filePath, content, context.showAfterCreate);
@@ -198,7 +198,8 @@ export default class DoubanPlugin extends Plugin {
settings: this.settings,
userComponent: this.userComponent,
netFileHandler: this.netFileHandler,
- action: Action.Sync}),
+ action: Action.Sync,
+ syncStatusHolder: this.statusHolder}),
});
this.settingsManager = new SettingsManager(app, this);
@@ -209,7 +210,7 @@ export default class DoubanPlugin extends Plugin {
}
this.addSettingTab(new DoubanSettingTab(this.app, this));
- this.statusHolder = new GlobalStatusHolder();
+ this.statusHolder = new GlobalStatusHolder(this.app, this);
}
async loadSettings() {
@@ -248,9 +249,10 @@ export default class DoubanPlugin extends Plugin {
if (!result) {
return;
}
- context.syncStatusHolder = new SyncStatusHolder(syncConfig, this.statusHolder);
// @ts-ignore
new Notice(i18nHelper.getMessage('140301', SyncTypeRecords[syncConfig.syncType]));
+ this.initSyncDefaultSettings(syncConfig);
+ context.syncStatusHolder.initSyncHandledData();
// @ts-ignore
this.showStatus(i18nHelper.getMessage('140203', SyncTypeRecords[syncConfig.syncType]));
@@ -260,7 +262,7 @@ export default class DoubanPlugin extends Plugin {
} catch (e) {
log.error(i18nHelper.getMessage('140206', e.message), e);
} finally {
- context.plugin.statusHolder.completeSync();
+ await context.plugin.statusHolder.completeSync();
this.clearStatusBarDelay();
}
}
@@ -278,5 +280,12 @@ export default class DoubanPlugin extends Plugin {
}
return true;
}
+
+ private initSyncDefaultSettings(syncConfig: SyncConfig) {
+ syncConfig.dataFilePath = syncConfig.dataFilePath ? syncConfig.dataFilePath : DEFAULT_SETTINGS.dataFilePath;
+ syncConfig.templateFile = syncConfig.templateFile ? syncConfig.templateFile : '';
+ syncConfig.attachmentPath = syncConfig.attachmentPath ? syncConfig.attachmentPath : DEFAULT_SETTINGS.attachmentPath;
+ syncConfig.dataFileNamePath = syncConfig.dataFileNamePath ? syncConfig.dataFileNamePath : DEFAULT_SETTINGS.dataFileNamePath;
+ }
}