diff --git a/components/RelayManager.tsx b/components/RelayManager.tsx index 94d6930..d58c2e3 100644 --- a/components/RelayManager.tsx +++ b/components/RelayManager.tsx @@ -3,6 +3,7 @@ import { configStorage } from '@/lib/configStorage' import type { RelayConfig } from '@/lib/configStorageTypes' import { t } from '@/lib/i18n' import { userConfirm } from '@/lib/userConfirm' +import { relaySessionManager } from '@/lib/relaySessionManager' interface RelayManagerProps { onConfigChange?: () => void @@ -27,7 +28,30 @@ export function RelayManager({ onConfigChange }: RelayManagerProps): React.React setLoading(true) setError(null) const config = await configStorage.getConfig() - setRelays(config.relays.sort((a, b) => a.priority - b.priority)) + + // Get failed relays from session manager and disable them in config + const failedRelays = relaySessionManager.getFailedRelays() + if (failedRelays.length > 0) { + let hasChanges = false + for (const relayUrl of failedRelays) { + // Find the relay config by URL + const relayConfig = config.relays.find((r) => r.url === relayUrl) + if (relayConfig && relayConfig.enabled) { + // Disable the failed relay + await configStorage.updateRelay(relayConfig.id, { enabled: false }) + hasChanges = true + } + } + // Reload config if we made changes + if (hasChanges) { + const updatedConfig = await configStorage.getConfig() + setRelays(updatedConfig.relays.sort((a, b) => a.priority - b.priority)) + } else { + setRelays(config.relays.sort((a, b) => a.priority - b.priority)) + } + } else { + setRelays(config.relays.sort((a, b) => a.priority - b.priority)) + } } catch (e) { const errorMessage = e instanceof Error ? e.message : t('settings.relay.error.loadFailed') setError(errorMessage) @@ -381,7 +405,7 @@ export function RelayManager({ onConfigChange }: RelayManagerProps): React.React
- {t('settings.relay.list.priorityLabel', { priority: index + 1, id: relay.id })} + {t('settings.relay.list.priorityLabel', { priority: index + 1 })}
diff --git a/lib/platformSync.ts b/lib/platformSync.ts index e8ac80a..2693148 100644 --- a/lib/platformSync.ts +++ b/lib/platformSync.ts @@ -284,11 +284,9 @@ class PlatformSyncService { if (event.id === '527d83e0af20bf23c3e104974090ccc21536ece72c24eb784b3642890f63b763') { console.warn(`[PlatformSync] Target event cached successfully as author with hash:`, parsed.hash) } - } else { - if (event.id === '527d83e0af20bf23c3e104974090ccc21536ece72c24eb784b3642890f63b763') { + } else if (event.id === '527d83e0af20bf23c3e104974090ccc21536ece72c24eb784b3642890f63b763') { console.warn(`[PlatformSync] Target event NOT cached: parsed=${parsed !== null}, hasHash=${parsed?.hash !== undefined}`) } - } } else if (tags.type === 'series') { const parsed = await parseSeriesFromEvent(event) if (parsed && parsed.hash) { diff --git a/lib/reviewReward.ts b/lib/reviewReward.ts index 65213e4..fc0f08e 100644 --- a/lib/reviewReward.ts +++ b/lib/reviewReward.ts @@ -21,7 +21,7 @@ export class ReviewRewardService { const split = calculateReviewSplit() const invoice = await createReviewInvoice(split, request) - console.log('Review reward invoice created', { + console.warn('Review reward invoice created', { reviewId: request.reviewId, articleId: request.articleId, reviewerPubkey: request.reviewerPubkey, @@ -67,7 +67,7 @@ export class ReviewRewardService { await trackReviewReward(request, split, paymentHash) await updateReviewWithReward(request.reviewId, request.authorPrivateKey) - console.log('Review reward processed', { + console.warn('Review reward processed', { reviewId: request.reviewId, articleId: request.articleId, reviewerPubkey: request.reviewerPubkey, diff --git a/lib/reviewRewardTracking.ts b/lib/reviewRewardTracking.ts index 5e24e77..1b51002 100644 --- a/lib/reviewRewardTracking.ts +++ b/lib/reviewRewardTracking.ts @@ -7,7 +7,7 @@ export async function trackReviewReward( ): Promise { try { // In production, publish tracking event on Nostr similar to article payments - console.log('Review reward tracked', { + console.warn('Review reward tracked', { reviewId: request.reviewId, articleId: request.articleId, reviewerPubkey: request.reviewerPubkey, diff --git a/lib/sponsoringPaymentVerification.ts b/lib/sponsoringPaymentVerification.ts index 6a6924b..dd0c2b6 100644 --- a/lib/sponsoringPaymentVerification.ts +++ b/lib/sponsoringPaymentVerification.ts @@ -21,7 +21,7 @@ export function logVerificationSuccess( authorMainnetAddress: string, verification: { authorOutput?: { amount: number }; platformOutput?: { amount: number }; confirmed: boolean; confirmations: number } ): void { - console.log('Sponsoring payment verified', { + console.warn('Sponsoring payment verified', { transactionId, authorPubkey, authorAddress: authorMainnetAddress, diff --git a/lib/userContentSync.ts b/lib/userContentSync.ts index 976eb91..cc5531d 100644 --- a/lib/userContentSync.ts +++ b/lib/userContentSync.ts @@ -64,7 +64,7 @@ async function fetchAndCachePublications( 5000 // 5 second timeout per relay ) sub = result - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() sub = createSubscription(pool, [usedRelayUrl], filters) @@ -192,7 +192,7 @@ async function fetchAndCacheSeries( 5000 // 5 second timeout per relay ) sub = result - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() sub = createSubscription(pool, [usedRelayUrl], filters) @@ -322,7 +322,7 @@ async function fetchAndCachePurchases( 5000 // 5 second timeout per relay ) sub = result - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() sub = createSubscription(pool, [usedRelayUrl], filters) @@ -423,7 +423,7 @@ async function fetchAndCacheSponsoring( 5000 // 5 second timeout per relay ) sub = result - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() sub = createSubscription(pool, [usedRelayUrl], filters) @@ -524,7 +524,7 @@ async function fetchAndCacheReviewTips( 5000 // 5 second timeout per relay ) sub = result - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() sub = createSubscription(pool, [usedRelayUrl], filters) @@ -644,7 +644,7 @@ async function fetchAndCachePaymentNotes( 5000 // 5 second timeout per relay ) subscriptions = result.flat() - } catch (_rotationError) { + } catch { // Fallback to primary relay if rotation fails usedRelayUrl = getPrimaryRelaySync() subscriptions = filters.map((filter) => createSubscription(pool, [usedRelayUrl], [filter])) diff --git a/public/locales/en.txt b/public/locales/en.txt index b4c2eb0..aba88c6 100644 --- a/public/locales/en.txt +++ b/public/locales/en.txt @@ -299,7 +299,7 @@ settings.relay.add.add=Add settings.relay.add.cancel=Cancel settings.relay.list.enabled=Enabled settings.relay.list.disabled=Disabled -settings.relay.list.priorityLabel=Priority {{priority}} (ID: {{id}}) +settings.relay.list.priorityLabel=Priority {{priority}} settings.relay.list.editUrl=Click to edit URL settings.relay.list.remove=Remove settings.relay.remove.confirm=Are you sure you want to remove this relay? diff --git a/public/locales/fr.txt b/public/locales/fr.txt index e4c07bc..ae0ef34 100644 --- a/public/locales/fr.txt +++ b/public/locales/fr.txt @@ -304,7 +304,7 @@ settings.relay.add.add=Ajouter settings.relay.add.cancel=Annuler settings.relay.list.enabled=Activé settings.relay.list.disabled=Désactivé -settings.relay.list.priorityLabel=Priorité {{priority}} (ID: {{id}}) +settings.relay.list.priorityLabel=Priorité {{priority}} settings.relay.list.editUrl=Cliquer pour modifier l'URL settings.relay.list.remove=Supprimer settings.relay.remove.confirm=Êtes-vous sûr de vouloir supprimer ce relais ?