diff --git a/StreamAwesome/src/logic/persistence/PersistenceHandler.ts b/StreamAwesome/src/logic/persistence/PersistenceHandler.ts index 9f5d33b..0815ac4 100644 --- a/StreamAwesome/src/logic/persistence/PersistenceHandler.ts +++ b/StreamAwesome/src/logic/persistence/PersistenceHandler.ts @@ -18,8 +18,8 @@ export class PersistenceHandler { return null } - if (record.version !== streamAwesomeVersion) { - console.error('Incompatible version found in persistent icon.') + if (!PersistenceHandler.isCompatibleVersion(record.version)) { + console.error(`Incompatible version found in persistent icon: ${record.version} (current: ${streamAwesomeVersion}).`) return null } @@ -29,6 +29,21 @@ export class PersistenceHandler { ) as CustomIcon | null } + // major versions are compatible + private static isCompatibleVersion(version: string): boolean { + if (!/^\d+\.\d+\.\d+$/.test(version)) { + return false + } + + // dev environment + const currentMajor = streamAwesomeVersion.split('.')[0] + if (currentMajor === '0') { + return true + } + + return version.split('.')[0] === currentMajor + } + public static convertIconToPersistentIcon(icon: CustomIcon): PersistentIcon { const flattenedIcon = PersistenceHandler.flattenObject( icon as unknown as Record, diff --git a/StreamAwesome/src/logic/persistence/PersistentIconConverter.ts b/StreamAwesome/src/logic/persistence/PersistentIconConverter.ts index a3a8d62..3d5d70a 100644 --- a/StreamAwesome/src/logic/persistence/PersistentIconConverter.ts +++ b/StreamAwesome/src/logic/persistence/PersistentIconConverter.ts @@ -24,7 +24,7 @@ export class PersistentIconConverter { isBrandsIcon: this.extractBoolean(record, 'fontawesomeicon.isbrandsicon'), style: this.extractString(record, 'fontawesomeicon.style'), family: this.extractString(record, 'fontawesomeicon.family'), - duotoneAlpha: this.extractNumber(record, 'fontawesomeicon.duotonealpha') + duotoneAlpha: this.extractOptionalNumber(record, 'fontawesomeicon.duotonealpha', 0.5) } } @@ -74,6 +74,13 @@ export class PersistentIconConverter { return parsedNumber } + private extractOptionalNumber(record: Record, key: string, fallback: number): number { + if (record[key] === undefined || record[key] === null) { + return fallback + } + return this.extractNumber(record, key) + } + private extractString(record: Record, key: string): string { const value = record[key] if (value === undefined || value === null || Array.isArray(value)) {