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 ?