@@ -7,8 +7,6 @@ const { v4: uuidv4 } = require('uuid');
77
88const fs = require ( 'fs' ) ;
99
10- const build = true
11-
1210const path = require ( 'path' ) ;
1311
1412const { checkLang} = require ( "./script/lang/getLanguage" ) ;
@@ -28,6 +26,8 @@ let langUI;
2826let updaterWindows ;
2927let mainWindows ;
3028
29+ let autoUpdate = false ;
30+
3131autoUpdater . on ( 'error' , ( err ) => {
3232 updaterWindows . webContents . send ( 'update_error' , err ) ;
3333} )
@@ -125,20 +125,43 @@ async function checkDataFile(){
125125
126126function createWindow ( ) {
127127 mainWindows = new BrowserWindow ( {
128- width : 800 ,
129- height : 400 ,
128+ minWidth : 1600 ,
129+ minHeight : 800 ,
130130 autoHideMenuBar : true ,
131131 webPreferences :{
132132 nodeIntegration : false , // is default value after Electron v5
133133 contextIsolation : true , // protect against prototype pollution
134134 enableRemoteModule : false , // turn off remote
135135 preload : path . join ( __dirname , "/script/preload.js" ) , // use a preload script
136136 nativeWindowOpen : true
137- }
137+ } ,
138+ titleBarStyle : 'hidden'
138139 } )
139140
140141 mainWindows . loadFile ( 'pages/index.html' ) ;
141142
143+ mainWindows . on ( 'unmaximize' , ( e ) => {
144+
145+ mainWindows . webContents . send ( 'minSizeResponse' ) ;
146+
147+ e . returnValue = null ;
148+ } )
149+ mainWindows . on ( 'maximize' , ( e ) => {
150+
151+ mainWindows . webContents . send ( 'maxSizeResponse' ) ;
152+
153+ e . returnValue = null ;
154+ } )
155+ let handleRedirect = ( e , url ) => {
156+ if ( url !== webContents . getURL ( ) ) {
157+ e . preventDefault ( )
158+ require ( 'electron' ) . shell . openExternal ( url )
159+ }
160+ }
161+
162+ mainWindows . webContents . on ( 'will-navigate' , handleRedirect )
163+ mainWindows . webContents . on ( 'new-window' , handleRedirect )
164+
142165}
143166function createLoader ( ) {
144167 updaterWindows = new BrowserWindow ( {
@@ -164,31 +187,72 @@ function createLoader(){
164187 updaterWindows . loadFile ( 'pages/update.html' ) ;
165188
166189 updaterWindows . once ( "ready-to-show" , ( ) => {
167- autoUpdater . checkForUpdatesAndNotify ( ) ;
190+
191+ fs . access ( app . getPath ( 'userData' ) + "/data/settings.json" , async ( err ) => {
192+
193+ if ( err !== null ) {
194+
195+ console . error ( err ) ;
196+
197+ let data = {
198+ "settings" :
199+ {
200+ "lang" : "en-EN" ,
201+ "autoupdate" : false
202+ }
203+ }
204+
205+ await mkdirp ( app . getPath ( 'userData' ) + "/data/" ) ;
206+ fs . writeFile ( app . getPath ( 'userData' ) + "/data/settings.json" , JSON . stringify ( data ) , ( err1 ) => {
207+
208+ checkDataFile ( )
209+
210+ } )
211+ } else {
212+
213+ fs . readFile ( app . getPath ( 'userData' ) + "/data/settings.json" , ( err1 , data ) => {
214+
215+ let result = JSON . parse ( data . toString ( "utf-8" ) )
216+
217+ let setting = result [ 'settings' ]
218+
219+ lang = setting [ 'lang' ] ;
220+ autoUpdate = setting [ 'autoupdate' ] ;
221+
222+ if ( ! autoUpdate ) {
223+
224+ checkDataFile ( )
225+
226+ } else {
227+
228+ autoUpdater . checkForUpdatesAndNotify ( ) ;
229+
230+ }
231+ } )
232+
233+ }
234+ } ) ;
168235
169236 } )
170237
171- if ( ! build ) checkDataFile ( ) ;
172238
173239}
174240
175241app . whenReady ( ) . then ( ( ) => {
242+ process . setMaxListeners ( 0 )
176243 createLoader ( )
177244
178245 app . on ( 'activate' , function ( ) {
179246 if ( BrowserWindow . getAllWindows ( ) . length === 0 ) createWindow ( )
180247 } )
181248
182-
183249} )
184250app . on ( 'window-all-closed' , function ( ) {
185251 if ( process . platform !== 'darwin' ) app . quit ( )
186252} )
187253
188254ipcMain . on ( 'getAllJobs' , async ( ipc ) => {
189255
190- console . log ( 'receive getAllJobs' ) ;
191-
192256 mainWindows . webContents . send ( 'getAllJobsResponse' , jobData ) ;
193257
194258} )
@@ -203,12 +267,8 @@ ipcMain.on('getUID', (ipc)=>{
203267
204268ipcMain . on ( 'getDataFrom' , async ( ipc , path ) => {
205269
206- console . log ( 'execute getDataFrom function' ) ;
207-
208270 await getDataFrom ( path , ( data ) => {
209271
210- console . log ( 'return of getDataFrom function' ) ;
211-
212272 mainWindows . webContents . send ( 'getDataFromResponse' , data ) ;
213273
214274 } )
@@ -217,16 +277,12 @@ ipcMain.on('getDataFrom', async (ipc, path)=>{
217277
218278ipcMain . on ( 'getAllItems' , async ( ipc ) => {
219279
220- console . log ( 'receive getAllItem' ) ;
221-
222280 mainWindows . webContents . send ( 'getAllItemsResponse' , materialsData ) ;
223281
224282} )
225283
226284ipcMain . on ( "getLang" , async ( ipc , type , elem = null , key = - 1 ) => {
227285
228- console . log ( 'execute getLang function' ) ;
229-
230286 switch ( type ) {
231287
232288 case "jobs" :{
@@ -244,8 +300,6 @@ ipcMain.on("getLang", async (ipc, type, elem = null, key = -1)=>{
244300
245301 mainWindows . webContents . send ( 'getLangResponse' , type , job ) ;
246302
247- console . trace ( elem ) ;
248-
249303 break ;
250304 }
251305 case "rarity" :{
@@ -260,8 +314,6 @@ ipcMain.on("getLang", async (ipc, type, elem = null, key = -1)=>{
260314
261315 mainWindows . send ( 'getLangResponse' , type , rarity , key ) ;
262316
263- console . trace ( rarity )
264-
265317 break ;
266318 }
267319 case "item" :{
@@ -270,25 +322,22 @@ ipcMain.on("getLang", async (ipc, type, elem = null, key = -1)=>{
270322 id : elem . id ,
271323 jobId : elem . jobId ,
272324 image : elem . image ,
273- related : elem . related
325+ related : elem . related ,
326+ cat : elem . cat
274327 } ;
275328
276- console . trace ( langMaterials ) ;
329+ material . name = langMaterials [ "materials" ] [ 0 ] [ elem . name . toLowerCase ( ) ] ;
277330
278- material . name = langMaterials [ "materials" ] [ 0 ] [ elem . name . toLowerCase ( ) ] [ 0 ] ;
279331
280332 if ( material . name === undefined ) {
281333 material . name = `lang: ${ lang } ${ elem . name . toLowerCase ( ) } ` ;
282334 }
283335
284336 mainWindows . webContents . send ( 'getLangResponse' , type , material , key ) ;
285337
286- console . trace ( material ) ;
287-
288338 break ;
289339 }
290340 case "ui" :{
291- console . trace ( langUI [ "default" ] [ 0 ] ) ;
292341
293342 mainWindows . webContents . send ( 'getLangResponse' , type , langUI [ "default" ] [ 0 ] , key ) ;
294343 }
@@ -299,9 +348,7 @@ ipcMain.on("getLang", async (ipc, type, elem = null, key = -1)=>{
299348
300349ipcMain . on ( 'getSavedTab' , async ( ipc ) => {
301350
302- console . log ( "getSavedTab" ) ;
303-
304- fs . access ( process . cwd ( ) + "/data/save/tabs.json" , async ( err ) => {
351+ fs . access ( app . getPath ( 'userData' ) + "/data/save/tabs.json" , async ( err ) => {
305352
306353 if ( err !== null ) {
307354
@@ -313,18 +360,15 @@ ipcMain.on('getSavedTab', async (ipc)=>{
313360 }
314361 }
315362
316- await mkdirp ( process . cwd ( ) + "/data/save/" ) ;
317- fs . writeFile ( process . cwd ( ) + "/data/save/tabs.json" , JSON . stringify ( data ) , ( err1 ) => {
318-
319- console . log ( "writeFile" ) ;
320- console . error ( err1 ) ;
363+ await mkdirp ( app . getPath ( 'userData' ) + "/data/save/" ) ;
364+ fs . writeFile ( app . getPath ( 'userData' ) + "/data/save/tabs.json" , JSON . stringify ( data ) , ( err1 ) => {
321365
322366 mainWindows . webContents . send ( 'getSavedTabResponse' , data , false ) ;
323367
324368 } )
325369 } else {
326370
327- fs . readFile ( process . cwd ( ) + "/data/save/tabs.json" , ( err1 , data ) => {
371+ fs . readFile ( app . getPath ( 'userData' ) + "/data/save/tabs.json" , ( err1 , data ) => {
328372
329373 mainWindows . webContents . send ( 'getSavedTabResponse' , JSON . parse ( data . toString ( "utf-8" ) ) , true ) ;
330374
@@ -340,24 +384,78 @@ ipcMain.on('getSavedTab', async (ipc)=>{
340384
341385ipcMain . on ( 'deleteTab' , ( ipc , data ) => {
342386
343- console . log ( "deleteTab" ) ;
344-
345- fs . writeFile ( process . cwd ( ) + "/data/save/tabs.json" , "" , ( ) => {
387+ fs . writeFile ( app . getPath ( 'userData' ) + "/data/save/tabs.json" , "" , ( ) => {
346388 mainWindows . webContents . send ( 'deleteTabResponse' ) ;
347389 } )
348390
349391} )
350392
351393ipcMain . on ( 'saveTab' , ( ipc , data ) => {
352394
353- console . log ( "saveTab" ) ;
354-
355- fs . writeFile ( process . cwd ( ) + "/data/save/tabs.json" , JSON . stringify ( data ) , ( ) => {
395+ fs . writeFile ( app . getPath ( 'userData' ) + "/data/save/tabs.json" , JSON . stringify ( data ) , ( ) => {
356396 mainWindows . webContents . send ( 'saveTabResponse' ) ;
357397 } )
358398
359399} )
360400
401+ ipcMain . once ( 'closeApp' , ( ipc ) => {
402+
403+ app . quit ( ) ;
404+
405+ } )
406+
407+ ipcMain . on ( 'minApp' , ( ipc ) => {
408+
409+ mainWindows . minimize ( ) ;
410+
411+ } )
412+
413+ ipcMain . on ( 'maxSize' , ( ipc ) => {
414+
415+ mainWindows . maximize ( ) ;
416+
417+ } )
418+
419+ ipcMain . on ( 'minSize' , ( ipc ) => {
420+
421+ mainWindows . unmaximize ( ) ;
422+
423+ } )
424+
425+ ipcMain . once ( 'restartApp' , ( ipc ) => {
426+
427+ app . relaunch ( ) ;
428+ app . exit ( ) ;
429+
430+ } )
431+
432+ ipcMain . on ( 'getLanguage' , ( ipc ) => {
433+
434+ checkLang ( ( langs ) => {
435+
436+ mainWindows . webContents . send ( 'getLanguageResponse' , { 'chosen' : lang , 'langs' : langs } ) ;
437+
438+ } )
439+
440+ } )
441+
442+ ipcMain . on ( 'getAutoUpdate' , ( ipc ) => {
443+
444+ mainWindows . webContents . send ( 'getAutoUpdateResponse' , autoUpdate ) ;
445+
446+ } ) ;
447+
448+ ipcMain . on ( 'setSettings' , ( ipc , setting ) => {
449+
450+ fs . writeFile ( app . getPath ( 'userData' ) + '/data/settings.json' , JSON . stringify ( setting ) , ( ) => {
451+
452+ mainWindows . webContents . send ( 'setSettingsResponse' ) ;
453+
454+
455+
456+ } )
457+
458+ } )
361459
362460// Function for the auto-updater
363461ipcMain . on ( 'installUpdate' , ( ipc ) => {
0 commit comments