11import fs from "fs/promises" ;
2- import { WindowType , WindowSize } from "../constants" ;
2+ import { WindowType , WindowSize , WindowPosition } from "../constants" ;
33import type { GlobalSettings } from "../../types" ;
44
55export class SettingsManager {
@@ -42,6 +42,29 @@ export class SettingsManager {
4242 return defaultSizes ;
4343 }
4444
45+ async getWindowPositions (
46+ defaultPositions : Record < WindowType , WindowPosition > ,
47+ ) : Promise < Record < WindowType , WindowPosition > > {
48+ try {
49+ const settings = await this . getSettings ( ) ;
50+ if ( settings . windowPositions ) {
51+ Object . entries ( settings . windowPositions ) . forEach (
52+ ( [ type , pos ] ) => {
53+ if ( type in defaultPositions ) {
54+ defaultPositions [ type as WindowType ] =
55+ pos as WindowPosition ;
56+ }
57+ } ,
58+ ) ;
59+ return settings . windowPositions as Record <
60+ WindowType ,
61+ WindowPosition
62+ > ;
63+ }
64+ } catch { }
65+ return defaultPositions ;
66+ }
67+
4568 async saveWindowSize (
4669 windowType : WindowType ,
4770 size : WindowSize ,
@@ -57,4 +80,20 @@ export class SettingsManager {
5780 throw new Error ( `Error saving window size: ${ error } ` ) ;
5881 }
5982 }
83+
84+ async saveWindowPosition (
85+ windowType : WindowType ,
86+ pos : { x : number ; y : number } ,
87+ ) : Promise < void > {
88+ try {
89+ const settings = await this . getSettings ( ) ;
90+ settings . windowPositions = {
91+ ...settings . windowPositions ,
92+ [ windowType ] : pos ,
93+ } ;
94+ await this . updateSettings ( settings ) ;
95+ } catch ( error ) {
96+ throw new Error ( `Error saving window position: ${ error } ` ) ;
97+ }
98+ }
6099}
0 commit comments