Skip to content
This repository was archived by the owner on Aug 11, 2021. It is now read-only.

Commit 71c7ec2

Browse files
committed
Improve update/import preset handling
The updated or imported preset will be automatically switched to.
1 parent 1d54c78 commit 71c7ec2

File tree

3 files changed

+36
-32
lines changed

3 files changed

+36
-32
lines changed

src/client/src/app/generate-game/generate-game.component.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export class GenerateGameComponent implements OnInit {
2626
private userPresets: PresetObject;
2727
private form: FormGroup;
2828
private ngUnsubscribe: Subject<any> = new Subject();
29+
private lastUpdatedPreset: string;
2930

3031
// Constants
3132
private readonly CUSTOM_PRESET = 'Custom';
@@ -69,6 +70,27 @@ export class GenerateGameComponent implements OnInit {
6970
this.loaded = true;
7071
}
7172
});
73+
74+
this.presetsService._previousAction
75+
.pipe(takeUntil(this.ngUnsubscribe))
76+
.subscribe(previousAction => {
77+
switch (previousAction) {
78+
case 'update':
79+
if (this.lastUpdatedPreset) {
80+
this.setPreset(this.lastUpdatedPreset);
81+
}
82+
break;
83+
case 'remove':
84+
this.setPreset(this.randomizerService.DEFAULT_PRESET);
85+
break;
86+
}
87+
});
88+
89+
this.presetsService._lastUpdatedPreset
90+
.pipe(takeUntil(this.ngUnsubscribe))
91+
.subscribe(preset => {
92+
this.lastUpdatedPreset = preset;
93+
});
7294
}
7395

7496
ngOnDestroy() {
@@ -188,7 +210,6 @@ export class GenerateGameComponent implements OnInit {
188210

189211
removePreset(name: string): void {
190212
this.presetsService.removePreset(name);
191-
this.form.patchValue({ preset: this.randomizerService.DEFAULT_PRESET });
192213
}
193214

194215
generateSeed(spoiler: boolean) {
@@ -217,15 +238,5 @@ export class GenerateGameComponent implements OnInit {
217238
this.presets[key] = preset[key];
218239
}
219240
}
220-
221-
// After building presets, if we imported a preset, select it in the form
222-
this.presetsService._importedPreset
223-
.pipe(take(1))
224-
.subscribe(preset => {
225-
if (preset) {
226-
this.setPreset(preset);
227-
this.presetsService.clearImportPresetSubject();
228-
}
229-
});
230241
}
231242
}

src/client/src/app/services/presets.service.ts

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@ import { RandomizerForm } from '../../../../common/models/randomizerForm';
1010
providedIn: 'root'
1111
})
1212
export class PresetsService {
13-
private cachedImportedPreset: string;
1413
private defaultPresets$ = new BehaviorSubject<PresetObject>(undefined);
1514
private userPresets$ = new BehaviorSubject<PresetObject>(undefined);
16-
private importedPreset$ = new BehaviorSubject<string>(undefined);
15+
private previousAction$ = new BehaviorSubject<string>(undefined);
16+
private lastUpdatedPreset$ = new BehaviorSubject<string>(undefined);
1717
_defaultPresets = this.defaultPresets$.asObservable();
1818
_userPresets = this.userPresets$.asObservable();
19-
_importedPreset = this.importedPreset$.asObservable();
19+
_previousAction = this.previousAction$.asObservable();
20+
_lastUpdatedPreset = this.lastUpdatedPreset$.asObservable();
2021

2122
constructor(private ngZone: NgZone, private electronService: ElectronService, private toastrService: ToastrService) {
2223
this.getAllPresets();
@@ -27,33 +28,28 @@ export class PresetsService {
2728
});
2829
});
2930

30-
this.electronService.ipcRenderer.on('getUserPresetsResponse', (event, response: PresetsResponse) => {
31+
this.electronService.ipcRenderer.on('getUserPresetsResponse', (event, response: PresetsResponse, previousAction: string) => {
3132
this.ngZone.run(() => {
32-
// Emit imported preset key if one is provided
33-
if (this.cachedImportedPreset) {
34-
this.importedPreset$.next(this.cachedImportedPreset);
35-
this.cachedImportedPreset = null;
36-
}
37-
3833
this.handlePresetsResponse(response, this.userPresets$);
34+
this.previousAction$.next(previousAction);
3935
});
4036
});
4137

4238
this.electronService.ipcRenderer.on('updateUserPresetResponse', (event, response) => {
4339
this.ngZone.run(() => {
44-
this.getUserPresets();
40+
this.getUserPresets('update');
4541
});
4642
});
4743

4844
this.electronService.ipcRenderer.on('removeUserPresetResponse', (event, response) => {
4945
this.ngZone.run(() => {
50-
this.getUserPresets();
46+
this.getUserPresets('remove');
5147
});
5248
});
5349

5450
this.electronService.ipcRenderer.on('importPresetResponse', (event, key: string, preset: RandomizerForm) => {
5551
this.ngZone.run(() => {
56-
this.cachedImportedPreset = key;
52+
this.lastUpdatedPreset$.next(key);
5753
this.electronService.ipcRenderer.send('updateUserPreset', preset, key);
5854
});
5955
});
@@ -79,8 +75,8 @@ export class PresetsService {
7975
this.electronService.ipcRenderer.send('getDefaultPresets');
8076
}
8177

82-
getUserPresets() {
83-
this.electronService.ipcRenderer.send('getUserPresets');
78+
getUserPresets(previousAction?: string) {
79+
this.electronService.ipcRenderer.send('getUserPresets', previousAction);
8480
}
8581

8682
getAllPresets() {
@@ -89,6 +85,7 @@ export class PresetsService {
8985
}
9086

9187
addOrUpdatePreset(name: string, preset: RandomizerForm) {
88+
this.lastUpdatedPreset$.next(name);
9289
this.electronService.ipcRenderer.send('updateUserPreset', preset, name);
9390
}
9491

@@ -122,10 +119,6 @@ export class PresetsService {
122119
});
123120
}
124121

125-
clearImportPresetSubject(): void {
126-
this.importedPreset$.next(null);
127-
}
128-
129122
private handlePresetsResponse(response: PresetsResponse, subject: Subject<PresetObject>): void {
130123
// If presets and keys are defined, return the original order the presets were in, otherwise don't do anything
131124
if (!response.presets) {

src/electron/controllers/presetsController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export function initialize() {
3131
event.sender.send('getDefaultPresetsResponse', response);
3232
});
3333

34-
ipcMain.on('getUserPresets', (event) => {
34+
ipcMain.on('getUserPresets', (event, previousAction: string) => {
3535
const userPresetsResponse = 'getUserPresetsResponse';
3636

3737
fs.access(userPresetsPath, fs.constants.R_OK, (err) => {
@@ -45,7 +45,7 @@ export function initialize() {
4545
readUserPresetsFile(response => {
4646
// Add to allPresets object
4747
Object.assign(allPresets, response.presets);
48-
event.sender.send(userPresetsResponse, response);
48+
event.sender.send(userPresetsResponse, response, previousAction);
4949
});
5050
}
5151
});

0 commit comments

Comments
 (0)