@@ -4,137 +4,56 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'
4
4
5
5
import { getMexHTMLDeserializer } from '../../Utils/deserialize'
6
6
import { Editor } from '../Editor'
7
- import { useSputlitContext , VisualState } from '../../Hooks/useSputlitContext'
7
+ import { useSputlitContext } from '../../Hooks/useSputlitContext'
8
8
import Results from '../Results'
9
9
import { StyledContent } from './styled'
10
- import { useAuthStore } from '../../Hooks/useAuth'
11
- import toast from 'react-hot-toast'
12
- import {
13
- CaptureType ,
14
- createNodeWithUid ,
15
- defaultContent ,
16
- extractMetadata ,
17
- generateNodeId ,
18
- getNewDraftKey ,
19
- mog ,
20
- QuickLinkType ,
21
- SEPARATOR
22
- } from '@mexit/core'
23
- import { CategoryType , NodeEditorContent , NodeMetadata } from '@mexit/core'
10
+ import { CategoryType , createNodeWithUid , defaultContent , getNewDraftKey , QuickLinkType } from '@mexit/core'
11
+ import { NodeEditorContent } from '@mexit/core'
24
12
import { useEditorContext } from '../../Hooks/useEditorContext'
25
13
import { useSnippets } from '../../Hooks/useSnippets'
26
14
import { useContentStore } from '../../Stores/useContentStore'
27
- import useDataStore from '../../Stores/useDataStore '
15
+ import { useSaveChanges } from '../../Hooks/useSaveChanges '
28
16
29
17
export default function Content ( ) {
30
- const { selection, setVisualState, searchResults, activeIndex } = useSputlitContext ( )
31
- const { node, nodeContent, setNodeContent, previewMode, setNode } = useEditorContext ( )
18
+ const { selection, searchResults, activeIndex } = useSputlitContext ( )
19
+ const { node, setNodeContent, previewMode, setNode } = useEditorContext ( )
20
+ const { saveIt } = useSaveChanges ( )
32
21
33
- const { setContent , setMetadata , getContent } = useContentStore ( )
22
+ const { getContent } = useContentStore ( )
34
23
const editor = usePlateEditorRef ( node . nodeid )
35
24
const getSnippet = useSnippets ( ) . getSnippet
36
25
37
- // Ref so that the function contains the newest value without re-renders
38
- const contentRef = useRef < NodeEditorContent > ( nodeContent )
39
26
const deserializedContentRef = useRef < NodeEditorContent > ( )
40
27
41
- const workspaceDetails = useAuthStore ( ( store ) => store . workspaceDetails )
42
-
43
- const ilinks = useDataStore ( ( store ) => store . ilinks )
44
-
45
28
useEffect ( ( ) => {
46
29
const content = getMexHTMLDeserializer ( selection ?. html , editor )
47
30
48
31
if ( selection ?. range && content && selection ?. url && previewMode ) {
49
32
setNodeContent ( [ { children : content } ] )
50
- contentRef . current = content
51
33
deserializedContentRef . current = content
52
34
}
53
- } , [ editor ] ) // eslint-disable-line
54
-
55
- // useEffect(() => {
56
- // console.log('NODE CHANGED: ', node)
57
- // }, [node])
58
-
59
- useEffect ( ( ) => {
60
- setNode ( createNodeWithUid ( getNewDraftKey ( ) ) )
61
- } , [ ] )
35
+ } , [ editor ] )
62
36
63
37
const onChangeSave = ( val : any [ ] ) => {
64
38
if ( val ) {
65
39
setNodeContent ( val )
66
- contentRef . current = val
67
40
}
68
41
}
69
42
70
43
useEffect ( ( ) => {
71
- const handleSave = ( saveAndExit = false ) => {
72
- const metadata = {
73
- saveableRange : selection ?. range ,
74
- sourceUrl : selection ?. range && window . location . href
75
- }
76
-
77
- const splitPath = node . path . split ( SEPARATOR )
78
- const request = {
79
- type : 'CAPTURE_HANDLER' ,
80
- subType : 'BULK_CREATE_NODE' ,
81
- data : {
82
- id : node . nodeid ,
83
- content : contentRef . current ,
84
- title : splitPath . slice ( - 1 ) [ 0 ] ,
85
- type : CaptureType . DRAFT ,
86
- workspaceID : workspaceDetails . id ,
87
- metadata : metadata
88
- }
89
- }
90
-
91
- if ( splitPath . length > 1 ) {
92
- const parent = splitPath . slice ( 0 , - 1 ) . join ( SEPARATOR )
93
- const parentID = ilinks . find ( ( i ) => i . path === parent )
94
- request . data [ 'referenceID' ] = parentID . nodeid
95
- }
96
-
97
- // console.log('Sending: ', node, request)
98
-
99
- setContent ( node . nodeid , contentRef . current )
100
- chrome . runtime . sendMessage ( request , ( response ) => {
101
- const { message, error } = response
102
- console . log ( 'Response aaya: ' , response )
103
- if ( error ) {
104
- if ( error === 'Not Authenticated' ) {
105
- toast . error ( 'Not Authenticated. Please login on Mexit webapp.' )
106
- } else {
107
- toast . error ( 'An Error Occured. Please try again.' )
108
- }
109
- } else {
110
- setMetadata ( message . id , extractMetadata ( message . data [ 0 ] ) )
111
- toast . success ( 'Saved to Cloud' )
112
- if ( saveAndExit ) {
113
- setTimeout ( ( ) => {
114
- setVisualState ( VisualState . hidden )
115
- } , 2000 )
116
- }
117
- }
118
- } )
119
- }
120
-
121
44
const handleSaveKeydown = ( event : KeyboardEvent ) => {
122
- if ( event . key === 's' && event . metaKey ) {
123
- event . preventDefault ( )
124
- handleSave ( true )
125
- } else if ( event . key === 'Enter' && event . metaKey ) {
45
+ if ( event . key === 's' && event . metaKey && ! previewMode ) {
126
46
event . preventDefault ( )
127
- handleSave ( true )
47
+ saveIt ( true , true )
128
48
}
129
49
}
130
50
131
51
document . getElementById ( 'mexit' ) ! . addEventListener ( 'keydown' , handleSaveKeydown )
132
52
133
53
return ( ) => {
134
- // handleSave()
135
54
document . getElementById ( 'mexit' ) ! . removeEventListener ( 'keydown' , handleSaveKeydown )
136
55
}
137
- } , [ node , ilinks ] )
56
+ } , [ node , previewMode ] )
138
57
139
58
useEffect ( ( ) => {
140
59
const item = searchResults [ activeIndex ]
0 commit comments