Skip to content

Commit 6364d58

Browse files
committed
0.9.47 Flatpak portals test
1 parent 006ccb6 commit 6364d58

File tree

6 files changed

+787
-1144
lines changed

6 files changed

+787
-1144
lines changed

β€Žmain.jsβ€Ž

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { spawn, exec } from 'child_process';
88
import { getAllCoverImageUrls, getGameMetaData } from './src/js/backends.js';
99

1010
import { PLATFORMS, getPlatformInfo } from './src/js/platforms.js';
11+
import { pickFolderPersist } from "./src/js/portal-picker.js";
1112

1213
import axios from 'axios';
1314
import os from 'os';
@@ -356,6 +357,7 @@ const downloadAndSaveImage = async (imgSrc, platform, gameName, gamesDir) => {
356357
}
357358
};
358359

360+
359361
// delete cover from covers directory (with existence check)
360362
ipcMain.handle('delete-image', async (_event, imagePath) => {
361363
return new Promise(resolve => {
@@ -488,16 +490,6 @@ ipcMain.handle('get-user-data', () => {
488490
};
489491
});
490492

491-
ipcMain.handle('select-file-or-directory', async (event, property) => {
492-
493-
const result = await dialog.showOpenDialog({ properties: [property] });
494-
495-
if (!result.canceled && result.filePaths.length > 0) {
496-
return result.filePaths[0];
497-
}
498-
return null;
499-
});
500-
501493
ipcMain.handle('go-to-url', async (event, link) => {
502494
console.log("url: ", link);
503495
shell.openExternal(link);
@@ -1116,3 +1108,46 @@ ipcMain.handle('get-flatpak-download-size', async (event, appId) => {
11161108
});
11171109
});
11181110
});
1111+
1112+
1113+
ipcMain.handle('ping', () => {
1114+
console.log("🌍 Ping handler called - IPC is working!");
1115+
return 'pong';
1116+
});
1117+
1118+
ipcMain.handle("select-file-or-directory", async (event, property) => {
1119+
console.log("🌍 IPC handler CALLED for:", property);
1120+
const isFlatpak = !!process.env.FLATPAK_ID;
1121+
console.log("🌍 Running in Flatpak?", isFlatpak);
1122+
1123+
try {
1124+
if (property === "openDirectory" && isFlatpak) {
1125+
console.log("πŸ” Using portal picker for directory (Flatpak)...");
1126+
try {
1127+
const result = await pickFolderPersist();
1128+
console.log("πŸ”„ Portal picker result:", result);
1129+
return result?.path || null;
1130+
} catch (portalError) {
1131+
console.error("πŸ”„ Portal picker failed:", portalError);
1132+
console.log("❌ Portal error - falling back to native dialog");
1133+
}
1134+
}
1135+
1136+
// Fallback to Electron native dialogs (always for file picker, and fallback for directories)
1137+
console.log("πŸ” Using Electron native dialog for", property);
1138+
const result = await dialog.showOpenDialog({
1139+
title: property === 'openDirectory' ? 'Choose a folder' : 'Choose a file',
1140+
properties: [property],
1141+
modal: true
1142+
});
1143+
console.log("πŸ”„ Dialog result:", result);
1144+
if (result.canceled || result.filePaths.length === 0) {
1145+
return null;
1146+
}
1147+
return result.filePaths[0];
1148+
1149+
} catch (e) {
1150+
console.error("IPC handler error:", e);
1151+
return null;
1152+
}
1153+
});

0 commit comments

Comments
Β (0)