Skip to content

Commit d607964

Browse files
committed
assign id to presets to update it properly
1 parent eebb9d1 commit d607964

3 files changed

Lines changed: 32 additions & 11 deletions

File tree

src/app/model/volume-presets.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export interface VolumePresetData {
66
}
77

88
export interface VolumePreset {
9+
id: string;
910
presetName: string;
1011
presetDescription?: string;
1112
data: VolumePresetData[];

src/app/pages/volume-preset-edit/volume-preset-edit.page.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { VolumePreset } from '../../model/volume-presets.model';
1111
standalone: false
1212
})
1313
export class VolumePresetEditPage implements OnInit {
14-
caputredPreset: VolumePreset = { presetName: '', data: [] };
14+
caputredPreset: VolumePreset = { id: crypto.randomUUID(), presetName: '', data: [] };
1515
isEditMode: boolean = false;
1616
originalPresetName: string = '';
1717

@@ -65,11 +65,6 @@ export class VolumePresetEditPage implements OnInit {
6565
}
6666
this.caputredPreset.presetName = confirmState.presetName;
6767
this.caputredPreset.presetDescription = confirmState.presetDescription || '';
68-
69-
// If we renamed it, we should probably delete the old one first
70-
if (this.originalPresetName !== this.caputredPreset.presetName) {
71-
await this.volumePresetsService.deletePreset({ presetName: this.originalPresetName, data: [] });
72-
}
7368
}
7469

7570
try {

src/app/services/volume-presets.service.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,33 @@ export class VolumePresetsService {
2424
groupId: currentState.server.groups.find((group: any) => group.clients?.some((c: any) => c.id === client.id))?.id || '',
2525
groupName: currentState.server.groups.find((group: any) => group.clients?.some((c: any) => c.id === client.id))?.name || '',
2626
}));
27-
return { presetName: 'Preset_' + new Date().toISOString().replace(/[:.]/g, '-'), data: preset };
27+
return { id: crypto.randomUUID(), presetName: 'Preset_' + new Date().toISOString().replace(/[:.]/g, '-'), data: preset };
2828
}
2929

3030
async loadPresetsFromPreferences(): Promise<VolumePreset[]> {
3131
try {
3232
const result = await Preferences.get({ key: UserPreference.VOLUME_PRESETS });
3333
if (result.value) {
34-
const preset = JSON.parse(result.value);
35-
return Array.isArray(preset) ? preset : [preset];
34+
let presets = JSON.parse(result.value);
35+
let presetArray = Array.isArray(presets) ? presets : [presets];
36+
let needsMigration = false;
37+
38+
let migratedArray = presetArray.map((p: any) => {
39+
if (!p.id) {
40+
p.id = crypto.randomUUID();
41+
needsMigration = true;
42+
}
43+
return p as VolumePreset;
44+
});
45+
46+
if (needsMigration) {
47+
await Preferences.set({
48+
key: UserPreference.VOLUME_PRESETS,
49+
value: JSON.stringify(migratedArray)
50+
});
51+
}
52+
53+
return migratedArray;
3654
}
3755
} catch (error) {
3856
console.error('VolumePresetsService: Failed to load preset from user preferences', error);
@@ -42,7 +60,14 @@ export class VolumePresetsService {
4260

4361
async savePreset(newPreset: VolumePreset): Promise<VolumePreset[]> {
4462
const existingPresets = await this.loadPresetsFromPreferences();
45-
existingPresets.push(newPreset);
63+
const existingIndex = existingPresets.findIndex((p: VolumePreset) => p.id === newPreset.id);
64+
65+
if (existingIndex >= 0) {
66+
existingPresets[existingIndex] = newPreset;
67+
} else {
68+
existingPresets.push(newPreset);
69+
}
70+
4671
try {
4772
await Preferences.set({
4873
key: UserPreference.VOLUME_PRESETS,
@@ -68,7 +93,7 @@ export class VolumePresetsService {
6893

6994
async deletePreset(preset: VolumePreset): Promise<VolumePreset[]> {
7095
let existingPresets = await this.loadPresetsFromPreferences();
71-
existingPresets = existingPresets.filter((p: VolumePreset) => p.presetName !== preset.presetName);
96+
existingPresets = existingPresets.filter((p: VolumePreset) => p.id !== preset.id);
7297
try {
7398
await Preferences.set({
7499
key: UserPreference.VOLUME_PRESETS,

0 commit comments

Comments
 (0)