Browse Source

fix react bug

imwald
Silberengel 2 weeks ago
parent
commit
36fcb5acae
  1. 4
      package-lock.json
  2. 2
      package.json
  3. 2
      src/providers/FavoriteRelaysActivityProvider.tsx
  4. 17
      src/providers/FeedProvider.tsx

4
package-lock.json generated

@ -1,12 +1,12 @@
{ {
"name": "imwald", "name": "imwald",
"version": "23.1.1", "version": "23.1.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "imwald", "name": "imwald",
"version": "23.1.1", "version": "23.1.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@asciidoctor/core": "^3.0.4", "@asciidoctor/core": "^3.0.4",

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "imwald", "name": "imwald",
"version": "23.1.1", "version": "23.1.2",
"description": "Imwald — a user-friendly Nostr client focused on relay feed browsing, publications, and relay discovery", "description": "Imwald — a user-friendly Nostr client focused on relay feed browsing, publications, and relay discovery",
"private": true, "private": true,
"type": "module", "type": "module",

2
src/providers/FavoriteRelaysActivityProvider.tsx

@ -227,7 +227,7 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
* Fixes race where pulse data arrives before NostrProvider has hydrated follow list from cache. */ * Fixes race where pulse data arrives before NostrProvider has hydrated follow list from cache. */
useEffect(() => { useEffect(() => {
if (!viewerPubkey || followings.length > 0) { if (!viewerPubkey || followings.length > 0) {
setFallbackFollowings([]) setFallbackFollowings((prev) => (prev.length ? [] : prev))
return return
} }
let cancelled = false let cancelled = false

17
src/providers/FeedProvider.tsx

@ -226,7 +226,22 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
const baseRelays = getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays) const baseRelays = getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays)
const finalRelays = mergeRelayUrlLayers([baseRelays, extraFeedRelayUrls], blockedRelays) const finalRelays = mergeRelayUrlLayers([baseRelays, extraFeedRelayUrls], blockedRelays)
logger.debug('Updating relay URLs for all-favorites:', finalRelays) logger.debug('Updating relay URLs for all-favorites:', finalRelays)
setRelayUrls(finalRelays) // Same logical list can be merged into a new array each run; keep the previous reference so
// feed consumers (RelaysFeed → NoteList relay subscription) do not re-enter effects in a tight loop.
const nextKey = finalRelays
.map((u) => normalizeAnyRelayUrl(u) || u)
.filter(Boolean)
.sort()
.join('\n')
setRelayUrls((prev) => {
const prevKey = prev
.map((u) => normalizeAnyRelayUrl(u) || u)
.filter(Boolean)
.sort()
.join('\n')
if (prevKey === nextKey) return prev
return finalRelays
})
}, [feedInfo.feedType, favoriteRelays, blockedRelays, extraFeedRelayUrls]) }, [feedInfo.feedType, favoriteRelays, blockedRelays, extraFeedRelayUrls])
return ( return (

Loading…
Cancel
Save