Skip to content

Commit 16299fe

Browse files
committed
Update entry command
1 parent a2b6847 commit 16299fe

File tree

8 files changed

+62
-3
lines changed

8 files changed

+62
-3
lines changed

src/main.ts

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ export default class MediaDbPlugin extends Plugin {
3737
callback: () => this.createMediaDbNote(this.openMediaDbIdSearchModal.bind(this)),
3838
});
3939

40+
this.addCommand({
41+
id: 'update-media-db-note',
42+
name: 'Update the open note, if it is a Media DB entry.',
43+
callback: () => this.updateActiveNote(),
44+
});
45+
4046
// register the settings tab
4147
this.addSettingTab(new MediaDbSettingTab(this.app, this));
4248

@@ -53,10 +59,18 @@ export default class MediaDbPlugin extends Plugin {
5359
async createMediaDbNote(modal: () => Promise<MediaTypeModel>): Promise<void> {
5460
try {
5561
let data: MediaTypeModel = await modal();
56-
console.log('MDB | Creating new note...');
57-
5862
data = await this.apiManager.queryDetailedInfo(data);
5963

64+
await this.createMediaDbNoteFromModel(data);
65+
} catch (e) {
66+
console.warn(e);
67+
new Notice(e.toString());
68+
}
69+
}
70+
71+
async createMediaDbNoteFromModel(data: MediaTypeModel): Promise<void> {
72+
try {
73+
console.log('MDB | Creating new note...');
6074
// console.log(data);
6175

6276
let fileContent = `---\n${data.toMetaData()}---\n`;
@@ -86,6 +100,8 @@ export default class MediaDbPlugin extends Plugin {
86100

87101
const fileName = replaceIllegalFileNameCharactersInString(data.getFileName());
88102
const filePath = `${this.settings.folder.replace(/\/$/, '')}/${fileName}.md`;
103+
104+
await this.app.vault.delete(this.app.vault.getAbstractFileByPath(filePath));
89105
const targetFile = await this.app.vault.create(filePath, fileContent);
90106

91107
// open file
@@ -95,6 +111,7 @@ export default class MediaDbPlugin extends Plugin {
95111
return;
96112
}
97113
await activeLeaf.openFile(targetFile, {state: {mode: 'source'}});
114+
98115
} catch (e) {
99116
console.warn(e);
100117
new Notice(e.toString());
@@ -122,6 +139,27 @@ export default class MediaDbPlugin extends Plugin {
122139
}));
123140
}
124141

142+
async updateActiveNote() {
143+
const activeLeaf: TFile = this.app.workspace.getActiveFile();
144+
if (!activeLeaf.name) return;
145+
146+
let metadata = this.app.metadataCache.getFileCache(activeLeaf).frontmatter;
147+
148+
if (!metadata.type || !metadata.dataSource || !metadata.id) {
149+
throw new Error('MDB | active note is not a Media DB entry or is missing metadata');
150+
}
151+
152+
const newMetadata = await this.apiManager.queryDetailedInfo({dataSource: metadata.dataSource, id: metadata.id} as MediaTypeModel);
153+
154+
if (!newMetadata) {
155+
return;
156+
}
157+
158+
console.log('MDB | deleting old entry');
159+
await this.app.vault.delete(activeLeaf);
160+
await this.createMediaDbNoteFromModel(newMetadata);
161+
}
162+
125163
async loadSettings() {
126164
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
127165
}

src/models/GameModel.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {mediaDbTag} from '../utils/Utils';
55

66
export class GameModel extends MediaTypeModel {
77
type: string;
8+
subType: string;
89
title: string;
910
englishTitle: string;
1011
year: string;
@@ -27,6 +28,8 @@ export class GameModel extends MediaTypeModel {
2728
super();
2829

2930
Object.assign(this, obj);
31+
32+
this.type = 'game';
3033
}
3134

3235
toMetaData(): string {

src/models/MediaTypeModel.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export abstract class MediaTypeModel {
22
type: string;
3+
subType: string;
34
title: string;
45
englishTitle: string;
56
year: string;
@@ -12,4 +13,5 @@ export abstract class MediaTypeModel {
1213
abstract getFileName(): string;
1314

1415
abstract getTags(): string[];
16+
1517
}

src/models/MovieModel.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {mediaDbTag} from '../utils/Utils';
55

66
export class MovieModel extends MediaTypeModel {
77
type: string;
8+
subType: string;
89
title: string;
910
englishTitle: string;
1011
year: string;
@@ -30,6 +31,8 @@ export class MovieModel extends MediaTypeModel {
3031
super();
3132

3233
Object.assign(this, obj);
34+
35+
this.type = 'movie';
3336
}
3437

3538
toMetaData(): string {

src/models/MusicReleaseModel.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {mediaDbTag} from '../utils/Utils';
55

66
export class MusicReleaseModel extends MediaTypeModel {
77
type: string;
8+
subType: string;
89
title: string;
910
englishTitle: string;
1011
year: string;
@@ -14,7 +15,6 @@ export class MusicReleaseModel extends MediaTypeModel {
1415

1516
genres: string[];
1617
artists: string[];
17-
subType: string;
1818
rating: number;
1919

2020
personalRating: number;
@@ -23,6 +23,8 @@ export class MusicReleaseModel extends MediaTypeModel {
2323
super();
2424

2525
Object.assign(this, obj);
26+
27+
this.type = 'musicRelease';
2628
}
2729

2830
toMetaData(): string {

src/models/SeriesModel.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {mediaDbTag} from '../utils/Utils';
55

66
export class SeriesModel extends MediaTypeModel {
77
type: string;
8+
subType: string;
89
title: string;
910
englishTitle: string;
1011
year: string;
@@ -33,6 +34,8 @@ export class SeriesModel extends MediaTypeModel {
3334
super();
3435

3536
Object.assign(this, obj);
37+
38+
this.type = 'series';
3639
}
3740

3841
toMetaData(): string {

src/models/WikiModel.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {mediaDbTag} from '../utils/Utils';
55

66
export class WikiModel extends MediaTypeModel {
77
type: string;
8+
subType: string;
89
title: string;
910
englishTitle: string;
1011
year: string;
@@ -21,6 +22,8 @@ export class WikiModel extends MediaTypeModel {
2122
super();
2223

2324
Object.assign(this, obj);
25+
26+
this.type = 'wiki';
2427
}
2528

2629
toMetaData(): string {

src/utils/Utils.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {MediaTypeModel} from '../models/MediaTypeModel';
2+
import {TFile} from 'obsidian';
23

34

45
export const pluginName: string = 'obsidian-media-db-plugin';
@@ -85,3 +86,7 @@ function traverseMetaData(path: Array<string>, mediaTypeModel: MediaTypeModel):
8586

8687
return o;
8788
}
89+
90+
export function updateNote(file: TFile) {
91+
92+
}

0 commit comments

Comments
 (0)