From 8929100e486f91d1fd9add433a0cba1422e3b515 Mon Sep 17 00:00:00 2001 From: YukiGasai Date: Mon, 2 Oct 2023 23:41:24 +0200 Subject: [PATCH] Moved ignore pattern to global #169 --- manifest.json | 2 +- package.json | 2 +- src/GoogleCalendarPlugin.ts | 2 +- src/googleApi/GoogleListEvents.ts | 14 ++++++ src/helper/AutoEventNoteCreator.ts | 14 ------ src/helper/types.ts | 2 +- src/view/GoogleCalendarSettingTab.ts | 75 ++++++++++++++-------------- 7 files changed, 55 insertions(+), 56 deletions(-) diff --git a/manifest.json b/manifest.json index 2e4969f..1bba514 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "google-calendar", "name": "Google Calendar", - "version": "1.10.9", + "version": "1.10.10", "minAppVersion": "0.12.0", "description": "Interact with your Google Calendar from Inside Obsidian", "author": "YukiGasai", diff --git a/package.json b/package.json index 6c5f837..de50da9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "google-calendar", - "version": "1.10.9", + "version": "1.10.10", "description": "Interact with your Google Calendar from Inside Obsidian", "main": "main.js", "scripts": { diff --git a/src/GoogleCalendarPlugin.ts b/src/GoogleCalendarPlugin.ts index 0ef323e..535e492 100644 --- a/src/GoogleCalendarPlugin.ts +++ b/src/GoogleCalendarPlugin.ts @@ -47,7 +47,7 @@ const DEFAULT_SETTINGS: GoogleCalendarPluginSettings = { showNotice: true, autoCreateEventNotes: true, autoCreateEventNotesMarker: "obsidian", - autoCreateEventNotesIgnoreList: [], + ignorePatternList: [], autoCreateEventKeepOpen: false, importStartOffset: 1, importEndOffset: 1, diff --git a/src/googleApi/GoogleListEvents.ts b/src/googleApi/GoogleListEvents.ts index 51b80b4..80661f6 100644 --- a/src/googleApi/GoogleListEvents.ts +++ b/src/googleApi/GoogleListEvents.ts @@ -351,6 +351,20 @@ async function googleListEventsByCalendar( //Get the events because cache was no option let totalEventList: GoogleEvent[] = await requestEventsFromApi(GoogleCalendar, startDate.toISOString(), endDate.toISOString()); + //Filter out events with ignore pattern + // Ignore this if no ignore list is set + if(plugin.settings.ignorePatternList.length > 0) { + totalEventList = totalEventList.filter(event => + !plugin.settings.ignorePatternList.some(ignoreText => { + // Check if the ignore text is a regex pattern + if(ignoreText.startsWith("/") && ignoreText.endsWith("/")) { + const regex = new RegExp(ignoreText.slice(1, -1)); + return regex.test(event.summary) || regex.test(event.description); + } + return event.description?.includes(ignoreText) || event.summary?.includes(ignoreText) + })) + } + //Turn multi day events into multiple events totalEventList = resolveMultiDayEventsHelper(totalEventList, startDate, endDate); diff --git a/src/helper/AutoEventNoteCreator.ts b/src/helper/AutoEventNoteCreator.ts index ab9e1db..b49d2f5 100644 --- a/src/helper/AutoEventNoteCreator.ts +++ b/src/helper/AutoEventNoteCreator.ts @@ -42,20 +42,6 @@ export const checkForEventNotes = async (plugin: GoogleCalendarPlugin): Promise< // Don't allow multi day events to be created automatically events = events.filter(event => event.eventType !== "multiDay") - // Remove events that contain the ignore marker - if(plugin.settings.autoCreateEventNotesIgnoreList.length) { - events = events.filter(event => - !plugin.settings.autoCreateEventNotesIgnoreList.some(ignoreText => { - // Check if the ignore text is a regex pattern - if(ignoreText.startsWith("/") && ignoreText.endsWith("/")) { - const regex = new RegExp(ignoreText.slice(1, -1)); - return regex.test(event.summary) || regex.test(event.description); - } - return event.description?.includes(ignoreText) || event.summary?.includes(ignoreText) - }) - ) - } - // check every event from the trigger text :obsidian: for (let i = 0; i < events.length; i++) { // Create a event note for all events if the trigger text is empty diff --git a/src/helper/types.ts b/src/helper/types.ts index abe743f..487d033 100644 --- a/src/helper/types.ts +++ b/src/helper/types.ts @@ -25,7 +25,6 @@ export interface GoogleCalendarPluginSettings { defaultFolder: string; autoCreateEventNotes: boolean; autoCreateEventNotesMarker: string; - autoCreateEventNotesIgnoreList: string[]; autoCreateEventKeepOpen: boolean; importStartOffset: number; importEndOffset: number; @@ -33,6 +32,7 @@ export interface GoogleCalendarPluginSettings { // Calendar settings defaultCalendar: string; calendarBlackList: [string, string][]; + ignorePatternList: string[]; insertTemplates: Template[]; useDefaultTemplate: boolean; diff --git a/src/view/GoogleCalendarSettingTab.ts b/src/view/GoogleCalendarSettingTab.ts index 85ca6a7..02992dc 100644 --- a/src/view/GoogleCalendarSettingTab.ts +++ b/src/view/GoogleCalendarSettingTab.ts @@ -275,44 +275,6 @@ export class GoogleCalendarSettingTab extends PluginSettingTab { }); }) - new Setting(containerEl) - .setName("Auto create Ignore List") - .setDesc("A list of strings, if contained in the event summary or description, the event will not be auto imported") - .setClass("SubSettings") - .addText(text => { - text.setValue(this.ignoreListText); - text.onChange(value => { - this.ignoreListText = value; - }); - }) - .addButton(button => { - button.setButtonText("Add"); - button.onClick(async () => { - this.plugin.settings.autoCreateEventNotesIgnoreList = [ - ...this.plugin.settings.autoCreateEventNotesIgnoreList, - this.ignoreListText - ]; - this.ignoreListText = ""; - await this.plugin.saveSettings(); - this.display(); - }) - }) - - for (const ignorePattern of this.plugin.settings.autoCreateEventNotesIgnoreList ) { - new Setting(containerEl) - .setName(ignorePattern) - .setClass("SubSettings") - .addButton(button => { - button.setButtonText("Remove"); - button.onClick(async () => { - this.plugin.settings.autoCreateEventNotesIgnoreList.remove(ignorePattern); - await this.plugin.saveSettings(); - this.display(); - }) - }); - } - - new Setting(containerEl) .setName("Keep auto created Notes open") .setDesc("When creating a new note should it stay open for direct editing") @@ -463,6 +425,43 @@ export class GoogleCalendarSettingTab extends PluginSettingTab { }); } + new Setting(containerEl) + .setName("Pattern ignore list") + .setDesc("A list of strings/regex pattern, if contained in the event summary or description, the event will not be used by the plugin") + .addText(text => { + text.setValue(this.ignoreListText); + text.onChange(value => { + this.ignoreListText = value; + }); + }) + .addButton(button => { + button.setButtonText("Add"); + button.onClick(async () => { + this.plugin.settings.ignorePatternList = [ + ...this.plugin.settings.ignorePatternList, + this.ignoreListText + ]; + this.ignoreListText = ""; + await this.plugin.saveSettings(); + this.display(); + }) + }) + + for (const ignorePattern of this.plugin.settings.ignorePatternList ) { + new Setting(containerEl) + .setName(ignorePattern) + .setClass("SubSettings") + .addButton(button => { + button.setButtonText("Remove"); + button.onClick(async () => { + this.plugin.settings.ignorePatternList.remove(ignorePattern); + await this.plugin.saveSettings(); + this.display(); + }) + }); + } + + if (settingsAreCompleteAndLoggedIn()) { new Setting(containerEl)