Skip to content

Commit 0298270

Browse files
committed
Own YAML Converter and update note won't override user data anymore
1 parent 5916ed6 commit 0298270

File tree

14 files changed

+129
-38
lines changed

14 files changed

+129
-38
lines changed

src/api/apis/MALAPI.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@ export class MALAPI extends APIModel {
107107
released: true,
108108
premiere: (new Date(result.aired?.from)).toLocaleDateString() ?? 'unknown',
109109

110-
watched: false,
111-
lastWatched: '',
112-
personalRating: 0,
110+
userData: {
111+
watched: false,
112+
lastWatched: '',
113+
personalRating: 0,
114+
},
113115
} as MovieModel);
114116

115117
return model;
@@ -135,9 +137,11 @@ export class MALAPI extends APIModel {
135137
airedTo: (new Date(result.aired?.to)).toLocaleDateString() ?? 'unknown',
136138
airing: result.airing,
137139

138-
watched: false,
139-
lastWatched: '',
140-
personalRating: 0,
140+
userData: {
141+
watched: false,
142+
lastWatched: '',
143+
personalRating: 0,
144+
},
141145
} as SeriesModel);
142146

143147
return model;

src/api/apis/MusicBrainzAPI.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ export class MusicBrainzAPI extends APIModel {
9090
genres: result.genres.map((g: any) => g.name),
9191
subType: result['primary-type'],
9292
rating: result.rating.value * 2,
93+
94+
userData: {
95+
personalRating: 0,
96+
},
9397
} as MusicReleaseModel);
9498

9599
return model;

src/api/apis/OMDbAPI.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,11 @@ export class OMDbAPI extends APIModel {
132132
released: true,
133133
premiere: (new Date(result.Released)).toLocaleDateString() ?? 'unknown',
134134

135-
watched: false,
136-
lastWatched: '',
137-
personalRating: 0,
135+
userData: {
136+
watched: false,
137+
lastWatched: '',
138+
personalRating: 0,
139+
},
138140
} as MovieModel);
139141

140142
return model;
@@ -160,9 +162,11 @@ export class OMDbAPI extends APIModel {
160162
airedFrom: (new Date(result.Released)).toLocaleDateString() ?? 'unknown',
161163
airedTo: 'unknown',
162164

163-
watched: false,
164-
lastWatched: '',
165-
personalRating: 0,
165+
userData: {
166+
watched: false,
167+
lastWatched: '',
168+
personalRating: 0,
169+
},
166170
} as SeriesModel);
167171

168172
return model;
@@ -183,8 +187,10 @@ export class OMDbAPI extends APIModel {
183187
released: true,
184188
releaseDate: (new Date(result.Released)).toLocaleDateString() ?? 'unknown',
185189

186-
played: false,
187-
personalRating: 0,
190+
userData: {
191+
played: false,
192+
personalRating: 0,
193+
},
188194
} as GameModel);
189195

190196
return model;

src/api/apis/SteamAPI.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import {APIModel} from '../APIModel';
22
import {MediaTypeModel} from '../../models/MediaTypeModel';
3-
import {MovieModel} from '../../models/MovieModel';
43
import MediaDbPlugin from '../../main';
5-
import {SeriesModel} from '../../models/SeriesModel';
64
import {GameModel} from '../../models/GameModel';
7-
import {contactEmail, debugLog, pluginName} from '../../utils/Utils';
5+
import {debugLog} from '../../utils/Utils';
86
import {requestUrl} from 'obsidian';
97
import {MediaType} from '../../utils/MediaType';
108

@@ -99,8 +97,10 @@ export class SteamAPI extends APIModel {
9997
released: !result.release_date?.comming_soon,
10098
releaseDate: (new Date(result.release_date?.date)).toLocaleDateString() ?? 'unknown',
10199

102-
played: false,
103-
personalRating: 0,
100+
userData: {
101+
played: false,
102+
personalRating: 0,
103+
},
104104
} as GameModel);
105105

106106
return model;

src/api/apis/WikipediaAPI.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ export class WikipediaAPI extends APIModel {
7171
wikiUrl: result.fullurl,
7272
lastUpdated: (new Date(result.touched)).toLocaleDateString() ?? 'unknown',
7373
length: result.length,
74+
75+
userData: {},
7476
} as WikiModel);
7577

7678
return model;

src/main.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Notice, Plugin, TFile} from 'obsidian';
1+
import {FrontMatterCache, Notice, Plugin, TFile} from 'obsidian';
22
import {DEFAULT_SETTINGS, MediaDbPluginSettings, MediaDbSettingTab} from './settings/Settings';
33
import {APIManager} from './api/APIManager';
44
import {MediaTypeModel} from './models/MediaTypeModel';
@@ -130,21 +130,25 @@ export default class MediaDbPlugin extends Plugin {
130130
const activeLeaf: TFile = this.app.workspace.getActiveFile();
131131
if (!activeLeaf.name) return;
132132

133-
let metadata = this.app.metadataCache.getFileCache(activeLeaf).frontmatter;
133+
let metadata: FrontMatterCache = this.app.metadataCache.getFileCache(activeLeaf).frontmatter;
134134

135-
if (!metadata.type || !metadata.dataSource || !metadata.id) {
135+
if (!metadata?.type || !metadata?.dataSource || !metadata?.id) {
136136
throw new Error('MDB | active note is not a Media DB entry or is missing metadata');
137137
}
138138

139-
const newMetadata = await this.apiManager.queryDetailedInfo({dataSource: metadata.dataSource, id: metadata.id} as MediaTypeModel);
139+
delete metadata.position; // remove unnecessary data from the FrontMatterCache
140+
let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type);
140141

141-
if (!newMetadata) {
142+
let newMediaTypeModel = await this.apiManager.queryDetailedInfo({dataSource: metadata.dataSource, id: metadata.id} as MediaTypeModel);
143+
if (!newMediaTypeModel) {
142144
return;
143145
}
144146

147+
newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData());
148+
145149
console.log('MDB | deleting old entry');
146150
await this.app.vault.delete(activeLeaf);
147-
await this.createMediaDbNoteFromModel(newMetadata);
151+
await this.createMediaDbNoteFromModel(newMediaTypeModel);
148152
}
149153

150154
async loadSettings() {

src/models/GameModel.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ export class GameModel extends MediaTypeModel {
2020
released: boolean;
2121
releaseDate: string;
2222

23-
played: boolean;
24-
personalRating: number;
23+
userData: {
24+
played: boolean;
25+
personalRating: number;
26+
};
2527

2628

2729
constructor(obj: any = {}) {

src/models/MediaTypeModel.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaType} from '../utils/MediaType';
2-
import {stringifyYaml} from 'obsidian';
2+
import {YAMLConverter} from '../utils/YAMLConverter';
33

44
export abstract class MediaTypeModel {
55
type: string;
@@ -11,12 +11,20 @@ export abstract class MediaTypeModel {
1111
url: string;
1212
id: string;
1313

14+
userData: object;
15+
1416
abstract getMediaType(): MediaType;
1517

1618
abstract getTags(): string[];
1719

1820
toMetaData(): string {
19-
return stringifyYaml({...this, tags: '#' + this.getTags().join('/')});
21+
return YAMLConverter.toYaml({...this.getWithOutUserData(), ...this.userData, tags: '#' + this.getTags().join('/')});
22+
}
23+
24+
getWithOutUserData(): object {
25+
const copy = JSON.parse(JSON.stringify(this));
26+
delete copy.userData;
27+
return copy;
2028
}
2129

2230
}

src/models/MovieModel.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ export class MovieModel extends MediaTypeModel {
2222
released: boolean;
2323
premiere: string;
2424

25-
watched: boolean;
26-
lastWatched: string;
27-
personalRating: number;
28-
25+
userData: {
26+
watched: boolean;
27+
lastWatched: string;
28+
personalRating: number;
29+
};
2930

3031
constructor(obj: any = {}) {
3132
super();

src/models/MusicReleaseModel.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export class MusicReleaseModel extends MediaTypeModel {
1717
artists: string[];
1818
rating: number;
1919

20-
personalRating: number;
20+
userData: {
21+
personalRating: number;
22+
};
2123

2224
constructor(obj: any = {}) {
2325
super();

0 commit comments

Comments
 (0)