From a8f71b6a7f3c62003921c5d215bd9766317f626f Mon Sep 17 00:00:00 2001 From: Silberengel Date: Wed, 18 Mar 2026 11:55:54 +0100 Subject: [PATCH] move report issue button on error message to gitrepublic --- src/components/ErrorBoundary.tsx | 43 +++++++------------ .../primary/NoteListPage/FollowingFeed.tsx | 9 +++- src/pages/primary/NoteListPage/index.tsx | 20 ++++++--- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index 10f676b6..78cd6b6d 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -1,11 +1,12 @@ import { Button } from '@/components/ui/button' -import PostContent from '@/components/PostEditor/PostContent' -import { SILBERENGEL_PUBKEY } from '@/constants' import { MessageCircle, RotateCw } from 'lucide-react' import React, { Component, ReactNode } from 'react' import { toast } from 'sonner' import logger from '@/lib/logger' +const ISSUES_URL = + 'https://gitrepublic.imwald.eu/repos/npub1l5sga6xg72phsz5422ykujprejwud075ggrr3z2hwyrfgr7eylqstegx9z/jumble-imwald-edition?tab=issues' + interface ErrorBoundaryProps { children: ReactNode } @@ -13,17 +14,16 @@ interface ErrorBoundaryProps { interface ErrorBoundaryState { hasError: boolean error?: Error - showErrorReportDialog: boolean } export class ErrorBoundary extends Component { constructor(props: ErrorBoundaryProps) { super(props) - this.state = { hasError: false, showErrorReportDialog: false } + this.state = { hasError: false } } static getDerivedStateFromError(error: Error) { - return { hasError: true, error, showErrorReportDialog: false } + return { hasError: true, error } } componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { @@ -36,19 +36,21 @@ export class ErrorBoundary extends Component

Oops, something went wrong.

- Sorry for the inconvenience. You can help by sending me a public message with the error details. + Sorry for the inconvenience. You can help by logging an issue with the error details.

{this.state.error?.message && ( <>
- - - {this.state.showErrorReportDialog && ( - { - this.setState({ showErrorReportDialog: false }) - }} - /> - )}
) } diff --git a/src/pages/primary/NoteListPage/FollowingFeed.tsx b/src/pages/primary/NoteListPage/FollowingFeed.tsx index 83ef8a4c..3c26da79 100644 --- a/src/pages/primary/NoteListPage/FollowingFeed.tsx +++ b/src/pages/primary/NoteListPage/FollowingFeed.tsx @@ -3,9 +3,14 @@ import { useFeed } from '@/providers/FeedProvider' import { useNostr } from '@/providers/NostrProvider' import client from '@/services/client.service' import { TFeedSubRequest } from '@/types' +import type { ReactNode } from 'react' import { useEffect, useState } from 'react' -export default function FollowingFeed() { +export default function FollowingFeed({ + setSubHeader +}: { + setSubHeader?: (node: ReactNode) => void +}) { const { pubkey } = useNostr() const { feedInfo } = useFeed() const [subRequests, setSubRequests] = useState([]) @@ -24,5 +29,5 @@ export default function FollowingFeed() { init() }, [feedInfo.feedType, pubkey]) - return + return } diff --git a/src/pages/primary/NoteListPage/index.tsx b/src/pages/primary/NoteListPage/index.tsx index b8e181f4..b2e6e374 100644 --- a/src/pages/primary/NoteListPage/index.tsx +++ b/src/pages/primary/NoteListPage/index.tsx @@ -13,6 +13,7 @@ import React, { Dispatch, forwardRef, SetStateAction, + useCallback, useEffect, useImperativeHandle, useRef, @@ -39,11 +40,18 @@ const NoteListPage = forwardRef((_, ref) => { const [homeSubHeader, setHomeSubHeader] = useState(null) useImperativeHandle(ref, () => layoutRef.current) - // Clear subHeader when switching away from relay/relays/all-favorites feed + const setHomeSubHeaderStable = useCallback((node: React.ReactNode) => { + setHomeSubHeader(node) + }, []) + + // Clear subHeader when switching to a feed that doesn't use it (e.g. bookmarks) useEffect(() => { - const isRelaysFeed = - feedInfo.feedType === 'relay' || feedInfo.feedType === 'relays' || feedInfo.feedType === 'all-favorites' - if (!isRelaysFeed) setHomeSubHeader(null) + const usesSubHeader = + feedInfo.feedType === 'relay' || + feedInfo.feedType === 'relays' || + feedInfo.feedType === 'all-favorites' || + feedInfo.feedType === 'following' + if (!usesSubHeader) setHomeSubHeader(null) }, [feedInfo.feedType]) // REMOVED: Scroll-to-top logic - feed should NEVER scroll to top when drawer opens/closes @@ -90,14 +98,14 @@ const NoteListPage = forwardRef((_, ref) => { content = } } else if (feedInfo.feedType === 'following') { - content = + content = } else { content = ( <> {showRelayDetails && feedInfo.feedType === 'relay' && !!feedInfo.id && ( )} - + ) }