Changeset acf690c for chapterx-frontend/src/pages/reading-list
- Timestamp:
- 03/22/26 17:58:40 (4 months ago)
- Branches:
- main
- Children:
- 73b69b2
- Parents:
- b62cefc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapterx-frontend/src/pages/reading-list/ReadingListPage.tsx
rb62cefc racf690c 1 import React, { useState } from 'react'1 import React, { useState, useEffect } from 'react' 2 2 import { useNavigate } from 'react-router-dom' 3 3 import { Plus, BookOpen, Lock, Globe, Trash2, X } from 'lucide-react' … … 12 12 const navigate = useNavigate() 13 13 const { currentUser } = useAuthStore() 14 const { readingLists, createReadingList, deleteReadingList, removeStoryFromList } = useStoryStore() 14 const { readingLists, fetchReadingLists, createReadingList, deleteReadingList, removeStoryFromList } = useStoryStore() 15 16 useEffect(() => { 17 fetchReadingLists() 18 }, []) 15 19 const { addToast } = useUIStore() 16 20 const [createOpen, setCreateOpen] = useState(false) … … 31 35 const myLists = readingLists.filter(l => l.user_id === currentUser.user_id) 32 36 33 const handleCreate = () => {37 const handleCreate = async () => { 34 38 if (!newListName.trim()) return 35 createReadingList({ 36 list_id: Date.now(), 37 user_id: currentUser.user_id, 38 username: currentUser.username, 39 name: newListName.trim(), 40 description: newListDesc.trim() || undefined, 41 is_public: isPublic, 42 created_at: new Date().toISOString(), 43 stories: [], 44 }) 45 addToast(`"${newListName}" created!`) 39 try { 40 await createReadingList({ 41 list_id: Date.now(), 42 user_id: currentUser.user_id, 43 username: currentUser.username, 44 name: newListName.trim(), 45 description: newListDesc.trim() || undefined, 46 is_public: isPublic, 47 created_at: new Date().toISOString(), 48 stories: [], 49 }) 50 addToast(`"${newListName}" created!`) 51 } catch (err: any) { 52 addToast(err?.response?.data?.message || 'Failed to create list.', 'error') 53 return 54 } 46 55 setNewListName('') 47 56 setNewListDesc('') … … 100 109 </div> 101 110 <button 102 onClick={ () => { deleteReadingList(list.list_id); addToast('List deleted', 'info')}}111 onClick={async () => { try { await deleteReadingList(list.list_id); addToast('List deleted', 'info') } catch { addToast('Failed to delete list.', 'error') } }} 103 112 className="text-slate-500 hover:text-rose-400 transition-colors p-1" 104 113 >
Note:
See TracChangeset
for help on using the changeset viewer.
