diff --git a/src/constant/Constsant.ts b/src/constant/Constsant.ts index 06dd3a4..7fba01b 100644 --- a/src/constant/Constsant.ts +++ b/src/constant/Constsant.ts @@ -71,6 +71,11 @@ export const PersonNameModeRecords: { [key in PersonNameMode]: string } = { [PersonNameMode.CH_EN_NAME]: i18nHelper.getMessage('121208'), } +export enum SyncType { + MY_MOVIE= 'MY_MOVIE', + MY_BOOK= 'MY_BOOK', + BROADCAST= 'BROADCAST', +} diff --git a/src/douban/component/DoubanLoginModel.ts b/src/douban/component/DoubanLoginModel.ts index 7ca359a..d5a606f 100644 --- a/src/douban/component/DoubanLoginModel.ts +++ b/src/douban/component/DoubanLoginModel.ts @@ -29,6 +29,9 @@ export default class DoubanLoginModel { this.modal.setTitle(i18nHelper.getMessage('100101')); this.modal.show(); }); + this.modal.on('closed', () => { + constructDoubanTokenSettingsUI(this.containerEl, this.settingsManager); + }); const session = this.modal.webContents.session; const filter = { @@ -40,10 +43,11 @@ export default class DoubanLoginModel { // const wr_name = cookieArr.find((cookie) => cookie.name == 'wr_name').value; if (cookieArr) { let user = await settingsManager.plugin.userComponent.loginCookie(cookieArr); - constructDoubanTokenSettingsUI(containerEl, settingsManager); - this.modal.close(); + if (user && user.login) { + this.onClose(); + } } else { - this.modal.reload(); + this.onReload(); } }); } @@ -63,4 +67,8 @@ export default class DoubanLoginModel { onClose() { this.modal.close(); } + + onReload() { + this.modal.reload(); + } } diff --git a/src/douban/component/DoubanLogoutModel.ts b/src/douban/component/DoubanLogoutModel.ts index 144666b..fc9405e 100644 --- a/src/douban/component/DoubanLogoutModel.ts +++ b/src/douban/component/DoubanLogoutModel.ts @@ -26,21 +26,26 @@ export default class DoubanLogoutModel { this.modal.setTitle(i18nHelper.getMessage('100101')); this.modal.show(); }); + this.modal.on('closed', () => { + constructDoubanTokenSettingsUI(this.containerEl, this.settingsManager); + }); const session = this.modal.webContents.session; const filter = { - urls: ['https://www.douban.com/'] + urls: ['https://www.douban.com/', + 'https://www.douban.com/accounts/logout'] }; - session.webRequest.onCompleted(filter, (details:any) => { - if (details.statusCode == 200) { + session.webRequest.onSendHeaders(filter, (details:any) => { + const cookies = details.requestHeaders['Cookie']; + // const wr_name = cookieArr.find((cookie) => cookie.name == 'wr_name').value; + if (cookies && cookies.indexOf('dbcl2') < 0) { this.settingsManager.plugin.userComponent.logout(); - constructDoubanTokenSettingsUI(this.containerEl, this.settingsManager); - this.modal.close(); + this.onClose(); } }); } async doLogout() { - await this.modal.loadURL('https://www.douban.com/'); + await this.modal.loadURL('https://www.douban.com/accounts/logout?source=main&ck=DfFJ'); } onClose() { diff --git a/src/douban/component/DoubanSearchModal.ts b/src/douban/component/DoubanSearchModal.ts new file mode 100644 index 0000000..61d5b6f --- /dev/null +++ b/src/douban/component/DoubanSearchModal.ts @@ -0,0 +1,57 @@ +import {App, DropdownComponent, Modal, TextComponent} from "obsidian"; + +import DoubanPlugin from "main"; +import {i18nHelper} from "src/lang/helper"; +import HandleContext from "@App/data/model/HandleContext"; + +export class DoubanSearchModal extends Modal { + searchTerm: string; + plugin: DoubanPlugin; + context: HandleContext + + constructor(app: App, plugin: DoubanPlugin, context: HandleContext) { + super(app); + this.plugin = plugin; + this.context = context; + } + + onOpen() { + let {contentEl} = this; + + contentEl.createEl("h3", {text: i18nHelper.getMessage('500001')}); + + const inputs = contentEl.createDiv("inputs"); + + // const syncTypeDropdown = new DropdownComponent(contentEl) + // .addOptions(); + + + + + const controls = contentEl.createDiv("controls"); + const searchButton = controls.createEl("button", { + text: i18nHelper.getMessage('110004'), + cls: "mod-cta", + attr: { + autofocus: true, + }, + }); + searchButton.addClass("obsidian_douban_search_button"); + + searchButton.addEventListener("click", this.close.bind(this)); + const cancelButton = controls.createEl("button", {text: i18nHelper.getMessage('110005')}); + cancelButton.addEventListener("click", this.close.bind(this)); + cancelButton.addClass("obsidian_douban_search_button"); + + } + + + async onClose() { + let {contentEl} = this; + contentEl.empty(); + if (this.searchTerm) { + await this.plugin.search(this.searchTerm, this.context); + } + } + +} diff --git a/src/douban/setting/BasicSettingsHelper.ts b/src/douban/setting/BasicSettingsHelper.ts index ad68b35..4eee06d 100644 --- a/src/douban/setting/BasicSettingsHelper.ts +++ b/src/douban/setting/BasicSettingsHelper.ts @@ -153,7 +153,6 @@ ${i18nHelper.getMessage('100125')}`; button.setDisabled(true); const loginModel = new DoubanLogoutModel(containerEl, manager); await loginModel.doLogout(); - button.setDisabled(false); }); }); } @@ -180,6 +179,7 @@ ${i18nHelper.getMessage('100125')}`; .setButtonText(i18nHelper.getMessage('100128')) .setCta() .onClick(async () => { + button.setDisabled(true); manager.updateSetting('loginCookiesContent', ''); constructDoubanTokenSettingsUI(containerEl, manager); }); diff --git a/src/douban/broadcast/handler/DoubanBroadcastAbstractHandler.ts b/src/douban/sync/handler/DoubanBroadcastAbstractHandler.ts similarity index 100% rename from src/douban/broadcast/handler/DoubanBroadcastAbstractHandler.ts rename to src/douban/sync/handler/DoubanBroadcastAbstractHandler.ts diff --git a/src/douban/broadcast/handler/DoubanBroadcastMovieHandler.ts b/src/douban/sync/handler/DoubanBroadcastMovieHandler.ts similarity index 100% rename from src/douban/broadcast/handler/DoubanBroadcastMovieHandler.ts rename to src/douban/sync/handler/DoubanBroadcastMovieHandler.ts diff --git a/src/douban/broadcast/handler/DoubanPageBroadcastTransformer.ts b/src/douban/sync/handler/DoubanPageBroadcastTransformer.ts similarity index 100% rename from src/douban/broadcast/handler/DoubanPageBroadcastTransformer.ts rename to src/douban/sync/handler/DoubanPageBroadcastTransformer.ts diff --git a/src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts b/src/douban/sync/handler/DoubanPageBroadcatLoadHandler.ts similarity index 100% rename from src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts rename to src/douban/sync/handler/DoubanPageBroadcatLoadHandler.ts diff --git a/src/douban/broadcast/model/DoubanBroadcastMoveSubject.ts b/src/douban/sync/model/DoubanBroadcastMoveSubject.ts similarity index 100% rename from src/douban/broadcast/model/DoubanBroadcastMoveSubject.ts rename to src/douban/sync/model/DoubanBroadcastMoveSubject.ts diff --git a/src/douban/broadcast/model/DoubanBroadcastSubject.ts b/src/douban/sync/model/DoubanBroadcastSubject.ts similarity index 100% rename from src/douban/broadcast/model/DoubanBroadcastSubject.ts rename to src/douban/sync/model/DoubanBroadcastSubject.ts diff --git a/src/douban/broadcast/model/DoubanPageBroadcastSubject.ts b/src/douban/sync/model/DoubanPageBroadcastSubject.ts similarity index 100% rename from src/douban/broadcast/model/DoubanPageBroadcastSubject.ts rename to src/douban/sync/model/DoubanPageBroadcastSubject.ts diff --git a/src/lang/locale/en.ts b/src/lang/locale/en.ts index dbf30d7..0ae949a 100644 --- a/src/lang/locale/en.ts +++ b/src/lang/locale/en.ts @@ -403,6 +403,10 @@ export default { '160229': `Comment`, '160230': `Rate Date`, + + '500001': `Sync Config`, + + 'ALL': `all`, 'MOVIE': `movie`, 'BOOK': `book`, diff --git a/src/lang/locale/zh-cn.ts b/src/lang/locale/zh-cn.ts index d60bea6..5df137b 100644 --- a/src/lang/locale/zh-cn.ts +++ b/src/lang/locale/zh-cn.ts @@ -426,6 +426,7 @@ export default { '160229': `我的评论`, '160230': `我的评论/标记的日期`, + '500001': `同步设置`, 'ALL': `全部类型`,