Skip to content

Commit 6e55b32

Browse files
committed
feat: refresh GitNativeFederation state when a universe is created via a new event.
1 parent 2699c59 commit 6e55b32

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/GitNativeFederation.jsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,18 @@ const GitNativeFederation = ({ variant = 'panel', onRequestClose }) => {
405405

406406
window.addEventListener('redstring:auth-expired', handleAuthExpired);
407407

408+
// Handle universe creation events from onboarding flow
409+
const handleUniverseCreated = async () => {
410+
try {
411+
gfLog('[GF-DEBUG] Universe created event received, refreshing state...');
412+
await refreshState();
413+
} catch (err) {
414+
gfWarn('[GF-DEBUG] Universe created handler refresh failed:', err);
415+
}
416+
};
417+
418+
window.addEventListener('redstring:universe-created', handleUniverseCreated);
419+
408420
// Poll sync status every 5 seconds to keep UI updated without saturating the network
409421
const pollInterval = setInterval(async () => {
410422
try {
@@ -418,6 +430,7 @@ const GitNativeFederation = ({ variant = 'panel', onRequestClose }) => {
418430
return () => {
419431
window.removeEventListener('redstring:auth-connected', handleAuthConnected);
420432
window.removeEventListener('redstring:auth-expired', handleAuthExpired);
433+
window.removeEventListener('redstring:universe-created', handleUniverseCreated);
421434
clearInterval(pollInterval);
422435
};
423436
}, [refreshState, refreshAuth]);

src/NodeCanvas.jsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13430,13 +13430,20 @@ function NodeCanvas() {
1343013430
sourceOfTruth: 'local'
1343113431
});
1343213432

13433-
const universeSlug = result?.createdUniverse?.slug || safeName.toLowerCase().replace(/\s+/g, '-');
13433+
const universeSlug = result?.createdUniverse?.slug;
1343413434
console.log('[NodeCanvas] Universe created via gitFederationService:', result);
13435+
console.log('[NodeCanvas] Created universe slug:', universeSlug);
13436+
console.log('[NodeCanvas] Created universe object:', result?.createdUniverse);
13437+
13438+
if (!universeSlug) {
13439+
console.error('[NodeCanvas] No slug returned from createUniverse!');
13440+
}
1343513441

1343613442
// 4. Register the file handle with universeBackend so it can save to the file
1343713443
// Use the bridge's sendCommand to set the file handle
1343813444
try {
1343913445
const { default: universeBackend } = await import('./services/universeBackend.js');
13446+
console.log('[NodeCanvas] Calling setFileHandle with slug:', universeSlug);
1344013447
await universeBackend.setFileHandle(universeSlug, fileHandle, {
1344113448
displayPath: filename,
1344213449
fileName: filename,
@@ -13472,6 +13479,14 @@ function NodeCanvas() {
1347213479
}
1347313480
}, 100);
1347413481

13482+
// 9. Notify GitNativeFederation to refresh its state
13483+
if (typeof window !== 'undefined') {
13484+
window.dispatchEvent(new CustomEvent('redstring:universe-created', {
13485+
detail: { slug: universeSlug, name: safeName }
13486+
}));
13487+
console.log('[NodeCanvas] Dispatched universe-created event');
13488+
}
13489+
1347513490
console.log('[NodeCanvas] Workspace setup complete. Active universe:', safeName);
1347613491
}
1347713492
} catch (error) {

0 commit comments

Comments
 (0)