@@ -11,37 +11,53 @@ import {
1111import { translateText } from "../../Utils" ;
1212import "../baseComponents/Button" ;
1313
14- export class LobbyPresetStore {
15- constructor ( private userSettings = new UserSettings ( ) ) { }
14+ @customElement ( "lobby-preset-controls" )
15+ export class LobbyPresetControls extends LitElement {
16+ @property ( { type : Array } ) presets : LobbyPreset [ ] = [ ] ;
17+ @property ( { type : String } ) selectedName = "" ;
18+ @property ( { type : String } ) nameInput = "" ;
1619
17- list ( ) : LobbyPreset [ ] {
18- return this . userSettings
20+ static listPresets ( userSettings = new UserSettings ( ) ) : LobbyPreset [ ] {
21+ return userSettings
1922 . getLobbyPresets ( )
20- . map ( ( preset ) => this . normalizePreset ( preset ) ) ;
23+ . map ( ( preset ) => LobbyPresetControls . normalizePreset ( preset ) ) ;
2124 }
2225
23- save ( name : string , config : LobbyPresetConfig ) : LobbyPreset [ ] {
24- const presets = this . list ( ) . filter ( ( preset ) => preset . name !== name ) ;
26+ static savePreset (
27+ userSettings : UserSettings ,
28+ name : string ,
29+ config : LobbyPresetConfig ,
30+ ) : LobbyPreset [ ] {
31+ const presets = LobbyPresetControls . listPresets ( userSettings ) . filter (
32+ ( preset ) => preset . name !== name ,
33+ ) ;
2534 const updated = [
2635 ...presets ,
27- { name, config : this . normalizePresetConfig ( config ) } ,
36+ {
37+ name,
38+ config : LobbyPresetControls . normalizePresetConfig ( config ) ,
39+ } ,
2840 ] ;
29- this . userSettings . setLobbyPresets ( updated ) ;
41+ userSettings . setLobbyPresets ( updated ) ;
3042 return updated ;
3143 }
3244
33- delete ( name : string ) : LobbyPreset [ ] {
34- const updated = this . list ( ) . filter ( ( preset ) => preset . name !== name ) ;
35- this . userSettings . setLobbyPresets ( updated ) ;
45+ static deletePreset ( userSettings : UserSettings , name : string ) : LobbyPreset [ ] {
46+ const updated = LobbyPresetControls . listPresets ( userSettings ) . filter (
47+ ( preset ) => preset . name !== name ,
48+ ) ;
49+ userSettings . setLobbyPresets ( updated ) ;
3650 return updated ;
3751 }
3852
39- private normalizePreset ( preset : LobbyPreset ) : LobbyPreset {
40- const config = this . normalizePresetConfig ( preset ?. config ?? { } ) ;
53+ private static normalizePreset ( preset : LobbyPreset ) : LobbyPreset {
54+ const config = LobbyPresetControls . normalizePresetConfig (
55+ preset ?. config ?? { } ,
56+ ) ;
4157 return { name : preset ?. name ?? "Preset" , config } ;
4258 }
4359
44- private normalizePresetConfig (
60+ private static normalizePresetConfig (
4561 config : Partial < LobbyPresetConfig > ,
4662 ) : LobbyPresetConfig {
4763 const parsed = LobbyPresetConfigSchema . parse ( config ) ;
@@ -65,13 +81,6 @@ export class LobbyPresetStore {
6581 disabledUnits : parsed . disabledUnits ?? [ ] ,
6682 } ;
6783 }
68- }
69-
70- @customElement ( "lobby-preset-controls" )
71- export class LobbyPresetControls extends LitElement {
72- @property ( { type : Array } ) presets : LobbyPreset [ ] = [ ] ;
73- @property ( { type : String } ) selectedName = "" ;
74- @property ( { type : String } ) nameInput = "" ;
7584
7685 createRenderRoot ( ) {
7786 return this ;
0 commit comments