@@ -44,17 +44,21 @@ async function getDisplayOptions() {
4444}
4545
4646async function setDisplayOptions ( options , isPreview ) {
47- let newOptions = { ... options } ;
47+ let newOptions = sanitizeRequest ( options ) ;
4848 newOptions . i2cAddress = parseInt ( options . i2cAddress ) ;
4949 newOptions . buttonLayout = parseInt ( options . buttonLayout ) ;
5050 newOptions . buttonLayoutRight = parseInt ( options . buttonLayoutRight ) ;
5151 newOptions . splashMode = parseInt ( options . splashMode ) ;
5252 newOptions . splashDuration = parseInt ( options . splashDuration ) * 1000 ; // seconds to milliseconds
5353 newOptions . displaySaverTimeout = parseInt ( options . displaySaverTimeout ) * 60000 ; // minutes to milliseconds
5454 newOptions . splashChoice = parseInt ( options . splashChoice ) ;
55- newOptions . buttonLayoutCustomOptions . params . layout = parseInt ( options . buttonLayoutCustomOptions . params . layout ) ;
56- newOptions . buttonLayoutCustomOptions . paramsRight . layout = parseInt ( options . buttonLayoutCustomOptions . paramsRight . layout ) ;
57- newOptions . splashImage = '' ;
55+
56+ if ( newOptions . buttonLayoutCustomOptions ) {
57+ newOptions . buttonLayoutCustomOptions . params . layout = parseInt ( options . buttonLayoutCustomOptions ?. params ?. layout ) ;
58+ newOptions . buttonLayoutCustomOptions . paramsRight . layout = parseInt ( options . buttonLayoutCustomOptions ?. paramsRight ?. layout ) ;
59+ }
60+
61+ delete newOptions . splashImage ;
5862 const url = ! isPreview ? `${ baseUrl } /api/setDisplayOptions` : `${ baseUrl } /api/setPreviewDisplayOptions` ;
5963 return axios . post ( url , newOptions )
6064 . then ( ( response ) => {
@@ -89,7 +93,7 @@ async function getGamepadOptions() {
8993}
9094
9195async function setGamepadOptions ( options ) {
92- return axios . post ( `${ baseUrl } /api/setGamepadOptions` , options )
96+ return axios . post ( `${ baseUrl } /api/setGamepadOptions` , sanitizeRequest ( options ) )
9397 . then ( ( response ) => {
9498 console . log ( response . data ) ;
9599 return true ;
@@ -107,7 +111,7 @@ async function getLedOptions() {
107111}
108112
109113async function setLedOptions ( options ) {
110- return axios . post ( `${ baseUrl } /api/setLedOptions` , options )
114+ return axios . post ( `${ baseUrl } /api/setLedOptions` , sanitizeRequest ( options ) )
111115 . then ( ( response ) => {
112116 console . log ( response . data ) ;
113117 return true ;
@@ -134,7 +138,7 @@ async function setPinMappings(mappings) {
134138 let data = { } ;
135139 Object . keys ( mappings ) . map ( ( button , i ) => data [ button ] = mappings [ button ] . pin ) ;
136140
137- return axios . post ( `${ baseUrl } /api/setPinMappings` , data )
141+ return axios . post ( `${ baseUrl } /api/setPinMappings` , sanitizeRequest ( data ) )
138142 . then ( ( response ) => {
139143 console . log ( response . data ) ;
140144 return true ;
@@ -152,7 +156,7 @@ async function getAddonsOptions() {
152156}
153157
154158async function setAddonsOptions ( options ) {
155- return axios . post ( `${ baseUrl } /api/setAddonsOptions` , options )
159+ return axios . post ( `${ baseUrl } /api/setAddonsOptions` , sanitizeRequest ( options ) )
156160 . then ( ( response ) => {
157161 console . log ( response . data ) ;
158162 return true ;
@@ -181,6 +185,12 @@ async function reboot() {
181185 . catch ( console . error ) ;
182186}
183187
188+ function sanitizeRequest ( request ) {
189+ const newRequest = { ...request } ;
190+ delete newRequest . usedPins ;
191+ return newRequest ;
192+ }
193+
184194const WebApi = {
185195 resetSettings,
186196 getDisplayOptions,
0 commit comments