@@ -2,7 +2,7 @@ import './index.css'
2
2
3
3
import React , { useContext , useEffect , useState } from 'react'
4
4
5
- import { AppSettings , GameSettings , GameStatus , Runner } from 'src/types'
5
+ import { AppSettings , GameStatus , Runner } from 'src/types'
6
6
7
7
import { SmallInfo } from 'src/components/UI'
8
8
import { createNewWindow , getGameInfo , repair } from 'src/helpers'
@@ -99,12 +99,15 @@ export default function GamesSubmenu({
99
99
const isWin = platform === 'win32'
100
100
const isMac = platform === 'darwin'
101
101
const isLinux = platform === 'linux'
102
- const [ info , setInfo ] = useState ( { prefix : '' , wine : '' } as otherInfo )
103
- const [ isNative , setIsNative ] = useState ( false )
102
+ const [ info , setInfo ] = useState < otherInfo > ( {
103
+ prefix : '' ,
104
+ wine : ''
105
+ } as otherInfo )
106
+ const [ isNative , setIsNative ] = useState < boolean > ( false )
104
107
const [ steamRefresh , setSteamRefresh ] = useState < boolean > ( false )
105
108
const [ addedToSteam , setAddedToSteam ] = useState < boolean > ( false )
106
- const [ eosOverlayEnabled , setEosOverlayEnabled ] = useState ( false )
107
- const [ eosOverlayRefresh , setEosOverlayRefresh ] = useState ( false )
109
+ const [ eosOverlayEnabled , setEosOverlayEnabled ] = useState < boolean > ( false )
110
+ const [ eosOverlayRefresh , setEosOverlayRefresh ] = useState < boolean > ( false )
108
111
const eosOverlayAppName = '98bc04bc842e4906993fd6d6644ffb8d'
109
112
const { t } = useTranslation ( 'gamepage' )
110
113
@@ -179,6 +182,43 @@ export default function GamesSubmenu({
179
182
ipcRenderer . send ( 'addShortcut' , appName , runner , true )
180
183
}
181
184
185
+ async function handleEosOverlay ( ) {
186
+ setEosOverlayRefresh ( true )
187
+ if ( eosOverlayEnabled ) {
188
+ await ipcRenderer . invoke ( 'disableEosOverlay' , appName , runner )
189
+ setEosOverlayEnabled ( false )
190
+ } else {
191
+ const initialEnableResult = await ipcRenderer . invoke (
192
+ 'enableEosOverlay' ,
193
+ appName ,
194
+ runner
195
+ )
196
+ const { installNow } = initialEnableResult
197
+ let { wasEnabled } = initialEnableResult
198
+
199
+ if ( installNow ) {
200
+ await handleGameStatus ( {
201
+ appName : eosOverlayAppName ,
202
+ runner : 'legendary' ,
203
+ status : 'installing'
204
+ } )
205
+
206
+ await ipcRenderer . invoke ( 'installEosOverlay' )
207
+ await handleGameStatus ( {
208
+ appName : eosOverlayAppName ,
209
+ runner : 'legendary' ,
210
+ status : 'done'
211
+ } )
212
+
213
+ wasEnabled = (
214
+ await ipcRenderer . invoke ( 'enableEosOverlay' , appName , runner )
215
+ ) . wasEnabled
216
+ }
217
+ setEosOverlayEnabled ( wasEnabled )
218
+ }
219
+ setEosOverlayRefresh ( false )
220
+ }
221
+
182
222
async function handleAddToSteam ( ) {
183
223
setSteamRefresh ( true )
184
224
if ( addedToSteam ) {
@@ -230,67 +270,16 @@ export default function GamesSubmenu({
230
270
setAddedToSteam ( added )
231
271
} )
232
272
233
- ipcRenderer
234
- . invoke ( 'requestSettings' , appName )
235
- . then ( async ( response : GameSettings | AppSettings ) => {
236
- console . log ( response )
237
- const enabled = await ipcRenderer . invoke (
238
- 'isEosOverlayEnabled' ,
239
- response . winePrefix
240
- )
241
- setEosOverlayEnabled ( enabled )
242
- } )
243
- } , [ ] )
244
-
245
- useEffect ( ( ) => {
246
273
const { status } =
247
274
libraryStatus . filter (
248
275
( game : GameStatus ) => game . appName === eosOverlayAppName
249
276
) [ 0 ] || { }
250
277
setEosOverlayRefresh ( status === 'installing' )
251
- } , [ eosOverlayRefresh ] )
252
-
253
- async function handleEosOverlay ( ) {
254
- const { winePrefix, wineVersion } = await ipcRenderer . invoke (
255
- 'requestSettings' ,
256
- appName
257
- )
258
- const actualPrefix =
259
- wineVersion . type === 'proton' ? `${ winePrefix } /pfx` : winePrefix
260
-
261
- if ( eosOverlayEnabled ) {
262
- await ipcRenderer . invoke ( 'disableEosOverlay' , actualPrefix )
263
- setEosOverlayEnabled ( false )
264
- } else {
265
- const initialEnableResult = await ipcRenderer . invoke (
266
- 'enableEosOverlay' ,
267
- actualPrefix
268
- )
269
- const { installNow } = initialEnableResult
270
- let { wasEnabled } = initialEnableResult
271
278
272
- if ( installNow ) {
273
- await handleGameStatus ( {
274
- appName : eosOverlayAppName ,
275
- runner : 'legendary' ,
276
- status : 'installing'
277
- } )
278
- setEosOverlayRefresh ( true )
279
- await ipcRenderer . invoke ( 'installEosOverlay' )
280
- await handleGameStatus ( {
281
- appName : eosOverlayAppName ,
282
- runner : 'legendary' ,
283
- status : 'done'
284
- } )
285
- setEosOverlayRefresh ( false )
286
- wasEnabled = (
287
- await ipcRenderer . invoke ( 'enableEosOverlay' , actualPrefix )
288
- ) . wasEnabled
289
- }
290
-
291
- setEosOverlayEnabled ( wasEnabled )
292
- }
293
- }
279
+ ipcRenderer
280
+ . invoke ( 'isEosOverlayEnabled' , appName , runner )
281
+ . then ( ( enabled ) => setEosOverlayEnabled ( enabled ) )
282
+ } , [ ] )
294
283
295
284
const refreshCircle = ( ) => {
296
285
return < CircularProgress className = "link button is-text is-link" />
0 commit comments