@@ -10,6 +10,9 @@ const { User, UserSetting } = require('./backend/database');
1010const { Op } = require ( 'sequelize' ) ;
1111const axios = require ( 'axios' ) ;
1212const crypto = require ( 'crypto' ) ;
13+ const Store = require ( 'electron-store' ) ;
14+ const store = new Store ( ) ;
15+
1316
1417const apiUrl = process . env . API_URL ;
1518const serverKey = process . env . SERVER_KEY ;
@@ -208,7 +211,14 @@ app.on('before-quit', async (event) => {
208211 }
209212} ) ;
210213
211- ipcMain . handle ( 'save-personal-info' , async ( event , formData ) => {
214+ //session clearing
215+ ipcMain . handle ( 'session:clear' , ( ) => {
216+ store . delete ( 'userSession' ) ;
217+ return true ;
218+ } ) ;
219+
220+
221+ /*ipcMain.handle('save-personal-info', async (event, formData) => {
212222 try {
213223 const user = await User.findByPk(formData.id);
214224
@@ -236,11 +246,62 @@ ipcMain.handle('save-personal-info', async (event, formData) => {
236246 console.error('Error saving personal info:', err);
237247 return { success: false, error: err.message };
238248 }
249+ });*/
250+
251+ ipcMain . handle ( 'save-personal-info' , async ( event , formData ) => {
252+ try {
253+ const id = formData . id ;
254+
255+ if ( ! id ) {
256+ return { success : false , error : 'Missing user ID.' } ;
257+ }
258+
259+ //const response = await fetch('http://localhost/api/profile/my_profile_update', {
260+ const response = await fetch ( 'http://www.vrbattles.gg/api/profile/my_profile_update' , {
261+ method : 'POST' ,
262+ headers : {
263+ 'Content-Type' : 'application/json'
264+ } ,
265+ body : JSON . stringify ( {
266+ edit : true ,
267+ editid : id ,
268+ username : formData . username ,
269+ ign : formData . ign ,
270+ platform : formData . platform ,
271+ timezone : formData . timezone ,
272+ bio : formData . bio
273+ } )
274+ } ) ;
275+
276+ const text = await response . text ( ) ;
277+ let result ;
278+
279+ try {
280+ result = JSON . parse ( text ) ;
281+ } catch ( e ) {
282+ return { success : false , error : 'Invalid JSON from API' , raw : text } ;
283+ }
284+
285+ if ( result . status === 'success' ) {
286+ return { success : true , data : result . data || { } } ;
287+ } else {
288+ return { success : false , error : result . message || 'Update failed' } ;
289+ }
290+
291+ } catch ( err ) {
292+ console . error ( 'API Error saving personal info:' , err ) ;
293+ return { success : false , error : err . message } ;
294+ }
239295} ) ;
240296
241297
242298
243299
300+
301+
302+
303+
304+
244305/*ipcMain.handle('login', async (event, username, password) => {
245306 try {
246307 const user = await User.findOne({
@@ -615,57 +676,69 @@ ipcMain.handle('register-user', async (event, formData, file) => {
615676
616677ipcMain . handle ( 'get-user-by-id' , async ( event , id ) => {
617678 try {
618- if ( ! id ) {
619- const session = store . get ( 'userSession' ) ;
620- if ( ! session || ! session . id ) {
621- return { success : false , message : 'No session or user ID found.' } ;
622- }
623- id = session . id ;
679+ const session = store . get ( 'userSession' ) ;
680+ if ( ! id && ( ! session || ! session . id ) ) {
681+ return { success : false , message : 'No session or user ID found.' } ;
624682 }
625683
626- const user = await User . findByPk ( id ) ;
627- if ( ! user ) return { success : false , message : 'User not found' } ;
684+ id = id || session . id ;
685+
686+ //const response = await fetch('http://localhost/api/fetch/user', {
687+ const response = await fetch ( 'http://www.vrbattles.gg/api/fetch/user' , {
688+ method : 'POST' ,
689+ headers : { 'Content-Type' : 'application/json' } ,
690+ body : JSON . stringify ( { id } )
691+ } ) ;
628692
629- const userSetting = await UserSetting . findOne ( { where : { user_id : id } } ) ;
693+ const text = await response . text ( ) ;
694+ let result ;
630695
631- let parsedData = { } ;
632696 try {
633- parsedData = user . player_data ? JSON . parse ( user . player_data ) : { } ;
634- } catch ( e ) {
635- console . warn ( 'Failed to parse player_data:' , e ) ;
697+ result = JSON . parse ( text ) ;
698+ //console.log('[Fetch User] API Raw Result:', result);
699+ } catch ( err ) {
700+ return { success : false , message : 'Invalid JSON response from API' , raw : text } ;
701+ }
702+
703+ const user = result . user || result . data ?. [ 0 ] ;
704+
705+ if ( result . status !== 'success' || ! user ) {
706+ return { success : false , message : result . message || 'Failed to fetch user' } ;
636707 }
637708
638709 return {
639710 success : true ,
640711 user : {
641712 id : user . id ,
642713 username : user . username ,
643- ign : user . ign ,
714+ ign : user . ign || '' ,
644715 email : user . email ,
645716 platform : user . platform || '' ,
646- timezone : userSetting ?. time_zone || '' ,
647- displayName : parsedData . username || '' ,
717+ timezone : user . timezone || '' ,
718+ displayName : user . username || '' ,
648719 fullName : `${ user . firstname || '' } ${ user . lastname || '' } ` . trim ( ) ,
649- phone : parsedData . phone || '' ,
650- bio : parsedData . profile ?. bio || '' ,
720+ phone : '' ,
721+ bio : '' ,
651722 avatar : user . profile || '' ,
652- player_banner : user . player_banner || '' ,
723+ banner : user . player_banner || '' ,
653724 player_session_id : user . player_session_id ,
654725 wallet_id : user . wallet_id ,
655- stats : parsedData . stats || { } ,
656- mmr : parsedData . player_mmr || { } ,
657- teams : parsedData . teams || { }
726+ stats : { } ,
727+ mmr : { } ,
728+ teams : { }
658729 }
659730 } ;
660731 } catch ( error ) {
661- console . error ( 'Error fetching user by ID :' , error ) ;
662- return { success : false , message : 'Error fetching user profile. ' } ;
732+ // console.error('[Electron] API fetch error :', error);
733+ return { success : false , message : 'Error fetching user profile from API ' } ;
663734 }
664735} ) ;
665736
666737
667738
668739
740+
741+
669742//lootlocker
670743ipcMain . handle ( 'lootlocker-login' , async ( event , { email, password } ) => {
671744 try {
0 commit comments