@@ -6,23 +6,39 @@ import ReactMarkdown from 'react-markdown'
6
6
// Types
7
7
import type { Note , NoteEdge } from '@common/types/pocket'
8
8
9
- export function NotesList ( { notes } : { notes ?: NoteEdge [ ] } ) {
9
+ export function NotesList ( {
10
+ notes,
11
+ handleNoteDelete
12
+ } : {
13
+ notes ?: NoteEdge [ ]
14
+ handleNoteDelete : ( id : string ) => void
15
+ } ) {
16
+ const validNotes = notes ?. filter ( ( note ) => ! note ?. node ?. deleted ) ?? [ ]
10
17
return (
11
18
< div className = { style . notes } >
12
19
{ Array . isArray ( notes ) && notes . length ? (
13
- notes . map ( ( note ) => < Note key = { note ?. cursor } note = { note } /> )
20
+ validNotes . map ( ( note ) => (
21
+ < Note key = { note ?. cursor } note = { note } handleNoteDelete = { handleNoteDelete } />
22
+ ) )
14
23
) : (
15
24
< NoNotes />
16
25
) }
17
26
</ div >
18
27
)
19
28
}
20
29
21
- function Note ( { note } : { note ?: NoteEdge } ) {
30
+ function Note ( {
31
+ note,
32
+ handleNoteDelete
33
+ } : {
34
+ note ?: NoteEdge
35
+ handleNoteDelete : ( id : string ) => void
36
+ } ) {
22
37
const [ confirmDelete , setConfirmDelete ] = useState < boolean > ( false )
23
38
const noteRef = useRef < HTMLDivElement > ( null )
24
39
25
40
const node = note ?. node
41
+ const noteId = node ?. id
26
42
const title = node ?. title
27
43
const contentPreview = node ?. contentPreview as string
28
44
@@ -32,6 +48,11 @@ function Note({ note }: { note?: NoteEdge }) {
32
48
}
33
49
const handleCancelClick = ( ) => setConfirmDelete ( false )
34
50
51
+ const handleConfirmClick = ( ) => {
52
+ setConfirmDelete ( false )
53
+ if ( noteId ) handleNoteDelete ( noteId )
54
+ }
55
+
35
56
return contentPreview ? (
36
57
< div className = { `${ style . container } ${ confirmDelete && style . active } ` } ref = { noteRef } >
37
58
< div className = { style . note } >
@@ -47,15 +68,26 @@ function Note({ note }: { note?: NoteEdge }) {
47
68
</ button >
48
69
) : null }
49
70
</ div >
50
- { confirmDelete ? < NoteDeleteConfirm handleCancelClick = { handleCancelClick } /> : null }
71
+ { confirmDelete ? (
72
+ < NoteDeleteConfirm
73
+ handleCancelClick = { handleCancelClick }
74
+ handleConfirmClick = { handleConfirmClick }
75
+ />
76
+ ) : null }
51
77
</ div >
52
78
) : null
53
79
}
54
80
55
- function NoteDeleteConfirm ( { handleCancelClick } : { handleCancelClick : ( ) => void } ) {
81
+ function NoteDeleteConfirm ( {
82
+ handleCancelClick,
83
+ handleConfirmClick
84
+ } : {
85
+ handleCancelClick : ( ) => void
86
+ handleConfirmClick : ( ) => void
87
+ } ) {
56
88
return (
57
89
< div className = { style . confirm } >
58
- < button > Delete this note</ button >
90
+ < button onClick = { handleConfirmClick } > Delete this note</ button >
59
91
< button onClick = { handleCancelClick } > Cancel</ button >
60
92
</ div >
61
93
)
0 commit comments