Skip to content

Commit 6cf5f8b

Browse files
committed
Use a file for generic preview cache
1 parent f2ad1c6 commit 6cf5f8b

File tree

4 files changed

+35
-11
lines changed

4 files changed

+35
-11
lines changed

embeds/generic-preview.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export class GenericPreviewEmbed implements EmbedSource {
2626
const loadPreview = async () => {
2727
let metadata;
2828

29-
if (settings.useCacheForGenericLinks && link in settings.genericPreviewCache) {
30-
metadata = settings.genericPreviewCache[link];
29+
if (settings.useCacheForGenericLinks && link in plugin.genericPreviewCache) {
30+
metadata = plugin.genericPreviewCache[link];
3131
} else {
3232
const res = await requestUrl({ url: link });
3333
metadata = await getPreviewFromContent({

main.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
YouTubeEmbed,
1616
GenericPreviewEmbed,
1717
} from "./embeds";
18-
import { debounce, Debouncer, MarkdownView, Plugin } from "obsidian";
18+
import { debounce, Debouncer, MarkdownView, Plugin, TFile } from "obsidian";
1919
import { DEFAULT_SETTINGS, GenericPreviewMetadata, PluginSettings } from "./settings";
2020
import { SimpleEmbedPluginSettingTab } from "./settings-tab";
2121
import { buildSimpleEmbedsViewPlugin } from "./view-plugin";
@@ -40,6 +40,10 @@ export default class SimpleEmbedsPlugin extends Plugin {
4040
processedMarkdown: Debouncer<[]>;
4141
currentTheme: "dark" | "light";
4242
genericPreviewEmbed = new GenericPreviewEmbed();
43+
genericPreviewCache = {} as {
44+
[url: string]: GenericPreviewMetadata;
45+
};
46+
genericPreviewCacheFile = "genericPreviewCache.json";
4347

4448
async onload() {
4549
console.log(`Loading ${this.manifest.name} v${this.manifest.version}`);
@@ -81,6 +85,20 @@ export default class SimpleEmbedsPlugin extends Plugin {
8185
}
8286
}),
8387
);
88+
89+
// Load file for generic preview cache
90+
if (!this.app.vault.adapter.exists(this.genericPreviewCacheFile)) {
91+
await this.app.vault.create("genericPreviewCache.json", "{}");
92+
}
93+
try {
94+
const contents = JSON.parse(
95+
await this.app.vault.adapter.read(this.genericPreviewCacheFile)
96+
);
97+
this.genericPreviewCache = contents;
98+
} catch (e) {
99+
console.error("Error reading generic preview cache file");
100+
console.error(e);
101+
}
84102
}
85103

86104
onunload() {
@@ -103,8 +121,13 @@ export default class SimpleEmbedsPlugin extends Plugin {
103121
}
104122

105123
async saveGenericPreviewCache(link: string, metadata: GenericPreviewMetadata) {
106-
this.settings.genericPreviewCache[link] = metadata;
107-
await this.saveData(this.settings);
124+
if (this.genericPreviewCacheFile) {
125+
this.genericPreviewCache[link] = metadata;
126+
await this.app.vault.adapter.write(
127+
this.genericPreviewCacheFile,
128+
JSON.stringify(this.genericPreviewCache)
129+
);
130+
}
108131
}
109132

110133
private _getCurrentTheme(): "dark" | "light" {

settings-tab.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ export class SimpleEmbedPluginSettingTab extends PluginSettingTab {
7070
button
7171
.setButtonText("Clear")
7272
.onClick(async () => {
73-
await this.saveSettings({ genericPreviewCache: {} });
73+
await this.app.vault.adapter.write(this.plugin.genericPreviewCacheFile, "{}");
74+
this.plugin.genericPreviewCache = {};
75+
await this.plugin.saveSettings({});
7476
});
7577
});
7678

settings.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ export interface GenericPreviewMetadata {
4343

4444
export interface GenericPreviewSettings {
4545
useCacheForGenericLinks: boolean;
46-
genericPreviewCache: {
47-
[url: string]: GenericPreviewMetadata;
48-
};
46+
// genericPreviewCache: {
47+
// [url: string]: GenericPreviewMetadata;
48+
// };
4949
}
5050

5151
export interface PluginSettings
@@ -71,9 +71,8 @@ export const DEFAULT_SETTINGS: PluginSettings = {
7171
replaceVimeoLinks: true,
7272
replaceYouTubeLinks: true,
7373

74-
replaceGenericLinks: true,
74+
replaceGenericLinks: false,
7575
useCacheForGenericLinks: true,
76-
genericPreviewCache: {},
7776

7877
twitterTheme: "auto",
7978

0 commit comments

Comments
 (0)