this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix

alice 96eedc06 817e5b69

+35 -28
+23 -1
src/background/service-worker.ts
··· 124 124 } 125 125 126 126 // Initialize the cache when the service worker starts 127 - loadCache().catch(console.error); 127 + const cacheLoaded = loadCache().catch(console.error); 128 128 129 129 // Handle messages from the popup 130 130 chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { ··· 136 136 sendResponse({ success: false, error: error.message }); 137 137 }); 138 138 return true; // Indicates async response 139 + } 140 + // Provide handle for popup: return cached or resolve if missing 141 + if (request.type === 'GET_HANDLE' && request.did) { 142 + (async () => { 143 + await cacheLoaded; 144 + try { 145 + let entry = cache.get(request.did); 146 + if (entry) { 147 + entry.lastAccessed = Date.now(); 148 + saveCache().catch(console.error); 149 + sendResponse({ handle: entry.handle }); 150 + return; 151 + } 152 + const h = await resolveDidToHandle(request.did); 153 + if (h) await updateCache(request.did, h); 154 + sendResponse({ handle: h || null }); 155 + } catch (e) { 156 + console.error('GET_HANDLE error', e); 157 + sendResponse({ handle: null }); 158 + } 159 + })(); 160 + return true; 139 161 } 140 162 if (request.type === 'CLEAR_CACHE') { 141 163 // Clear the in-memory cache
+12 -27
src/popup/popup.ts
··· 39 39 40 40 41 41 if (info.did && !info.handle) { 42 - let handleToUse = null; 42 + let handleToUse: string | null = null; 43 43 let errorStatusWasSet = false; // Flag to track if an error message was shown 44 44 45 - const { didHandleCache = {} } = await chrome.storage.local.get('didHandleCache'); 46 - const cacheEntry = didHandleCache[info.did]; 47 - if (cacheEntry) { 48 - // Use the new object format from storage 49 - handleToUse = cacheEntry.handle; 50 - // Refresh lastAccessed in the SW cache 51 - await chrome.runtime.sendMessage({ type: 'UPDATE_CACHE', did: info.did, handle: handleToUse }); 52 - } else { 53 - // No cache entry: resolve DID via transform 54 - showStatus('Resolving...'); 55 - try { 56 - if (typeof window.WormholeTransform.resolveDidToHandle !== 'function') { 57 - showStatus('Error: resolve fn missing'); 58 - errorStatusWasSet = true; 59 - } else { 60 - const freshHandle = await window.WormholeTransform.resolveDidToHandle(info.did); 61 - if (freshHandle) { 62 - handleToUse = freshHandle; 63 - await chrome.runtime.sendMessage({ type: 'UPDATE_CACHE', did: info.did, handle: freshHandle }); 64 - } 65 - } 66 - } catch (err) { 67 - console.error('Error resolving DID to handle:', err); 68 - showStatus('Error resolving'); 69 - errorStatusWasSet = true; 70 - } 45 + // Ask SW for a handle (from cache or resolved) 46 + showStatus('Resolving...'); 47 + try { 48 + const response: { handle: string | null } = await new Promise((resolve) => 49 + chrome.runtime.sendMessage({ type: 'GET_HANDLE', did: info.did }, resolve) 50 + ); 51 + handleToUse = response.handle; 52 + } catch (err) { 53 + console.error('GET_HANDLE error', err); 54 + showStatus('Error resolving'); 55 + errorStatusWasSet = true; 71 56 } 72 57 73 58 // After attempting to get handle from cache or by fetching: