small tweaks

This commit is contained in:
Moritz Jung 2026-06-21 22:37:50 +02:00
parent 63e8359895
commit c522ff1301
4 changed files with 20 additions and 36 deletions

View file

@ -21,7 +21,7 @@ import { LegacyApiKeysModal } from 'packages/obsidian/src/modals/LegacyApiKeysMo
import { PropertyMapper } from 'packages/obsidian/src/settings/PropertyMapper'; import { PropertyMapper } from 'packages/obsidian/src/settings/PropertyMapper';
import { PropertyMappingModel } from 'packages/obsidian/src/settings/PropertyMapping'; import { PropertyMappingModel } from 'packages/obsidian/src/settings/PropertyMapping';
import type { MediaDbPluginSettings } from 'packages/obsidian/src/settings/Settings'; import type { MediaDbPluginSettings } from 'packages/obsidian/src/settings/Settings';
import { MediaDbSettingTab } from 'packages/obsidian/src/settings/Settings'; import { LEGACY_API_KEY_SETTINGS, MediaDbSettingTab } from 'packages/obsidian/src/settings/Settings';
import { getDefaultSettings } from 'packages/obsidian/src/settings/Settings'; import { getDefaultSettings } from 'packages/obsidian/src/settings/Settings';
import { BulkImportHelper } from 'packages/obsidian/src/utils/BulkImportHelper'; import { BulkImportHelper } from 'packages/obsidian/src/utils/BulkImportHelper';
import { DateFormatter } from 'packages/obsidian/src/utils/DateFormatter'; import { DateFormatter } from 'packages/obsidian/src/utils/DateFormatter';
@ -171,14 +171,14 @@ export default class MediaDbPlugin extends Plugin {
} }
private getLegacyApiKeyEntries(diskSettings: Record<string, unknown>): LegacyApiKeyEntry[] { private getLegacyApiKeyEntries(diskSettings: Record<string, unknown>): LegacyApiKeyEntry[] {
return this.settings.LegacyApiKeys.filter(key => typeof diskSettings[key] === 'string' && diskSettings[key].length > 0).map(key => ({ return LEGACY_API_KEY_SETTINGS.filter(key => typeof diskSettings[key] === 'string' && diskSettings[key].length > 0).map(key => ({
key, key,
value: diskSettings[key] as string, value: diskSettings[key] as string,
})); }));
} }
private removeLegacyApiKeys(settings: Record<string, unknown>): void { private removeLegacyApiKeys(settings: Record<string, unknown>): void {
for (const key of this.settings.LegacyApiKeys) { for (const key of LEGACY_API_KEY_SETTINGS) {
delete settings[key]; delete settings[key];
} }
} }

View file

@ -30,19 +30,14 @@ export class LegacyApiKeysModal extends Modal {
}); });
intro.createEl('p', { intro.createEl('p', {
text: 'The new keychain-backed system will be used instead. The plugin will not be usable until the old plaintext keys have been deleted.', text: 'You will need to re-add your API keys using Obsidians encrypted Keychain storage in the plugins settings.',
}); });
const textarea = wrapper.createEl('textarea', { const pre = wrapper.createEl('pre', { cls: 'media-db-plugin-legacy-keys-pre' });
cls: 'media-db-plugin-legacy-keys-textarea', const code = pre.createEl('code');
attr: {
readonly: 'true',
spellcheck: 'false',
},
});
textarea.value = this.entries.map(e => `${e.key}: ${e.value}`).join('\n'); code.innerText = this.entries.map(e => `${e.key}: ${e.value}`).join('\n');
textarea.addClass('media-db-plugin-hidden'); pre.addClass('media-db-plugin-hidden');
contentEl.createDiv({ cls: 'media-db-plugin-spacer' }); contentEl.createDiv({ cls: 'media-db-plugin-spacer' });
@ -51,7 +46,7 @@ export class LegacyApiKeysModal extends Modal {
bottomSettingRow.addButton(btn => { bottomSettingRow.addButton(btn => {
btn.setButtonText('Copy'); btn.setButtonText('Copy');
btn.onClick(async () => { btn.onClick(async () => {
await navigator.clipboard.writeText(textarea.value); await navigator.clipboard.writeText(code.innerText);
new Notice('Legacy API keys copied to clipboard.'); new Notice('Legacy API keys copied to clipboard.');
}); });
btn.buttonEl.addClass('media-db-plugin-button'); btn.buttonEl.addClass('media-db-plugin-button');
@ -61,12 +56,12 @@ export class LegacyApiKeysModal extends Modal {
btn.setButtonText('Show keys'); btn.setButtonText('Show keys');
btn.onClick(() => { btn.onClick(() => {
const isHidden = textarea.hasClass('media-db-plugin-hidden'); const isHidden = pre.hasClass('media-db-plugin-hidden');
if (isHidden) { if (isHidden) {
textarea.removeClass('media-db-plugin-hidden'); pre.removeClass('media-db-plugin-hidden');
btn.setButtonText('Hide keys'); btn.setButtonText('Hide keys');
} else { } else {
textarea.addClass('media-db-plugin-hidden'); pre.addClass('media-db-plugin-hidden');
btn.setButtonText('Show keys'); btn.setButtonText('Show keys');
} }
}); });
@ -76,14 +71,12 @@ export class LegacyApiKeysModal extends Modal {
bottomSettingRow.addButton(btn => { bottomSettingRow.addButton(btn => {
btn.setButtonText('Delete plaintext keys'); btn.setButtonText('Delete plaintext keys');
btn.setCta(); btn.setWarning();
btn.onClick(() => { btn.onClick(() => {
this.close(); this.close();
this.onConfirm(); this.onConfirm();
}); });
btn.buttonEl.addClass('media-db-plugin-button'); btn.buttonEl.addClass('media-db-plugin-button');
btn.buttonEl.addClass('mod-warning');
btn.buttonEl.addClass('mod-danger');
}); });
} }

View file

@ -11,6 +11,8 @@ import { MediaType } from 'packages/obsidian/src/utils/MediaType';
import { MEDIA_TYPES } from 'packages/obsidian/src/utils/MediaTypeManager'; import { MEDIA_TYPES } from 'packages/obsidian/src/utils/MediaTypeManager';
import { unCamelCase } from 'packages/obsidian/src/utils/Utils'; import { unCamelCase } from 'packages/obsidian/src/utils/Utils';
export const LEGACY_API_KEY_SETTINGS: readonly string[] = ['OMDbKey', 'TMDBKey', 'MobyGamesKey', 'GiantBombKey', 'ComicVineKey', 'BoardgameGeekKey'];
function createDateFormatDescription(preview: string): DocumentFragment { function createDateFormatDescription(preview: string): DocumentFragment {
return createFragment(frag => { return createFragment(frag => {
const container = frag.createDiv(); const container = frag.createDiv();
@ -58,8 +60,6 @@ export interface MediaDbPluginSettings {
ComicVineKeyId: string; ComicVineKeyId: string;
BoardgameGeekKeyId: string; BoardgameGeekKeyId: string;
LegacyApiKeys: readonly ['OMDbKey', 'TMDBKey', 'MobyGamesKey', 'GiantBombKey', 'ComicVineKey', 'BoardgameGeekKey'];
sfwFilter: boolean; sfwFilter: boolean;
templates: boolean; templates: boolean;
customDateFormat: string; customDateFormat: string;
@ -319,8 +319,6 @@ const DEFAULT_SETTINGS: MediaDbPluginSettings = {
ComicVineKeyId: '', ComicVineKeyId: '',
BoardgameGeekKeyId: '', BoardgameGeekKeyId: '',
LegacyApiKeys: ['OMDbKey', 'TMDBKey', 'MobyGamesKey', 'GiantBombKey', 'ComicVineKey', 'BoardgameGeekKey'],
sfwFilter: true, sfwFilter: true,
templates: true, templates: true,
customDateFormat: 'L', customDateFormat: 'L',

View file

@ -312,23 +312,16 @@ small.media-db-plugin-list-text {
max-width: 100%; max-width: 100%;
} }
.media-db-plugin-legacy-keys-textarea { .media-db-plugin-legacy-keys-pre {
width: 100%; width: 100%;
max-width: 100%; max-width: 100%;
min-height: var(--size-4-5);
min-width: var(--size-4-7);
box-sizing: border-box;
resize: vertical;
padding: var(--size-4-3);
border-radius: var(--radius-s); border-radius: var(--radius-s);
border: 1px solid var(--background-modifier-border); background: var(--code-background);
background: var(--background-primary);
color: var(--text-normal); color: var(--text-normal);
font-family: var(--font-monospace); margin: 0;
font-size: var(--font-ui-smaller); padding: var(--size-4-3) var(--size-4-4);
line-height: 1.5;
white-space: pre;
} }
.media-db-plugin-hidden { .media-db-plugin-hidden {
display: none; display: none;
} }