@@ -56,6 +56,7 @@ export default function FeedPage() {
5656 const [ loading , setLoading ] = useState ( true ) ;
5757 const [ showCompose , setShowCompose ] = useState ( false ) ;
5858 const [ anonymous , setAnonymous ] = useState ( true ) ;
59+ const [ feedError , setFeedError ] = useState < string | null > ( null ) ;
5960
6061 // Use user ID from auth context (no duplicate fetch)
6162 const userId = user ?. id || "" ;
@@ -93,11 +94,12 @@ export default function FeedPage() {
9394 headers : { "Content-Type" : "application/json" } ,
9495 body : JSON . stringify ( { content : content . trim ( ) , category, anonymous } ) ,
9596 } ) ;
97+ setFeedError ( null ) ;
9698 setContent ( "" ) ;
9799 setShowCompose ( false ) ;
98100 await loadPosts ( ) ;
99101 } catch {
100- // Failed to create post
102+ setFeedError ( "Something went wrong. Please try again." ) ;
101103 } finally {
102104 setPosting ( false ) ;
103105 }
@@ -110,9 +112,10 @@ export default function FeedPage() {
110112 headers : { "Content-Type" : "application/json" } ,
111113 body : JSON . stringify ( { action : "react" , postId : post . postId , createdAt : post . createdAt , type } ) ,
112114 } ) ;
115+ setFeedError ( null ) ;
113116 await loadPosts ( ) ;
114117 } catch {
115- // Failed to toggle reaction
118+ setFeedError ( "Something went wrong. Please try again." ) ;
116119 }
117120 } ;
118121
@@ -123,9 +126,10 @@ export default function FeedPage() {
123126 headers : { "Content-Type" : "application/json" } ,
124127 body : JSON . stringify ( { action : "delete" , postId : post . postId , createdAt : post . createdAt } ) ,
125128 } ) ;
129+ setFeedError ( null ) ;
126130 await loadPosts ( ) ;
127131 } catch {
128- // Failed to delete
132+ setFeedError ( "Something went wrong. Please try again." ) ;
129133 }
130134 } ;
131135
@@ -290,6 +294,14 @@ export default function FeedPage() {
290294 </ div >
291295 ) }
292296
297+ { /* Error Banner */ }
298+ { feedError && (
299+ < div style = { { padding : "10px 16px" , borderRadius : 12 , background : "var(--peach-100)" , color : "var(--text-primary)" , fontSize : "0.85rem" , marginBottom : 12 , display : "flex" , justifyContent : "space-between" , alignItems : "center" } } >
300+ < span > { feedError } </ span >
301+ < button onClick = { ( ) => setFeedError ( null ) } style = { { background : "none" , border : "none" , cursor : "pointer" , color : "var(--text-secondary)" , fontSize : "1rem" } } > ✕</ button >
302+ </ div >
303+ ) }
304+
293305 { /* Category Filter */ }
294306 < div
295307 className = "fade fade-2"
0 commit comments