From 4cad2f634ff463a6559d70a0ad4729e35c23ff50 Mon Sep 17 00:00:00 2001 From: Nathan Smith Date: Sun, 30 Jun 2024 16:23:32 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20#126=20Add=20toggle=20for?= =?UTF-8?q?=20external=20link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: #126 --- src/plugin.spec.ts | 4 ++-- src/plugin.ts | 1 + src/query/query.ts | 11 +++-------- src/settings/settings-tab.ts | 11 +++++++++++ src/settings/types.ts | 2 ++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/plugin.spec.ts b/src/plugin.spec.ts index 5f29f13..f645500 100644 --- a/src/plugin.spec.ts +++ b/src/plugin.spec.ts @@ -71,12 +71,12 @@ describe("GithubLinkPlugin", () => { test.each<{ stored: Partial; name: string }>([ { stored: { cacheIntervalSeconds: 69 }, name: "cacheIntervalSeconds" }, { stored: { defaultPageSize: 69 }, name: "defaultPageSize" }, - { stored: { tagTooltips: true }, name: "tagTooltips" }, - { stored: { tagTooltips: false }, name: "tagTooltips" }, + { stored: { tagTooltips: !DEFAULT_SETTINGS.tagTooltips }, name: "tagTooltips" }, { stored: { minRequestSeconds: 69 }, name: "minRequestSeconds" }, { stored: { logLevel: LogLevel.Debug }, name: "logLevel" }, { stored: { showPagination: !DEFAULT_SETTINGS.showPagination }, name: "showPagination" }, { stored: { showRefresh: !DEFAULT_SETTINGS.showRefresh }, name: "showRefresh" }, + { stored: { showExternalLink: !DEFAULT_SETTINGS.showExternalLink }, name: "showExternalLink" }, ])("should merge stored and default settings ($name)", async ({ stored }) => { plugin = new GithubLinkPlugin(app, manifest); mockedPlugin(plugin).data = { settings: stored }; diff --git a/src/plugin.ts b/src/plugin.ts index 3c32dcc..6787514 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -37,6 +37,7 @@ export class GithubLinkPlugin extends Plugin { defaultAccount: data.defaultAccount ?? PluginSettings.defaultAccount, showPagination: data.showPagination ?? PluginSettings.showPagination, showRefresh: data.showRefresh ?? PluginSettings.showRefresh, + showExternalLink: data.showExternalLink ?? PluginSettings.showExternalLink, }; const newData: GithubLinkPluginData = { cache: data.cache ?? PluginData.cache, diff --git a/src/query/query.ts b/src/query/query.ts index 68a796c..00bd108 100644 --- a/src/query/query.ts +++ b/src/query/query.ts @@ -101,7 +101,7 @@ export class GithubQuery { columns = columns.map((c) => c.toLowerCase()); // Render - this.renderFooter(this.params, this.result, this.resultMeta, tableWrapper); + this.renderFooter(this.params, this.resultMeta, tableWrapper); this.renderHeader(table, queryType, columns); this.renderBody(table, queryType, columns, this.result); } @@ -140,17 +140,12 @@ export class GithubQuery { } } - private renderFooter( - params: QueryParams, - result: TableResult, - meta: PaginationMeta | null, - parent: HTMLElement, - ): void { + private renderFooter(params: QueryParams, meta: PaginationMeta | null, parent: HTMLElement): void { const footer = parent.createDiv({ cls: "github-link-table-footer" }); // Add external link to footer if available const externalLink = this.getExternalLink(params); - if (externalLink) { + if (externalLink && PluginSettings.showExternalLink) { footer.createEl("a", { cls: "github-link-table-footer-external-link", text: "View on GitHub", diff --git a/src/settings/settings-tab.ts b/src/settings/settings-tab.ts index 5f91771..ceef15b 100644 --- a/src/settings/settings-tab.ts +++ b/src/settings/settings-tab.ts @@ -95,6 +95,17 @@ export class GithubLinkPluginSettingsTab extends PluginSettingTab { }); }); + new Setting(containerEl) + .setName("Show external link") + .setDesc("When using a custom query, an 'Open on GitHub' link can be added to view the results there.") + .addToggle((toggle) => { + toggle.setValue(PluginSettings.showExternalLink); + toggle.onChange((value) => { + PluginSettings.showExternalLink = value; + void this.saveSettings(); + }); + }); + new Setting(containerEl) .setName("Show refresh button") .setDesc("Add a refresh button to tables to manually skip the cache.") diff --git a/src/settings/types.ts b/src/settings/types.ts index 56d5c19..78caa90 100644 --- a/src/settings/types.ts +++ b/src/settings/types.ts @@ -20,6 +20,7 @@ export interface GithubLinkPluginSettings { defaultPageSize: number; showPagination: boolean; showRefresh: boolean; + showExternalLink: boolean; logLevel: LogLevel; tagTooltips: boolean; tagShowPRMergeable: boolean; @@ -33,6 +34,7 @@ export const DEFAULT_SETTINGS: GithubLinkPluginSettings = { defaultPageSize: 10, showPagination: true, showRefresh: true, + showExternalLink: true, logLevel: LogLevel.Error, tagTooltips: false, tagShowPRMergeable: false,