From f99263c03b966af38198ac388ce9b1205daccad9 Mon Sep 17 00:00:00 2001 From: re1sub Date: Tue, 30 Jun 2026 13:55:17 +0200 Subject: [PATCH 1/5] feat: add local emulator detection, backend controllers, and Redux state --- electron/controllers/authController.js | 165 ++++++++++++- electron/controllers/emulatorController.js | 142 +++++++++++ electron/controllers/firebaseController.js | 58 ++++- electron/controllers/index.js | 7 +- electron/controllers/storageController.js | 232 ++++++++++++++++-- electron/preload.js | 8 + src/app/store/index.ts | 2 + .../projects/store/projectsPersistence.ts | 12 + src/features/projects/store/projectsSlice.ts | 106 +++++++- src/shared/utils/electronMock.ts | 10 + src/vite-env.d.ts | 34 ++- 11 files changed, 732 insertions(+), 44 deletions(-) create mode 100644 electron/controllers/emulatorController.js diff --git a/electron/controllers/authController.js b/electron/controllers/authController.js index 467e278..b9e5ab0 100644 --- a/electron/controllers/authController.js +++ b/electron/controllers/authController.js @@ -1,21 +1,82 @@ /** * Auth Controller - * Handles Firebase Authentication user management via IPC (Admin SDK only) + * Handles Firebase Authentication user management via IPC (Admin SDK / Emulator REST) * Note: Google OAuth auth operations are handled by googleController.js */ const { ipcMain } = require('electron'); +const fetch = require('node-fetch'); let adminRef = null; +let authEmulatorHost = null; function setAdminRef(admin) { adminRef = admin; } +function setAuthEmulatorHost(host) { + authEmulatorHost = host; +} + +function getProjectId() { + if (adminRef?.apps?.length > 0) { + return adminRef.app().options.projectId; + } + return null; +} + +async function getAuthEmulatorBase() { + if (authEmulatorHost) return `http://${authEmulatorHost}/identitytoolkit.googleapis.com/v1`; + return null; +} + +function normalizeUserRecord(user) { + return { + uid: user.localId || user.uid, + email: user.email || null, + emailVerified: user.emailVerified || false, + displayName: user.displayName || null, + photoURL: user.photoUrl || null, + phoneNumber: user.phoneNumber || null, + disabled: user.disabled || false, + metadata: user.createdAt + ? { + creationTime: new Date(Number(user.createdAt)).toISOString(), + lastSignInTime: user.lastLoginAt ? new Date(Number(user.lastLoginAt)).toISOString() : null, + } + : { creationTime: null, lastSignInTime: null }, + providerData: (user.providerUserInfo || []).map((p) => ({ + providerId: p.providerId, + uid: p.rawId || p.federatedId, + email: p.email || null, + displayName: p.displayName || null, + photoURL: p.photoUrl || null, + })), + }; +} + function registerHandlers() { - // List users (Admin SDK) + // List users ipcMain.handle('auth:listUsers', async (event, { maxResults = 1000 } = {}) => { try { + const baseUrl = await getAuthEmulatorBase(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected to Firebase'); + + if (baseUrl) { + const response = await fetch(`${baseUrl}/projects/${projectId}/accounts:query`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', Authorization: 'Bearer owner' }, + body: JSON.stringify({ returnUserInfo: true, maxResults }), + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'List users failed' }; + } + const users = (data.userInfo || []).map(normalizeUserRecord); + return { success: true, users }; + } + if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); const listUsersResult = await adminRef.auth().listUsers(maxResults); const users = listUsersResult.users.map((user) => ({ @@ -42,11 +103,37 @@ function registerHandlers() { } }); - // Create user (Admin SDK) + // Create user ipcMain.handle( 'auth:createUser', async (event, { email, password, displayName, phoneNumber, uid, photoURL, disabled, emailVerified }) => { try { + const baseUrl = await getAuthEmulatorBase(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected to Firebase'); + + if (baseUrl) { + const body = { email, password }; + if (displayName) body.displayName = displayName; + if (phoneNumber) body.phoneNumber = phoneNumber; + if (uid) body.localId = uid; + if (disabled !== undefined) body.disabled = disabled; + if (emailVerified !== undefined) body.emailVerified = emailVerified; + const response = await fetch(`${baseUrl}/projects/${projectId}/accounts`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', Authorization: 'Bearer owner' }, + body: JSON.stringify(body), + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Create user failed' }; + } + return { + success: true, + user: { uid: data.localId, email: data.email, displayName: data.displayName || null }, + }; + } + if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); const userData = { email, password }; if (displayName) userData.displayName = displayName; @@ -66,11 +153,38 @@ function registerHandlers() { }, ); - // Update user (Admin SDK) + // Update user ipcMain.handle( 'auth:updateUser', async (event, { uid, email, password, displayName, phoneNumber, disabled, photoURL, emailVerified }) => { try { + const baseUrl = await getAuthEmulatorBase(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected to Firebase'); + + if (baseUrl) { + const body = { localId: uid }; + if (email !== undefined) body.email = email; + if (password !== undefined) body.password = password; + if (displayName !== undefined) body.displayName = displayName; + if (phoneNumber !== undefined) body.phoneNumber = phoneNumber; + if (disabled !== undefined) body.disableUser = disabled; + const response = await fetch(`${baseUrl}/projects/${projectId}/accounts:update`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', Authorization: 'Bearer owner' }, + body: JSON.stringify(body), + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Update user failed' }; + } + const updated = data.localId ? normalizeUserRecord(data) : null; + return { + success: true, + user: updated || { uid, email, displayName, disabled }, + }; + } + if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); const updateData = {}; if (email !== undefined) updateData.email = email; @@ -96,9 +210,26 @@ function registerHandlers() { }, ); - // Delete user (Admin SDK) + // Delete user ipcMain.handle('auth:deleteUser', async (event, { uid }) => { try { + const baseUrl = await getAuthEmulatorBase(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected to Firebase'); + + if (baseUrl) { + const response = await fetch(`${baseUrl}/projects/${projectId}/accounts:delete`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', Authorization: 'Bearer owner' }, + body: JSON.stringify({ localId: uid }), + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Delete user failed' }; + } + return { success: true }; + } + if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); await adminRef.auth().deleteUser(uid); return { success: true }; @@ -107,9 +238,29 @@ function registerHandlers() { } }); - // Get user (Admin SDK) + // Get user ipcMain.handle('auth:getUser', async (event, { uid }) => { try { + const baseUrl = await getAuthEmulatorBase(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected to Firebase'); + + if (baseUrl) { + const response = await fetch(`${baseUrl}/projects/${projectId}/accounts:lookup`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', Authorization: 'Bearer owner' }, + body: JSON.stringify({ localId: [uid] }), + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'User not found' }; + } + if (!data.users || data.users.length === 0) { + return { success: false, error: 'User not found' }; + } + return { success: true, user: normalizeUserRecord(data.users[0]) }; + } + if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); const userRecord = await adminRef.auth().getUser(uid); return { @@ -135,4 +286,4 @@ function registerHandlers() { }); } -module.exports = { registerHandlers, setAdminRef }; +module.exports = { registerHandlers, setAdminRef, setAuthEmulatorHost }; diff --git a/electron/controllers/emulatorController.js b/electron/controllers/emulatorController.js new file mode 100644 index 0000000..ed8be3d --- /dev/null +++ b/electron/controllers/emulatorController.js @@ -0,0 +1,142 @@ +/** + * Emulator Controller + * Handles scanning for local Firebase Emulators + */ + +const { ipcMain } = require('electron'); +const fs = require('fs'); +const path = require('path'); +const os = require('os'); +const fetch = require('node-fetch'); + +/** + * Reads a JSON file safely + */ +function readJsonSafely(filePath) { + try { + if (fs.existsSync(filePath)) { + const content = fs.readFileSync(filePath, 'utf8'); + return JSON.parse(content); + } + } catch { + // Silently ignore unreadable or unparseable files + } + return null; +} + +/** + * Scans the OS temp directory for running emulator hub files. + * The hub locator file (hub-.json) only contains version, origins, and pid. + * To get the running emulator services, we must fetch GET /emulators from the hub. + */ +async function scanHubFiles() { + const tmpDir = os.tmpdir(); + const runningEmulators = []; + + try { + const files = fs.readdirSync(tmpDir); + const hubFiles = files.filter((f) => f.startsWith('hub-') && f.endsWith('.json')); + + for (const file of hubFiles) { + // Extract projectId from filename: hub-.json + const projectId = file.slice(4, -5); + if (!projectId) continue; + + const hubData = readJsonSafely(path.join(tmpDir, file)); + if (!hubData || !hubData.origins || !hubData.origins.length) continue; + + // Query the hub's /emulators endpoint to get running services + try { + const hubUrl = hubData.origins[0].replace(/\/$/, ''); + const response = await fetch(`${hubUrl}/emulators`, { + signal: AbortSignal.timeout(3000), + }); + if (!response.ok) continue; + + const emulatorsMap = await response.json(); + const firestore = emulatorsMap && emulatorsMap.firestore; + if (firestore) { + // Collect all available emulator services + const services = {}; + for (const [name, info] of Object.entries(emulatorsMap)) { + if (info && typeof info === 'object' && info.host && info.port) { + services[name] = { + host: info.host || 'localhost', + port: info.port, + }; + } + } + + runningEmulators.push({ + projectId, + host: firestore.host || 'localhost', + port: firestore.port, + services, + }); + } + } catch { + // Hub not reachable, skip this one + } + } + } catch (err) { + console.error('Failed to scan for hub files:', err); + } + + return runningEmulators; +} + +/** + * Scans the Firebase CLI configstore to map project IDs to local paths + */ +function scanConfigstore() { + const isMac = process.platform === 'darwin'; + const isWin = process.platform === 'win32'; + + let configstorePath; + if (isMac) { + configstorePath = path.join(os.homedir(), 'Library', 'Preferences', 'configstore', 'firebase-tools.json'); + } else if (isWin) { + // Windows path typically %LOCALAPPDATA%\configstore\firebase-tools.json + const localAppData = process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local'); + configstorePath = path.join(localAppData, 'configstore', 'firebase-tools.json'); + } else { + // Linux path + configstorePath = path.join(os.homedir(), '.config', 'configstore', 'firebase-tools.json'); + } + + const configData = readJsonSafely(configstorePath); + if (!configData || !configData.activeProjects) { + return {}; + } + + return configData.activeProjects; +} + +/** + * Registers all Emulator IPC handlers + */ +function registerHandlers() { + // Scans for running emulators via hub files + ipcMain.handle('emulators:scanHub', async () => { + try { + const emulators = await scanHubFiles(); + return { success: true, emulators }; + } catch (err) { + return { success: false, error: err.message }; + } + }); + + // Scans configstore for local project paths + ipcMain.handle('emulators:scanConfig', async () => { + try { + const activeProjects = scanConfigstore(); + return { success: true, activeProjects }; + } catch (err) { + return { success: false, error: err.message }; + } + }); +} + +module.exports = { + registerHandlers, +}; diff --git a/electron/controllers/firebaseController.js b/electron/controllers/firebaseController.js index 84de18f..e16d732 100644 --- a/electron/controllers/firebaseController.js +++ b/electron/controllers/firebaseController.js @@ -9,6 +9,8 @@ const fs = require('fs'); let admin = null; let db = null; let onConnectionChange = null; +let currentAuthEmulatorHost = null; +let currentStorageEmulatorHost = null; function getAdmin() { return admin; @@ -17,6 +19,10 @@ function getDb() { return db; } +function getStorageEmulatorHost() { + return currentStorageEmulatorHost; +} + /** * Sets callback to notify when connection changes */ @@ -34,6 +40,25 @@ function registerHandlers() { // Support both object params and legacy string path const serviceAccountPath = typeof params === 'string' ? params : params.serviceAccountPath; const databaseId = typeof params === 'string' ? undefined : params.databaseId; + const emulatorHost = typeof params === 'string' ? undefined : params.emulatorHost; + const explicitProjectId = typeof params === 'string' ? undefined : params.projectId; + const authEmulatorHost = typeof params === 'string' ? undefined : params.authEmulatorHost; + const storageEmulatorHost = typeof params === 'string' ? undefined : params.storageEmulatorHost; + + if (emulatorHost) { + process.env.FIRESTORE_EMULATOR_HOST = emulatorHost; + } else { + delete process.env.FIRESTORE_EMULATOR_HOST; + } + + if (authEmulatorHost) { + process.env.FIREBASE_AUTH_EMULATOR_HOST = authEmulatorHost; + } else { + delete process.env.FIREBASE_AUTH_EMULATOR_HOST; + } + + currentAuthEmulatorHost = authEmulatorHost || null; + currentStorageEmulatorHost = storageEmulatorHost || null; const adminSdk = require('firebase-admin'); @@ -49,11 +74,21 @@ function registerHandlers() { } } - const serviceAccount = JSON.parse(fs.readFileSync(serviceAccountPath, 'utf8')); - - adminSdk.initializeApp({ - credential: adminSdk.credential.cert(serviceAccount), - }); + let projectId = explicitProjectId; + + if (serviceAccountPath) { + const serviceAccount = JSON.parse(fs.readFileSync(serviceAccountPath, 'utf8')); + projectId = serviceAccount.project_id; + adminSdk.initializeApp({ + credential: adminSdk.credential.cert(serviceAccount), + projectId, + }); + } else if (emulatorHost && explicitProjectId) { + // Emulator connection without service account + adminSdk.initializeApp({ projectId: explicitProjectId }); + } else { + throw new Error('Must provide either serviceAccountPath or emulatorHost with projectId'); + } admin = adminSdk; db = adminSdk.firestore(); @@ -64,13 +99,15 @@ function registerHandlers() { // Notify other controllers about the connection change if (onConnectionChange) { - onConnectionChange(admin, db); + onConnectionChange(admin, db, currentAuthEmulatorHost, currentStorageEmulatorHost); } - return { success: true, projectId: serviceAccount.project_id, databaseId }; + return { success: true, projectId, databaseId }; } catch (error) { admin = null; db = null; + currentAuthEmulatorHost = null; + currentStorageEmulatorHost = null; try { const adminSdk = require('firebase-admin'); const leftover = [...adminSdk.apps]; @@ -85,7 +122,7 @@ function registerHandlers() { void e2; } if (onConnectionChange) { - onConnectionChange(null, null); + onConnectionChange(null, null, null, null); } return { success: false, error: error.message }; } @@ -105,9 +142,11 @@ function registerHandlers() { } admin = null; db = null; + currentAuthEmulatorHost = null; + currentStorageEmulatorHost = null; if (onConnectionChange) { - onConnectionChange(null, null); + onConnectionChange(null, null, null, null); } return { success: true }; } catch (error) { @@ -129,5 +168,6 @@ module.exports = { registerHandlers, getAdmin, getDb, + getStorageEmulatorHost, setConnectionChangeCallback, }; diff --git a/electron/controllers/index.js b/electron/controllers/index.js index d051caa..130270d 100644 --- a/electron/controllers/index.js +++ b/electron/controllers/index.js @@ -8,6 +8,7 @@ const firestoreController = require('./firestoreController'); const googleController = require('./googleController'); const storageController = require('./storageController'); const authController = require('./authController'); +const emulatorController = require('./emulatorController'); module.exports = { firebaseController, @@ -15,16 +16,19 @@ module.exports = { googleController, storageController, authController, + emulatorController, /** * Registers all IPC handlers from all controllers */ registerAllHandlers() { // Set up connection change callback to update references in other controllers - firebaseController.setConnectionChangeCallback((admin, db) => { + firebaseController.setConnectionChangeCallback((admin, db, authEmulatorHost, storageEmulatorHost) => { firestoreController.setRefs(admin, db); storageController.setAdminRef(admin); + storageController.setStorageEmulatorHost(storageEmulatorHost); authController.setAdminRef(admin); + authController.setAuthEmulatorHost(authEmulatorHost); }); // Register all handlers @@ -33,5 +37,6 @@ module.exports = { googleController.registerHandlers(); storageController.registerHandlers(); authController.registerHandlers(); + emulatorController.registerHandlers(); }, }; diff --git a/electron/controllers/storageController.js b/electron/controllers/storageController.js index 8579655..297f816 100644 --- a/electron/controllers/storageController.js +++ b/electron/controllers/storageController.js @@ -10,6 +10,7 @@ const fetch = require('node-fetch'); const googleController = require('./googleController'); let adminRef = null; +let storageEmulatorHost = null; // Cache for resolved bucket names per project const bucketNameCache = {}; @@ -18,6 +19,58 @@ function setAdminRef(admin) { adminRef = admin; } +function setStorageEmulatorHost(host) { + storageEmulatorHost = host; +} + +function getEmulatorBaseUrl() { + if (!storageEmulatorHost) return null; + return `http://${storageEmulatorHost}/v0`; +} + +/** + * Detect the correct bucket name for a project on the storage emulator. + * Tries both naming conventions and caches the result. + */ +async function getEmulatorBucketName(projectId) { + if (!storageEmulatorHost) return null; + if (bucketNameCache[projectId]) return bucketNameCache[projectId]; + + const baseUrl = getEmulatorBaseUrl(); + const patterns = [`${projectId}.firebasestorage.app`, `${projectId}.appspot.com`]; + + for (const bucketName of patterns) { + try { + const url = `${baseUrl}/b/${bucketName}/o?maxResults=1`; + const response = await fetch(url, { headers: { Authorization: 'Bearer owner' } }); + if (response.ok) { + bucketNameCache[projectId] = bucketName; + return bucketName; + } + } catch (e) { + void e; + } + } + + // Default to newer convention if no bucket exists yet + bucketNameCache[projectId] = patterns[0]; + return patterns[0]; +} + +/** + * Normalize a Firebase Storage REST API response item to the frontend's StorageFile shape. + */ +function normalizeStorageItem(item, prefix) { + return { + name: item.name ? item.name.replace(prefix || '', '').replace(/\/$/, '') : '', + path: item.name || '', + type: item.name && item.name.endsWith('/') ? 'folder' : 'file', + size: parseInt(item.size || 0, 10), + contentType: item.contentType || 'application/octet-stream', + updated: item.updated || item.timeCreated || null, + }; +} + /** * Get the default storage bucket name for a Firebase project. * Firebase can use different bucket naming conventions: @@ -66,14 +119,38 @@ function getProjectId() { } function registerHandlers() { - // List files (Admin SDK) + // List files (Admin SDK / Emulator REST) ipcMain.handle('storage:listFiles', async (event, { path: storagePath = '' }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected to Firebase'); const projectId = getProjectId(); - const bucket = adminRef.storage().bucket(`${projectId}.appspot.com`); + if (!projectId) throw new Error('Not connected to Firebase'); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; const prefix = storagePath ? (storagePath.endsWith('/') ? storagePath : storagePath + '/') : ''; + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const url = `${baseUrl}/b/${bucketName}/o?prefix=${encodeURIComponent(prefix)}&delimiter=/`; + const response = await fetch(url, { + headers: { Authorization: 'Bearer owner' }, + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Storage list failed' }; + } + const folders = (data.prefixes || []).map((p) => ({ + name: p.replace(prefix, '').replace(/\/$/, ''), + path: p, + type: 'folder', + size: 0, + updated: null, + })); + const fileList = (data.items || []) + .filter((f) => f.name !== prefix && !f.name.endsWith('/')) + .map((f) => normalizeStorageItem(f, prefix)); + return { success: true, items: [...folders, ...fileList], currentPath: storagePath }; + } + + const bucket = adminRef.storage().bucket(bucketName); const [files] = await bucket.getFiles({ prefix, delimiter: '/', autoPaginate: false }); const [, , apiResponse] = await bucket.getFiles({ prefix, delimiter: '/', autoPaginate: false }); @@ -101,18 +178,37 @@ function registerHandlers() { } }); - // Upload file (Admin SDK) + // Upload file (Admin SDK / Emulator REST) ipcMain.handle('storage:uploadFile', async (event, { storagePath }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); const { filePaths } = await dialog.showOpenDialog({ properties: ['openFile'] }); if (!filePaths?.length) return { success: false, error: 'No file selected' }; const localPath = filePaths[0]; const fileName = path.basename(localPath); - const bucket = adminRef.storage().bucket(`${getProjectId()}.appspot.com`); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; const destination = storagePath ? `${storagePath}/${fileName}` : fileName; + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const fileContent = fs.readFileSync(localPath); + const mimeType = require('mime-types').lookup(localPath) || 'application/octet-stream'; + const url = `${baseUrl}/b/${bucketName}/o?uploadType=media&name=${encodeURIComponent(destination)}`; + const response = await fetch(url, { + method: 'POST', + headers: { Authorization: 'Bearer owner', 'Content-Type': mimeType }, + body: fileContent, + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Upload failed' }; + } + return { success: true, fileName, path: destination }; + } + + const bucket = adminRef.storage().bucket(bucketName); await bucket.upload(localPath, { destination, metadata: { contentType: require('mime-types').lookup(localPath) || 'application/octet-stream' }, @@ -123,14 +219,29 @@ function registerHandlers() { } }); - // Download file (Admin SDK) + // Download file (Admin SDK / Emulator REST) ipcMain.handle('storage:downloadFile', async (event, { filePath }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); const { filePath: savePath } = await dialog.showSaveDialog({ defaultPath: filePath.split('/').pop() }); if (!savePath) return { success: false, error: 'No save location' }; - const bucket = adminRef.storage().bucket(`${getProjectId()}.appspot.com`); + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; + const url = `${baseUrl}/b/${bucketName}/o/${encodeURIComponent(filePath)}?alt=media`; + const response = await fetch(url, { headers: { Authorization: 'Bearer owner' } }); + if (!response.ok) { + const err = await response.json().catch(() => ({})); + return { success: false, error: err.error?.message || 'Download failed' }; + } + const buffer = await response.buffer(); + fs.writeFileSync(savePath, buffer); + return { success: true, savedTo: savePath }; + } + + const bucket = adminRef.storage().bucket(`${projectId}.appspot.com`); await bucket.file(filePath).download({ destination: savePath }); return { success: true, savedTo: savePath }; } catch (error) { @@ -138,11 +249,28 @@ function registerHandlers() { } }); - // Get signed URL (Admin SDK) + // Get download URL (Admin SDK / Emulator REST) ipcMain.handle('storage:getDownloadUrl', async (event, { filePath, expiresInMs }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); - const bucket = adminRef.storage().bucket(`${getProjectId()}.appspot.com`); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; + + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + // Fetch metadata to check for download tokens + const metaUrl = `${baseUrl}/b/${bucketName}/o/${encodeURIComponent(filePath)}`; + const metaResponse = await fetch(metaUrl, { headers: { Authorization: 'Bearer owner' } }); + const metadata = await metaResponse.json(); + if (metadata.error) { + return { success: false, error: metadata.error.message || 'File not found' }; + } + const token = metadata.downloadTokens ? metadata.downloadTokens.split(',')[0] : 'owner'; + const url = `${baseUrl}/b/${bucketName}/o/${encodeURIComponent(filePath)}?alt=media&token=${token}`; + return { success: true, url }; + } + + const bucket = adminRef.storage().bucket(bucketName); const expiration = expiresInMs || 7 * 24 * 60 * 60 * 1000; const expiresDate = new Date(Date.now() + expiration); const expiresString = `${String(expiresDate.getMonth() + 1).padStart(2, '0')}-${String(expiresDate.getDate()).padStart(2, '0')}-${expiresDate.getFullYear()}`; @@ -153,25 +281,60 @@ function registerHandlers() { } }); - // Delete file (Admin SDK) + // Delete file (Admin SDK / Emulator REST) ipcMain.handle('storage:deleteFile', async (event, { filePath }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); - await adminRef.storage().bucket(`${getProjectId()}.appspot.com`).file(filePath).delete(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; + + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const url = `${baseUrl}/b/${bucketName}/o/${encodeURIComponent(filePath)}`; + const response = await fetch(url, { + method: 'DELETE', + headers: { Authorization: 'Bearer owner' }, + }); + if (!response.ok && response.status !== 204) { + const err = await response.json().catch(() => ({})); + return { success: false, error: err.error?.message || 'Delete failed' }; + } + return { success: true }; + } + + await adminRef.storage().bucket(bucketName).file(filePath).delete(); return { success: true }; } catch (error) { return { success: false, error: error.message }; } }); - // Create folder (Admin SDK) + // Create folder (Admin SDK / Emulator REST) ipcMain.handle('storage:createFolder', async (event, { folderPath }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; const placeholderPath = folderPath.endsWith('/') ? folderPath + '.placeholder' : folderPath + '/.placeholder'; + + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const url = `${baseUrl}/b/${bucketName}/o?uploadType=media&name=${encodeURIComponent(placeholderPath)}`; + const response = await fetch(url, { + method: 'POST', + headers: { Authorization: 'Bearer owner', 'Content-Type': 'application/x-empty' }, + body: '', + }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'Folder creation failed' }; + } + return { success: true, folderPath }; + } + await adminRef .storage() - .bucket(`${getProjectId()}.appspot.com`) + .bucket(bucketName) .file(placeholderPath) .save('', { metadata: { contentType: 'application/x-empty' } }); return { success: true, folderPath }; @@ -180,11 +343,36 @@ function registerHandlers() { } }); - // Get file metadata (Admin SDK) + // Get file metadata (Admin SDK / Emulator REST) ipcMain.handle('storage:getFileMetadata', async (event, { filePath }) => { try { - if (!adminRef?.apps?.length) throw new Error('Not connected'); - const [metadata] = await adminRef.storage().bucket(`${getProjectId()}.appspot.com`).file(filePath).getMetadata(); + const projectId = getProjectId(); + if (!projectId) throw new Error('Not connected'); + const bucketName = storageEmulatorHost ? await getEmulatorBucketName(projectId) : `${projectId}.appspot.com`; + + if (storageEmulatorHost) { + const baseUrl = getEmulatorBaseUrl(); + const url = `${baseUrl}/b/${bucketName}/o/${encodeURIComponent(filePath)}`; + const response = await fetch(url, { headers: { Authorization: 'Bearer owner' } }); + const data = await response.json(); + if (data.error) { + return { success: false, error: data.error.message || 'File not found' }; + } + return { + success: true, + metadata: { + name: data.name, + size: parseInt(data.size || 0, 10), + contentType: data.contentType || 'application/octet-stream', + created: data.timeCreated || null, + updated: data.updated || null, + generation: data.generation || null, + md5Hash: data.md5Hash || null, + }, + }; + } + + const [metadata] = await adminRef.storage().bucket(bucketName).file(filePath).getMetadata(); return { success: true, metadata: { @@ -372,4 +560,4 @@ function registerHandlers() { }); } -module.exports = { registerHandlers, setAdminRef }; +module.exports = { registerHandlers, setAdminRef, setStorageEmulatorHost }; diff --git a/electron/preload.js b/electron/preload.js index 7900ca6..e96c87d 100644 --- a/electron/preload.js +++ b/electron/preload.js @@ -9,6 +9,10 @@ ipcRenderer.on('open-settings-dialog', () => { window.dispatchEvent(new CustomEvent('open-settings-dialog')); }); +ipcRenderer.on('scan-emulators', () => { + window.dispatchEvent(new CustomEvent('scan-emulators')); +}); + // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object contextBridge.exposeInMainWorld('electronAPI', { @@ -16,6 +20,10 @@ contextBridge.exposeInMainWorld('electronAPI', { connectFirebase: (params) => ipcRenderer.invoke('firebase:connect', params), disconnectFirebase: () => ipcRenderer.invoke('firebase:disconnect'), + // Emulators + scanEmulatorsHub: () => ipcRenderer.invoke('emulators:scanHub'), + scanEmulatorsConfig: () => ipcRenderer.invoke('emulators:scanConfig'), + // Firestore operations getCollections: () => ipcRenderer.invoke('firestore:getCollections'), getDocuments: (params) => ipcRenderer.invoke('firestore:getDocuments', params), diff --git a/src/app/store/index.ts b/src/app/store/index.ts index 463c083..3c910dc 100644 --- a/src/app/store/index.ts +++ b/src/app/store/index.ts @@ -26,6 +26,7 @@ import projectsReducer, { updateProject, addGoogleAccount, connectServiceAccount, + connectEmulatorProject, refreshCollections, Project, GoogleAccount, @@ -54,6 +55,7 @@ projectsPersistenceListener.startListening({ updateProject, addGoogleAccount, connectServiceAccount.fulfilled, + connectEmulatorProject.fulfilled, refreshCollections.fulfilled, ), effect: (_, api) => { diff --git a/src/features/projects/store/projectsPersistence.ts b/src/features/projects/store/projectsPersistence.ts index 155db26..3ade5a2 100644 --- a/src/features/projects/store/projectsPersistence.ts +++ b/src/features/projects/store/projectsPersistence.ts @@ -50,6 +50,18 @@ export const saveProjectsToStorage = (projects: (Project | GoogleAccount)[]) => collections: proj.collections || [], })), }; + } else if (isProject(p) && p.authMethod === 'emulator') { + return { + id: p.id, + projectId: p.projectId, + authMethod: p.authMethod, + emulatorHost: p.emulatorHost, + emulatorPort: p.emulatorPort, + emulatorServices: p.emulatorServices, + collections: p.collections || [], + firestoreDatabases: p.firestoreDatabases || [], + activeFirestoreDatabaseId: p.activeFirestoreDatabaseId, + }; } else if (isProject(p) && p.authMethod === 'google') { return { id: p.id, diff --git a/src/features/projects/store/projectsSlice.ts b/src/features/projects/store/projectsSlice.ts index 13a461a..c753d91 100644 --- a/src/features/projects/store/projectsSlice.ts +++ b/src/features/projects/store/projectsSlice.ts @@ -21,8 +21,11 @@ export interface FirestoreCollection { export interface Project { id: string; projectId: string; - authMethod: 'serviceAccount' | 'google'; + authMethod: 'serviceAccount' | 'google' | 'emulator'; serviceAccountPath?: string; + emulatorHost?: string; + emulatorPort?: number; + emulatorServices?: Record; /** @deprecated Prefer firestoreDatabases; kept for persisted legacy */ databaseId?: string; /** @deprecated Prefer firestoreDatabases[].collections */ @@ -273,6 +276,75 @@ export const addFirestoreDatabase = createAppAsyncThunk( }, ); +export const scanEmulators = createAppAsyncThunk('projects/scanEmulators', async (_, { extra, rejectWithValue }) => { + const electron = extra.electron.api; + const hubRes = await electron.scanEmulatorsHub(); + if (!hubRes?.success) return rejectWithValue(hubRes?.error || 'Failed to scan emulators hub'); + + return { emulators: hubRes.emulators || [] }; +}); + +export const connectEmulatorProject = createAppAsyncThunk( + 'projects/connectEmulatorProject', + async ( + { + projectId, + host, + port, + services, + }: { projectId: string; host: string; port: number; services?: Record }, + { extra, getState }, + ) => { + const electron = extra.electron.api; + const state = getState() as RootState; + const emulatorId = `emulator-${projectId}-${port}`; + + const existing = state.projects.items.find((i): i is Project => !isGoogleAccount(i) && i.id === emulatorId); + if (existing) { + return { mode: 'existing' as const, projectId: existing.id }; + } + + const authEmulatorHost = services?.auth ? `${services.auth.host}:${services.auth.port}` : undefined; + const storageEmulatorHost = services?.storage ? `${services.storage.host}:${services.storage.port}` : undefined; + + await electron.disconnectFirebase(); + const result = await electron.connectFirebase({ + projectId, + emulatorHost: `${host}:${port}`, + authEmulatorHost, + storageEmulatorHost, + }); + + if (!result?.success) throw new Error(result?.error || 'Emulator connection failed'); + + const collectionsResult = await electron.getCollections(); + const collections = collectionsResult?.success ? normalizeCollections(collectionsResult.collections) : []; + + const newFd: FirestoreDatabase = { + id: `fd-${Date.now()}`, + databaseId: '(default)', + label: 'Emulator (default)', + collections, + }; + + return { + mode: 'create' as const, + project: { + id: emulatorId, + projectId, + authMethod: 'emulator' as const, + emulatorHost: `${host}:${port}`, + emulatorPort: port, + emulatorServices: services, + firestoreDatabases: [newFd], + activeFirestoreDatabaseId: newFd.id, + expanded: true, + connected: true, + } satisfies Project, + }; + }, +); + export const addGoogleFirestoreDatabase = createAppAsyncThunk( 'projects/addGoogleFirestoreDatabase', async ( @@ -359,10 +431,19 @@ export const refreshCollections = createAppAsyncThunk( if (!fd) { return rejectWithValue('No Firestore database configured for this project.'); } - await electron.disconnectFirebase(); + const authHost = project.emulatorServices?.auth + ? `${project.emulatorServices.auth.host}:${project.emulatorServices.auth.port}` + : undefined; + const storageHost = project.emulatorServices?.storage + ? `${project.emulatorServices.storage.host}:${project.emulatorServices.storage.port}` + : undefined; const connectResult = await electron.connectFirebase({ serviceAccountPath: project.serviceAccountPath || '', databaseId: databaseIdToConnectParam(fd.databaseId), + emulatorHost: project.emulatorHost, + projectId: project.projectId, + authEmulatorHost: authHost, + storageEmulatorHost: storageHost, }); if (!connectResult?.success) { throw new Error(connectResult?.error || 'Failed to connect to Firebase'); @@ -445,8 +526,7 @@ export const refreshGoogleAccountProjects = createAppAsyncThunk( try { const state = getState(); const existingAccount = state.projects.items.find((item) => isGoogleAccount(item) && item.id === accountId) as - | GoogleAccount - | undefined; + GoogleAccount | undefined; const effectiveRefreshToken = refreshToken ?? existingAccount?.refreshToken; let accessToken = existingAccount?.accessToken; @@ -662,6 +742,23 @@ const projectsSlice = createSlice({ .addCase(addFirestoreDatabase.rejected, (state) => { state.loading = false; }) + .addCase(connectEmulatorProject.pending, (state) => { + state.loading = true; + }) + .addCase(connectEmulatorProject.fulfilled, (state, action) => { + const payload = action.payload; + if (payload.mode === 'create') { + state.items.push(payload.project); + state.selectedProjectId = payload.project.id; + } else { + state.selectedProjectId = payload.projectId; + } + state.loading = false; + }) + .addCase(connectEmulatorProject.rejected, (state, action) => { + state.loading = false; + state.error = action.error.message || null; + }) .addCase(addGoogleFirestoreDatabase.pending, (state) => { state.loading = true; }) @@ -690,6 +787,7 @@ const projectsSlice = createSlice({ .addCase(addGoogleFirestoreDatabase.rejected, (state) => { state.loading = false; }) + .addCase(refreshGoogleAccountProjects.fulfilled, (state, action) => { const { accountId, accessToken, projects } = action.payload; state.items = state.items.map((item) => { diff --git a/src/shared/utils/electronMock.ts b/src/shared/utils/electronMock.ts index 1d01f85..7557081 100644 --- a/src/shared/utils/electronMock.ts +++ b/src/shared/utils/electronMock.ts @@ -55,6 +55,16 @@ const mockElectronAPI: ElectronAPI = { return { success: false, error: 'Requires Electron mode' }; }, + // Emulators + scanEmulatorsHub: async () => { + console.warn('[Mock] scanEmulatorsHub requires Electron'); + return { success: false, error: 'Requires Electron mode' }; + }, + scanEmulatorsConfig: async () => { + console.warn('[Mock] scanEmulatorsConfig requires Electron'); + return { success: false, error: 'Requires Electron mode' }; + }, + // Dialog openFileDialog: async () => { console.warn('[Mock] File dialog requires Electron'); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index e4e4588..cbbef32 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -159,8 +159,12 @@ interface GoogleSignInResult { } interface ConnectFirebaseParams { - serviceAccountPath: string; + serviceAccountPath?: string; databaseId?: string; + emulatorHost?: string; + projectId?: string; + authEmulatorHost?: string; + storageEmulatorHost?: string; } interface ConnectFirebaseResult { @@ -177,11 +181,39 @@ interface GoogleSetRefreshTokenResult { error?: string; } +interface EmulatorServiceInfo { + host: string; + port: number; +} + +interface EmulatorHubCandidate { + projectId: string; + host: string; + port: number; + services: Record; +} + +interface EmulatorHubResult { + success: boolean; + emulators?: EmulatorHubCandidate[]; + error?: string; +} + +interface EmulatorConfigResult { + success: boolean; + activeProjects?: Record; + error?: string; +} + interface ElectronAPI { // Firebase connectFirebase: (params: ConnectFirebaseParams) => Promise; disconnectFirebase: () => Promise<{ success: boolean }>; + // Emulators + scanEmulatorsHub: () => Promise; + scanEmulatorsConfig: () => Promise; + // Firestore getCollections: () => Promise<{ success: boolean; collections?: FirestoreCollection[]; error?: string }>; getDocuments: ( From 1fb9ca0639ed5393cf77566dcfffd2163df2153a Mon Sep 17 00:00:00 2001 From: re1sub Date: Tue, 30 Jun 2026 13:55:38 +0200 Subject: [PATCH 2/5] feat: add emulator connection dialog, sidebar grouping, and emulator-aware feature tabs --- src/App.tsx | 5 +- src/features/auth/components/AuthTab.tsx | 40 +- .../collections/store/collectionSlice.ts | 134 ++--- .../console/components/ConsolePanel.tsx | 2 +- .../projects/components/ConnectionDialog.tsx | 130 ++++- .../projects/components/ProjectSidebar.tsx | 6 +- .../components/sidebar/SidebarMenu.tsx | 7 +- .../sidebar/SidebarProjectsList.tsx | 474 +++++++++++++++++- .../projects/utils/firestoreDatabaseUtils.ts | 2 +- .../projects/utils/projectConsoleUrl.ts | 36 ++ .../storage/components/StorageTab.tsx | 21 +- 11 files changed, 735 insertions(+), 122 deletions(-) create mode 100644 src/features/projects/utils/projectConsoleUrl.ts diff --git a/src/App.tsx b/src/App.tsx index 9cc2b24..00ceae0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -18,6 +18,7 @@ import { getActiveFirestoreDatabase, getFirestoreDatabaseDisplay, } from './features/projects/utils/firestoreDatabaseUtils'; +import { getConsoleUrl } from './features/projects/utils/projectConsoleUrl'; import { selectOpenTabs, selectActiveTabId, @@ -503,13 +504,13 @@ function FirestudioApp() { onRevealInFirebaseConsole: (item: Project | GoogleAccount) => { const project = ensureProject(item); if (!project) return; - const url = `https://console.firebase.google.com/project/${project.projectId}/firestore`; + const url = getConsoleUrl(project, 'firestore'); electronService.openExternal(url); }, onRevealCollectionInConsole: (item: Project | GoogleAccount, collection: string) => { const project = ensureProject(item); if (!project) return; - const url = `https://console.firebase.google.com/project/${project.projectId}/firestore/data/${collection}`; + const url = getConsoleUrl(project, 'firestore', collection); electronService.openExternal(url); }, diff --git a/src/features/auth/components/AuthTab.tsx b/src/features/auth/components/AuthTab.tsx index e74b889..19ea569 100644 --- a/src/features/auth/components/AuthTab.tsx +++ b/src/features/auth/components/AuthTab.tsx @@ -71,6 +71,7 @@ interface AuthUser { } import { Project } from '../../projects/store/projectsSlice'; +import { getConsoleUrl } from '../../projects/utils/projectConsoleUrl'; interface AuthTabProps { project: Project; @@ -120,6 +121,7 @@ function AuthTab({ project, addLog, showMessage }: AuthTabProps) { const [editEmailVerified, setEditEmailVerified] = useState(false); const isGoogle = project?.authMethod === 'google'; + const isEmulator = project?.authMethod === 'emulator'; const loadingRef = useRef(false); const loadUsers = useCallback(async () => { @@ -130,14 +132,32 @@ function AuthTab({ project, addLog, showMessage }: AuthTabProps) { setLoading(true); setAuthError(null); try { - const result = isGoogle - ? await electron.googleListAuthUsers({ projectId: project.projectId, maxResults: 1000 }) - : (await electron.disconnectFirebase(), - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId(project), - }), - await electron.listAuthUsers({ limit: 1000 })); + let result; + if (isGoogle) { + result = await electron.googleListAuthUsers({ projectId: project.projectId, maxResults: 1000 }); + } else if (isEmulator) { + const authHost = project.emulatorServices?.auth + ? `${project.emulatorServices.auth.host}:${project.emulatorServices.auth.port}` + : undefined; + const storageHost = project.emulatorServices?.storage + ? `${project.emulatorServices.storage.host}:${project.emulatorServices.storage.port}` + : undefined; + await electron.disconnectFirebase(); + await electron.connectFirebase({ + projectId: project.projectId, + emulatorHost: project.emulatorHost, + authEmulatorHost: authHost, + storageEmulatorHost: storageHost, + }); + result = await electron.listAuthUsers({ limit: 1000 }); + } else { + await electron.disconnectFirebase(); + await electron.connectFirebase({ + serviceAccountPath: project.serviceAccountPath!, + databaseId: getServiceAccountConnectDatabaseId(project), + }); + result = await electron.listAuthUsers({ limit: 1000 }); + } if (result.success) { setUsers(result.users || []); @@ -163,14 +183,14 @@ function AuthTab({ project, addLog, showMessage }: AuthTabProps) { loadingRef.current = false; setLoading(false); } - }, [project, isGoogle, addLog, showMessage, electron]); + }, [project, isGoogle, isEmulator, addLog, showMessage, electron]); useEffect(() => { if (project) loadUsers(); }, [project, loadUsers]); const openFirebaseConsole = () => { - const url = `https://console.firebase.google.com/project/${project.projectId}/authentication/users`; + const url = getConsoleUrl(project, 'authentication'); electronService.openExternal(url); }; diff --git a/src/features/collections/store/collectionSlice.ts b/src/features/collections/store/collectionSlice.ts index f4e692a..cb77914 100644 --- a/src/features/collections/store/collectionSlice.ts +++ b/src/features/collections/store/collectionSlice.ts @@ -57,6 +57,33 @@ const createAppAsyncThunk = createAsyncThunk.withTypes<{ extra: ThunkExtra; }>(); +/** + * Reconnect to Firebase appropriate for the project type. + * Service account projects use credentials; emulator projects use host override. + */ +async function connectForProject(electron: ElectronAPI, project: Project, firestoreDatabaseId?: string): Promise { + await electron.disconnectFirebase(); + if (project.authMethod === 'emulator') { + const authHost = project.emulatorServices?.auth + ? `${project.emulatorServices.auth.host}:${project.emulatorServices.auth.port}` + : undefined; + const storageHost = project.emulatorServices?.storage + ? `${project.emulatorServices.storage.host}:${project.emulatorServices.storage.port}` + : undefined; + await electron.connectFirebase({ + projectId: project.projectId, + emulatorHost: project.emulatorHost, + authEmulatorHost: authHost, + storageEmulatorHost: storageHost, + }); + } else { + await electron.connectFirebase({ + serviceAccountPath: project.serviceAccountPath!, + databaseId: getServiceAccountConnectDatabaseId(project, firestoreDatabaseId), + }); + } +} + // Thunks interface ImportResult { @@ -86,11 +113,7 @@ export const importCollection = createAppAsyncThunk< } return { count }; } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId(project, firestoreDatabaseId), - }); + await connectForProject(electron, project, firestoreDatabaseId); const result = await electron.importDocuments(collection); if (!result.success && result.error !== 'Import cancelled') throw new Error(result.error); @@ -124,11 +147,7 @@ export const exportCollection = createAppAsyncThunk< // Component handles SA export (since it's server side, but initiated here). return rejectWithValue('Google export handled by component'); } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId(project, firestoreDatabaseId), - }); + await connectForProject(electron, project, firestoreDatabaseId); const result = await electron.exportCollection(collection); if (!result.success && result.error !== 'Export cancelled') { @@ -184,12 +203,8 @@ export const fetchDocuments = createAppAsyncThunk< parseFirestoreFields, ) as unknown as Document[]; } else { - // Service Account JS Query - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId(project, firestoreDatabaseId), - }); + // Service Account / Emulator JS Query + await connectForProject(electron, project, firestoreDatabaseId); const result = await electron.executeJsQuery({ collectionPath: collection, jsQuery }); if (!result.success) throw new Error(result.error); @@ -242,11 +257,7 @@ export const fetchDocuments = createAppAsyncThunk< // Google documents might need parsing if raw? checks suggest they are usually parsed by main process or clean. // googleGetDocuments usually returns formatted docs. } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId(project, firestoreDatabaseId), - }); + await connectForProject(electron, project, firestoreDatabaseId); const res = await electron.getDocuments({ collectionPath: collection, @@ -299,14 +310,7 @@ export const createCollection = createAppAsyncThunk< databaseId: getGoogleApiDatabaseId(project, firestoreDatabaseId), }); } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); result = await electron.createDocument({ collectionPath: trimmedName, documentId: finalDocId, @@ -364,14 +368,7 @@ export const addDocument = createAppAsyncThunk< databaseId: getGoogleApiDatabaseId(project, firestoreDatabaseId), }); } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); result = await electron.createDocument({ collectionPath: collection, documentId: finalDocId, @@ -423,14 +420,7 @@ export const updateDocument = createAppAsyncThunk< databaseId: getGoogleApiDatabaseId(project, firestoreDatabaseId), }); } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); result = await electron.setDocument({ documentPath: `${collection}/${docId}`, data: docData, @@ -464,14 +454,7 @@ export const deleteDocument = createAppAsyncThunk< databaseId: getGoogleApiDatabaseId(project, firestoreDatabaseId), }); } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); result = await electron.deleteDocument(`${collection}/${docId}`); } @@ -507,14 +490,7 @@ export const renameCollection = createAppAsyncThunk< }); documents = res.success ? ((res.documents || []) as Document[]) : []; } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); const res = await electron.getDocuments({ collectionPath: currentPath, limit: 10000, @@ -630,14 +606,7 @@ export const estimateDocCount = createAppAsyncThunk< } } } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); const res = await electron.query({ collectionPath: collection, limit: 100000, @@ -696,14 +665,7 @@ export const exportSingleCollection = createAppAsyncThunk< downloadJson(res.documents, `${collection.replace(/\//g, '_')}_export.json`); return { count: res.count }; } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); const res = await electron.exportCollection(collection); if (!res.success) throw new Error(res.error || 'Export failed'); return res; @@ -738,14 +700,7 @@ export const exportAllCollections = createAppAsyncThunk< downloadJson(res.data, `${project.projectId}_firestore_export.json`); return { collectionsCount: res.collectionsCount }; } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); const res = await electron.exportCollections(); if (!res.success) throw new Error(res.error || 'Export failed'); return res; @@ -772,14 +727,7 @@ export const deleteCollection = createAppAsyncThunk< }); documents = res.success ? ((res.documents || []) as Document[]) : []; } else { - await electron.disconnectFirebase(); - await electron.connectFirebase({ - serviceAccountPath: project.serviceAccountPath!, - databaseId: getServiceAccountConnectDatabaseId( - project, - firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id, - ), - }); + await connectForProject(electron, project, firestoreDatabaseId ?? getActiveFirestoreDatabase(project)?.id); const res = await electron.getDocuments({ collectionPath: collection, limit: 10000, diff --git a/src/features/console/components/ConsolePanel.tsx b/src/features/console/components/ConsolePanel.tsx index c5ca1d3..8291a6d 100644 --- a/src/features/console/components/ConsolePanel.tsx +++ b/src/features/console/components/ConsolePanel.tsx @@ -546,7 +546,7 @@ Examples: {allProjects.map((p) => ( setSelectedProject(p)} color={selectedProject?.id === p.id ? 'primary' : 'default'} diff --git a/src/features/projects/components/ConnectionDialog.tsx b/src/features/projects/components/ConnectionDialog.tsx index c6037a4..2d10432 100644 --- a/src/features/projects/components/ConnectionDialog.tsx +++ b/src/features/projects/components/ConnectionDialog.tsx @@ -20,8 +20,15 @@ import { Close as CloseIcon, Key as KeyIcon, Google as GoogleIcon, + Dns as DnsIcon, + Refresh as RefreshIcon, } from '@mui/icons-material'; import { electronService } from '../../../shared/services/electronService'; +import { useDispatch } from 'react-redux'; +import { AppDispatch } from '../../../app/store'; +import { scanEmulators, connectEmulatorProject } from '../store/projectsSlice'; +import { addLog } from '../../../app/store/slices/logsSlice'; +import { getErrorMessage } from '../../../shared/utils/commonUtils'; interface ConnectionDialogProps { open: boolean; @@ -34,10 +41,52 @@ interface ConnectionDialogProps { function ConnectionDialog({ open, onClose, onConnect, onGoogleSignIn, loading }: ConnectionDialogProps) { const theme = useTheme(); - // isDark removed, use theme.palette directly + const dispatch = useDispatch(); + const [tabIndex, setTabIndex] = useState(0); const [serviceAccountPath, setServiceAccountPath] = useState(''); + const [emulators, setEmulators] = useState< + Array<{ projectId: string; host: string; port: number; services?: Record }> + >([]); + const [emulatorsLoading, setEmulatorsLoading] = useState(false); + const [connectingEmulatorId, setConnectingEmulatorId] = useState(null); + + const fetchEmulators = async () => { + setEmulatorsLoading(true); + try { + const result = await dispatch(scanEmulators()).unwrap(); + setEmulators(result.emulators || []); + } catch (err) { + dispatch(addLog({ type: 'error', message: 'Failed to scan for emulators: ' + getErrorMessage(err) })); + } finally { + setEmulatorsLoading(false); + } + }; + + const handleConnectEmulator = async (emulator: { + projectId: string; + host: string; + port: number; + services?: Record; + }) => { + const id = `${emulator.projectId}-${emulator.port}`; + setConnectingEmulatorId(id); + try { + const result = await dispatch(connectEmulatorProject(emulator)).unwrap(); + if (result.mode === 'create') { + dispatch(addLog({ type: 'success', message: `Connected to emulator for project ${emulator.projectId}` })); + } else { + dispatch(addLog({ type: 'success', message: `Emulator ${emulator.projectId} already connected` })); + } + onClose(); + } catch (err) { + dispatch(addLog({ type: 'error', message: 'Failed to connect emulator: ' + getErrorMessage(err) })); + } finally { + setConnectingEmulatorId(null); + } + }; + const handleBrowse = async () => { const path = await electronService.api.openFileDialog(); if (path) { @@ -58,9 +107,10 @@ function ConnectionDialog({ open, onClose, onConnect, onGoogleSignIn, loading }: }; const handleClose = () => { - if (!loading) { + if (!loading && !connectingEmulatorId) { setServiceAccountPath(''); setTabIndex(0); + setEmulators([]); onClose(); } }; @@ -78,6 +128,7 @@ function ConnectionDialog({ open, onClose, onConnect, onGoogleSignIn, loading }: setTabIndex(v)}> } iconPosition="start" label="Google Sign-In" /> } iconPosition="start" label="Service Account" /> + } iconPosition="start" label="Local Emulator" /> @@ -141,7 +192,7 @@ function ConnectionDialog({ open, onClose, onConnect, onGoogleSignIn, loading }: - ) : ( + ) : tabIndex === 1 ? ( /* Service Account Tab */ @@ -198,6 +249,79 @@ function ConnectionDialog({ open, onClose, onConnect, onGoogleSignIn, loading }: + ) : ( + /* Local Emulator Tab */ + + + Connect to a locally running Firebase Emulator Suite instance. + + + + + + + {emulators.length > 0 && ( + + + Discovered Emulators + + {emulators.map((emulator) => { + const id = `${emulator.projectId}-${emulator.port}`; + const isConnecting = connectingEmulatorId === id; + return ( + + + + + + {emulator.projectId} + + + Host: {emulator.host}:{emulator.port} + + + + + + ); + })} + + )} + + {emulatorsLoading === false && emulators.length === 0 && ( + + No running Firebase emulators detected. + + )} + )} diff --git a/src/features/projects/components/ProjectSidebar.tsx b/src/features/projects/components/ProjectSidebar.tsx index 9df5435..e323da9 100644 --- a/src/features/projects/components/ProjectSidebar.tsx +++ b/src/features/projects/components/ProjectSidebar.tsx @@ -148,9 +148,7 @@ function ProjectSidebar({ const handleContextMenu = ( e: React.MouseEvent, target: - | MenuTarget - | Project - | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string }, + MenuTarget | Project | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string }, type: Exclude, ) => { e.preventDefault(); @@ -191,6 +189,7 @@ function ProjectSidebar({ const serviceAccountProjects = projects.filter( (p) => !isGoogleAccount(p) && p.authMethod === 'serviceAccount', ) as Project[]; + const emulatorProjects = projects.filter((p) => !isGoogleAccount(p) && p.authMethod === 'emulator') as Project[]; return ( - Reveal in Firebase Console + {getConsoleLabel(menuTarget)} handleAction(onCopyProjectId, menuTarget)}> @@ -294,7 +295,7 @@ function SidebarMenu({ - Reveal in Firebase Console + {getConsoleLabel(menuTarget.project)} ) : menuTarget ? ( @@ -323,7 +324,7 @@ function SidebarMenu({ - Reveal in Firebase Console + {getConsoleLabel(menuTarget)} handleAction(onCopyProjectId, menuTarget)}> diff --git a/src/features/projects/components/sidebar/SidebarProjectsList.tsx b/src/features/projects/components/sidebar/SidebarProjectsList.tsx index b434613..e4edb31 100644 --- a/src/features/projects/components/sidebar/SidebarProjectsList.tsx +++ b/src/features/projects/components/sidebar/SidebarProjectsList.tsx @@ -14,6 +14,7 @@ import { LinkOff as LinkOffIcon, Add as AddIcon, Dns as DatabaseIcon, + Computer as ComputerIcon, } from '@mui/icons-material'; import { useDispatch } from 'react-redux'; import { setSidebarItemExpanded, Tab } from '../../../../app/store/slices/uiSlice'; @@ -24,6 +25,7 @@ import { getFirestoreDatabaseDisplay } from '../../utils/firestoreDatabaseUtils' interface SidebarProjectsListProps { googleAccounts: GoogleAccount[]; serviceAccountProjects: Project[]; + emulatorProjects: Project[]; searchQuery: string; setSearchQuery: (query: string) => void; expandedItems: Record; @@ -52,9 +54,7 @@ interface SidebarProjectsListProps { handleContextMenu: ( e: React.MouseEvent, target: - | Project - | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string } - | MenuTarget, + Project | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string } | MenuTarget, type: Exclude, ) => void; isMenuOpen: boolean; @@ -64,6 +64,7 @@ interface SidebarProjectsListProps { function SidebarProjectsList({ googleAccounts, serviceAccountProjects, + emulatorProjects, searchQuery, setSearchQuery, expandedItems, @@ -96,7 +97,7 @@ function SidebarProjectsList({ return ( - {googleAccounts.length === 0 && serviceAccountProjects.length === 0 ? ( + {googleAccounts.length === 0 && serviceAccountProjects.length === 0 && emulatorProjects.length === 0 ? ( No projects connected @@ -1168,6 +1169,471 @@ function SidebarProjectsList({ ); })} + { + e.stopPropagation(); + onAddFirestoreDatabase(project); + }} + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.5, + cursor: 'pointer', + color: 'primary.main', + '&:hover': { bgcolor: 'action.hover' }, + }} + > + + Add database + + + + + ); + })()} + + + + ); + })} + + {/* Emulator Projects */} + {emulatorProjects + .filter((project) => { + if (!searchQuery) return true; + const query = searchQuery.toLowerCase(); + return ( + project.projectId.toLowerCase().includes(query) || + project.firestoreDatabases?.some( + (fd) => + getFirestoreDatabaseDisplay(fd).toLowerCase().includes(query) || + fd.databaseId.toLowerCase().includes(query) || + fd.collections?.some((c) => collectionMatchesQuery(c, query)), + ) || + project.collections?.some((c) => collectionMatchesQuery(c, query)) + ); + }) + .map((project) => { + const isExpanded = expandedItems[project.id] !== undefined ? expandedItems[project.id] : true; + + return ( + + toggleExpanded(project.id, isExpanded)} + onContextMenu={(e) => handleContextMenu(e, project, 'project')} + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.5, + cursor: 'pointer', + bgcolor: selectedProject?.id === project.id ? 'action.selected' : 'transparent', + '&:hover': { bgcolor: 'action.hover' }, + }} + > + + {isExpanded ? ( + + ) : ( + + )} + + + + {project.projectId} + + handleMenu(e, project, 'project')} + sx={{ + p: 0.25, + opacity: 0.5, + '&:hover': { + opacity: 1, + backgroundColor: 'action.hover', + }, + color: 'text.secondary', + borderRadius: 1, + }} + > + + + + + + + {(() => { + const isAuthActive = activeTab?.type === 'auth' && activeTab?.projectId === project.id; + return ( + onOpenAuth?.(project)} + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.5, + cursor: 'pointer', + bgcolor: isAuthActive ? 'action.selected' : 'transparent', + borderLeft: isAuthActive ? '2px solid' : '2px solid transparent', + borderColor: isAuthActive ? 'secondary.main' : 'transparent', + '&:hover': { + bgcolor: isAuthActive ? 'action.selected' : 'action.hover', + }, + }} + > + + + Authentication + + + ); + })()} + + {(() => { + const isStorageActive = activeTab?.type === 'storage' && activeTab?.projectId === project.id; + return ( + onOpenStorage?.(project)} + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.5, + mt: 0.25, + cursor: 'pointer', + borderTop: 1, + borderTopColor: 'divider', + bgcolor: isStorageActive ? 'action.selected' : 'transparent', + borderLeft: isStorageActive ? '2px solid' : '2px solid transparent', + borderLeftColor: isStorageActive ? 'primary.main' : 'transparent', + '&:hover': { + bgcolor: isStorageActive ? 'action.selected' : 'action.hover', + }, + }} + > + + + Storage + + + ); + })()} + + {(() => { + const firestoreSectionId = `${project.id}:firestore`; + const isFirestoreSectionExpanded = + expandedItems[firestoreSectionId] !== undefined ? expandedItems[firestoreSectionId] : true; + + return ( + + + { + e.stopPropagation(); + toggleExpanded(firestoreSectionId, isFirestoreSectionExpanded); + }} + > + {isFirestoreSectionExpanded ? ( + + ) : ( + + )} + + + + Firestore + + + { + e.stopPropagation(); + onAddFirestoreDatabase(project); + }} + sx={{ p: 0.25, color: 'primary.main' }} + > + + + + { + e.stopPropagation(); + handleContextMenu(e, { menuType: 'firestoreRoot', project }, 'firestoreRoot'); + }} + sx={{ p: 0.25, color: 'text.secondary' }} + > + + + + + + + {(project.firestoreDatabases || []).map((fd) => { + const fdExpandedKey = `${project.id}:fd:${fd.id}`; + const isFdExpanded = + expandedItems[fdExpandedKey] !== undefined ? expandedItems[fdExpandedKey] : true; + const dbLabel = getFirestoreDatabaseDisplay(fd); + const isDbSelected = + selectedProject?.id === project.id && project.activeFirestoreDatabaseId === fd.id; + + return ( + + onSetActiveFirestoreDatabase(project.id, fd.id)} + > + { + e.stopPropagation(); + toggleExpanded(fdExpandedKey, isFdExpanded); + }} + > + {isFdExpanded ? ( + + ) : ( + + )} + + + + + {dbLabel} + + + {fd.databaseId} + + + { + e.stopPropagation(); + handleContextMenu( + e, + { menuType: 'firestoreDatabase', project, firestoreDatabase: fd }, + 'firestoreDatabase', + ); + }} + sx={{ p: 0.2, color: 'text.secondary' }} + > + + + + + + + {(fd.collections || []) + .filter( + (collection) => + !searchQuery || collectionMatchesQuery(collection, searchQuery), + ) + .map((collection) => { + const collectionPath = + getCollectionPath(collection) || getCollectionLabel(collection); + const collectionLabel = getCollectionLabel(collection); + const collectionKey = `${project.id}:${fd.id}:${collectionPath}`; + const isActive = + activeTab?.type === 'collection' && + activeTab?.projectId === project.id && + activeTab?.collectionPath === collectionPath && + activeTab?.firestoreDatabaseId === fd.id; + const isMenuTarget = + isMenuOpen && + menuTarget?.menuType === 'collection' && + menuTarget?.project?.id === project.id && + menuTarget?.collection === collectionPath && + (menuTarget as { firestoreDatabaseId?: string }).firestoreDatabaseId === + fd.id; + return ( + { + onSetActiveFirestoreDatabase(project.id, fd.id); + onOpenCollection( + project, + collectionPath, + fd.id, + getFirestoreDatabaseDisplay(fd), + ); + dispatch( + setSidebarItemExpanded({ + id: project.id, + expanded: true, + }), + ); + dispatch( + setSidebarItemExpanded({ + id: `${project.id}:firestore`, + expanded: true, + }), + ); + dispatch( + setSidebarItemExpanded({ + id: `${project.id}:fd:${fd.id}`, + expanded: true, + }), + ); + setSearchQuery(''); + }} + onContextMenu={(e) => + handleContextMenu( + e, + { + project, + collection: collectionPath, + firestoreDatabaseId: fd.id, + }, + 'collection', + ) + } + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.35, + cursor: 'pointer', + bgcolor: isMenuTarget + ? 'action.hover' + : isActive + ? 'action.selected' + : 'transparent', + borderLeft: isActive ? '2px solid' : '2px solid transparent', + borderColor: isActive ? 'primary.main' : 'transparent', + '&:hover': { + bgcolor: isActive ? 'action.selected' : 'action.hover', + }, + }} + > + + + {collectionLabel} + + + ); + })} + {(!fd.collections || fd.collections.length === 0) && ( + + No collections + + )} + + { + e.stopPropagation(); + onSetActiveFirestoreDatabase(project.id, fd.id); + onAddCollection?.(project); + }} + sx={{ + display: 'flex', + alignItems: 'center', + px: 1, + py: 0.35, + cursor: 'pointer', + color: 'primary.main', + '&:hover': { bgcolor: 'action.hover' }, + }} + > + + Add collection + + + + + ); + })} + { e.stopPropagation(); diff --git a/src/features/projects/utils/firestoreDatabaseUtils.ts b/src/features/projects/utils/firestoreDatabaseUtils.ts index 04238ab..223de43 100644 --- a/src/features/projects/utils/firestoreDatabaseUtils.ts +++ b/src/features/projects/utils/firestoreDatabaseUtils.ts @@ -4,7 +4,7 @@ import type { FirestoreDatabase } from './firestoreDatabaseTypes'; export type ServiceAccountProjectLike = { id: string; projectId: string; - authMethod: 'serviceAccount' | 'google'; + authMethod: 'serviceAccount' | 'google' | 'emulator'; databaseId?: string; collections?: { id: string; path: string }[]; firestoreDatabases?: FirestoreDatabase[]; diff --git a/src/features/projects/utils/projectConsoleUrl.ts b/src/features/projects/utils/projectConsoleUrl.ts new file mode 100644 index 0000000..461d40a --- /dev/null +++ b/src/features/projects/utils/projectConsoleUrl.ts @@ -0,0 +1,36 @@ +import { Project, GoogleAccount } from '../store/projectsSlice'; + +export type ConsoleService = 'firestore' | 'storage' | 'authentication'; + +export function getConsoleUrl( + project: Pick, + service: ConsoleService, + ...args: string[] +): string { + if (project.authMethod === 'emulator') { + const ui = project.emulatorServices?.ui; + const host = ui?.host || project.emulatorHost?.split(':')[0] || 'localhost'; + const port = ui?.port ?? 4000; + + return `http://${host}:${port}/${service}`; + } + + switch (service) { + case 'firestore': { + const collection = args[0]; + + return `https://console.firebase.google.com/project/${project.projectId}/firestore${collection ? `/data/${collection}` : ''}`; + } + case 'storage': + return `https://console.firebase.google.com/project/${project.projectId}/storage`; + case 'authentication': + return `https://console.firebase.google.com/project/${project.projectId}/authentication/users`; + } +} + +export function getConsoleLabel(project: Pick | GoogleAccount): string { + if ('authMethod' in project) { + return project.authMethod === 'emulator' ? 'Open in Emulator UI' : 'Reveal in Firebase Console'; + } + return 'Reveal in Firebase Console'; +} diff --git a/src/features/storage/components/StorageTab.tsx b/src/features/storage/components/StorageTab.tsx index b426088..a3a9f24 100644 --- a/src/features/storage/components/StorageTab.tsx +++ b/src/features/storage/components/StorageTab.tsx @@ -55,6 +55,7 @@ import { formatFileSize, copyToClipboard, confirmAction } from '../../../shared/ import { electronService } from '../../../shared/services/electronService'; import { getServiceAccountConnectDatabaseId } from '../../projects/utils/firestoreDatabaseUtils'; import type { Project as FirebaseProject } from '../../projects/store/projectsSlice'; +import { getConsoleUrl } from '../../projects/utils/projectConsoleUrl'; // Types interface StorageItem { @@ -127,6 +128,7 @@ function StorageTab({ project, addLog, showMessage }: StorageTabProps) { const [bucketError, setBucketError] = useState(null); const isGoogle = project?.authMethod === 'google'; + const isEmulator = project?.authMethod === 'emulator'; const loadingRef = useRef(false); const loadFiles = useCallback(async () => { @@ -140,6 +142,21 @@ function StorageTab({ project, addLog, showMessage }: StorageTabProps) { let result: { success: boolean; items?: StorageItem[]; error?: string }; if (isGoogle) { result = await electron.googleStorageListFiles({ projectId: project.projectId, path: currentPath }); + } else if (isEmulator) { + const storageHost = project.emulatorServices?.storage + ? `${project.emulatorServices.storage.host}:${project.emulatorServices.storage.port}` + : undefined; + const authHost = project.emulatorServices?.auth + ? `${project.emulatorServices.auth.host}:${project.emulatorServices.auth.port}` + : undefined; + await electron.disconnectFirebase(); + await electron.connectFirebase({ + projectId: project.projectId, + emulatorHost: project.emulatorHost, + authEmulatorHost: authHost, + storageEmulatorHost: storageHost, + }); + result = await electron.storageListFiles({ path: currentPath }); } else { await electron.disconnectFirebase(); await electron.connectFirebase({ @@ -169,7 +186,7 @@ function StorageTab({ project, addLog, showMessage }: StorageTabProps) { loadingRef.current = false; setLoading(false); } - }, [project, currentPath, isGoogle, addLog, showMessage, electron]); + }, [project, currentPath, isGoogle, isEmulator, addLog, showMessage, electron]); useEffect(() => { if (project) loadFiles(); @@ -177,7 +194,7 @@ function StorageTab({ project, addLog, showMessage }: StorageTabProps) { const openFirebaseConsole = () => { if (!project) return; - const url = `https://console.firebase.google.com/project/${project.projectId}/storage`; + const url = getConsoleUrl(project, 'storage'); electronService.openExternal(url); }; From dda80b31b1a15cb4a9af3d822272314d4991c931 Mon Sep 17 00:00:00 2001 From: re1sub Date: Wed, 1 Jul 2026 10:00:38 +0200 Subject: [PATCH 3/5] fix: prettier version mismatch, formatting issues --- pnpm-lock.yaml | 25 ++++++++----------- .../projects/components/ProjectSidebar.tsx | 4 ++- .../sidebar/SidebarProjectsList.tsx | 4 ++- src/features/projects/store/projectsSlice.ts | 3 ++- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3741bc..1a36b9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,8 @@ overrides: axios: '>=1.13.5' tar: '>=7.5.7' +pnpmfileChecksum: sha256-7RwnPgk/wv+NmF+/lH+VyTijIgXemSgK06/w/LbAtu0= + importers: .: dependencies: @@ -2510,10 +2512,6 @@ packages: { integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== } engines: { node: '>=0.8.0' } - fd-slicer@1.1.0: - resolution: - { integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== } - fdir@6.5.0: resolution: { integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== } @@ -4422,16 +4420,19 @@ packages: uuid@10.0.0: resolution: { integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== } + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.3.2: resolution: { integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== } + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: { integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== } + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true verror@1.10.1: @@ -4668,9 +4669,10 @@ packages: { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== } engines: { node: '>=12' } - yauzl@2.10.0: + yauzl@3.4.0: resolution: - { integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== } + { integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw== } + engines: { node: '>=12' } yocto-queue@0.1.0: resolution: @@ -6950,7 +6952,7 @@ snapshots: dependencies: debug: 4.4.3 get-stream: 5.2.0 - yauzl: 2.10.0 + yauzl: 3.4.0 optionalDependencies: '@types/yauzl': 2.10.3 transitivePeerDependencies: @@ -6976,10 +6978,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -8928,10 +8926,9 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: + yauzl@3.4.0: dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 + pend: 1.2.0 yocto-queue@0.1.0: {} diff --git a/src/features/projects/components/ProjectSidebar.tsx b/src/features/projects/components/ProjectSidebar.tsx index e323da9..004f8a9 100644 --- a/src/features/projects/components/ProjectSidebar.tsx +++ b/src/features/projects/components/ProjectSidebar.tsx @@ -148,7 +148,9 @@ function ProjectSidebar({ const handleContextMenu = ( e: React.MouseEvent, target: - MenuTarget | Project | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string }, + | MenuTarget + | Project + | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string }, type: Exclude, ) => { e.preventDefault(); diff --git a/src/features/projects/components/sidebar/SidebarProjectsList.tsx b/src/features/projects/components/sidebar/SidebarProjectsList.tsx index e4edb31..8d67afc 100644 --- a/src/features/projects/components/sidebar/SidebarProjectsList.tsx +++ b/src/features/projects/components/sidebar/SidebarProjectsList.tsx @@ -54,7 +54,9 @@ interface SidebarProjectsListProps { handleContextMenu: ( e: React.MouseEvent, target: - Project | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string } | MenuTarget, + | Project + | { project: Project | GoogleAccount; collection: string; firestoreDatabaseId?: string } + | MenuTarget, type: Exclude, ) => void; isMenuOpen: boolean; diff --git a/src/features/projects/store/projectsSlice.ts b/src/features/projects/store/projectsSlice.ts index c753d91..d219f05 100644 --- a/src/features/projects/store/projectsSlice.ts +++ b/src/features/projects/store/projectsSlice.ts @@ -526,7 +526,8 @@ export const refreshGoogleAccountProjects = createAppAsyncThunk( try { const state = getState(); const existingAccount = state.projects.items.find((item) => isGoogleAccount(item) && item.id === accountId) as - GoogleAccount | undefined; + | GoogleAccount + | undefined; const effectiveRefreshToken = refreshToken ?? existingAccount?.refreshToken; let accessToken = existingAccount?.accessToken; From 2e271bd9aabb6163ca9bee9c74c68542904a8f00 Mon Sep 17 00:00:00 2001 From: re1sub Date: Wed, 1 Jul 2026 10:19:08 +0200 Subject: [PATCH 4/5] fix(ci): revert pnpm-lock --- pnpm-lock.yaml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a36b9a..e3741bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,8 +8,6 @@ overrides: axios: '>=1.13.5' tar: '>=7.5.7' -pnpmfileChecksum: sha256-7RwnPgk/wv+NmF+/lH+VyTijIgXemSgK06/w/LbAtu0= - importers: .: dependencies: @@ -2512,6 +2510,10 @@ packages: { integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== } engines: { node: '>=0.8.0' } + fd-slicer@1.1.0: + resolution: + { integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== } + fdir@6.5.0: resolution: { integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== } @@ -4420,19 +4422,16 @@ packages: uuid@10.0.0: resolution: { integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== } - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.3.2: resolution: { integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== } - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: { integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== } - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true verror@1.10.1: @@ -4669,10 +4668,9 @@ packages: { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== } engines: { node: '>=12' } - yauzl@3.4.0: + yauzl@2.10.0: resolution: - { integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw== } - engines: { node: '>=12' } + { integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== } yocto-queue@0.1.0: resolution: @@ -6952,7 +6950,7 @@ snapshots: dependencies: debug: 4.4.3 get-stream: 5.2.0 - yauzl: 3.4.0 + yauzl: 2.10.0 optionalDependencies: '@types/yauzl': 2.10.3 transitivePeerDependencies: @@ -6978,6 +6976,10 @@ snapshots: dependencies: websocket-driver: 0.7.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -8926,9 +8928,10 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@3.4.0: + yauzl@2.10.0: dependencies: - pend: 1.2.0 + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 yocto-queue@0.1.0: {} From 5181a6ea7440ec3ccfc0b21c552041031666b4bb Mon Sep 17 00:00:00 2001 From: re1sub Date: Wed, 1 Jul 2026 11:14:31 +0200 Subject: [PATCH 5/5] docs: add local emulator support to README and update screenshot --- README.md | 8 ++++++++ screenshots/1.png | Bin 99115 -> 141706 bytes 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index a70c8d2..c54cc9a 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Firestudio is a **free and open-source desktop application** for managing your c - 👥 **Authentication**: View, create, and manage Firebase Auth users - 🔍 **Querying**: Use simple filters or JavaScript for advanced queries - 📥 **Import/Export**: Bulk operations with JSON files +- 🔧 **Local Emulator Support**: Connect to Firebase Local Emulator Suite - 🎨 **Themes**: Dark/Light mode with customizable settings Perfect for **Firebase developers**, **backend engineers**, **database administrators**, and anyone working with **Google Firebase**. @@ -52,6 +53,7 @@ Perfect for **Firebase developers**, **backend engineers**, **database administr - **Service Account**: Connect using Firebase service account JSON files for full admin access - **Google Sign-In**: OAuth-based authentication using your Google account +- **Local Emulator**: Connect directly to Firebase Local Emulator Suite for local development ### 📊 Firestore Database Management @@ -182,6 +184,12 @@ pnpm run dev See detailed OAuth setup guide in the [Google Sign-In Setup](#google-sign-in-setup) section. +#### Method 3: Local Emulator + +1. Start your Firebase Emulators (`firebase emulators:start`) +2. In Firestudio, click **"Add Project"** → **"Local Emulator"** tab +3. Select a detected emulator from the list and click **"Connect"** + --- ## 🛠️ Tech Stack diff --git a/screenshots/1.png b/screenshots/1.png index 25af94cdd6d4fcb76932a9f42def4cb3bdb345df..cb6045b26efc635d07f8d2cc85fe1437e5bab716 100644 GIT binary patch literal 141706 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

+C$hlhUp%@Y25?H`>@WVBq* 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 XUG1K2XuLl^8vBzDKcY`u`T73<7YWhs