Skip to content

Commit 4707e67

Browse files
committed
remove use effect and add to doc preview
1 parent 2600f82 commit 4707e67

File tree

3 files changed

+43
-122
lines changed

3 files changed

+43
-122
lines changed

src/cloud/components/DocPreview/DocPreviewRealtime.tsx

Lines changed: 5 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
import {
2-
mdiCloudOffOutline,
3-
mdiCloudSyncOutline,
4-
mdiFileDocumentOutline,
5-
} from '@mdi/js'
1+
import { mdiFileDocumentOutline } from '@mdi/js'
62
import React, { useCallback, useEffect, useRef, useState } from 'react'
7-
import Button from '../../../design/components/atoms/Button'
83
import Flexbox from '../../../design/components/atoms/Flexbox'
94
import LoaderDocEditor from '../../../design/components/atoms/loaders/LoaderDocEditor'
105
import styled from '../../../design/lib/styled'
@@ -27,10 +22,10 @@ import EditorToolbar from '../Editor/EditorToolbar'
2722
import EditorToolbarUpload from '../Editor/EditorToolbarUpload'
2823
import EditorToolButton from '../Editor/EditorToolButton'
2924
import cc from 'classcat'
30-
import WithTooltip from '../../../design/components/atoms/WithTooltip'
3125
import { useEffectOnUnmount } from '../../../lib/hooks'
3226
import { useDocEditor } from '../../lib/hooks/editor/docEditor'
3327
import { SerializedSubscription } from '../../interfaces/db/subscription'
28+
import SyncStatus from '../Topbar/SyncStatus'
3429

3530
interface DocPreviewRealtimeProps {
3631
team: SerializedTeam
@@ -130,73 +125,6 @@ const DocPreviewRealtime = ({
130125
}
131126
}, [mode, editorRef])
132127

133-
useEffect(() => {
134-
switch (connState) {
135-
case 'disconnected':
136-
setRenderHeader(() => (
137-
<WithTooltip
138-
tooltip={
139-
<>
140-
{translate(lngKeys.EditorReconnectDisconnected1)}
141-
<br />
142-
{translate(lngKeys.EditorReconnectDisconnected2)}
143-
</>
144-
}
145-
>
146-
<Button
147-
iconPath={mdiCloudOffOutline}
148-
variant='danger'
149-
onClick={() => realtime.connect()}
150-
>
151-
{translate(lngKeys.EditorReconnectDisconnected)}
152-
</Button>
153-
</WithTooltip>
154-
))
155-
break
156-
case 'reconnecting':
157-
setRenderHeader(() => (
158-
<WithTooltip
159-
tooltip={
160-
<>
161-
{translate(lngKeys.EditorReconnectAttempt1)}
162-
<br />
163-
{translate(lngKeys.EditorReconnectAttempt2)}
164-
</>
165-
}
166-
>
167-
<Button
168-
iconPath={mdiCloudSyncOutline}
169-
variant='danger'
170-
disabled={true}
171-
>
172-
{translate(lngKeys.EditorReconnectAttempt)}
173-
</Button>
174-
</WithTooltip>
175-
))
176-
break
177-
case 'loaded':
178-
setRenderHeader(() => (
179-
<WithTooltip
180-
tooltip={
181-
<>
182-
{translate(lngKeys.EditorReconnectSyncing1)}
183-
<br />
184-
{translate(lngKeys.EditorReconnectSyncing2)}
185-
</>
186-
}
187-
>
188-
<Button variant='secondary' disabled={true}>
189-
{translate(lngKeys.EditorReconnectSyncing)}
190-
</Button>
191-
</WithTooltip>
192-
))
193-
break
194-
default:
195-
setRenderHeader(() => null)
196-
break
197-
}
198-
}, [connState, translate, setRenderHeader, realtime])
199-
200128
useEffectOnUnmount(() => {
201129
setRenderHeader(() => null)
202130
})
@@ -222,6 +150,8 @@ const DocPreviewRealtime = ({
222150
getEmbed={getEmbed}
223151
/>
224152
</StyledPreview>
153+
154+
<SyncStatus provider={realtime} connState={connState} />
225155
</StyledEditor>
226156
</Container>
227157
)
@@ -286,6 +216,7 @@ const DocPreviewRealtime = ({
286216
/>
287217
</StyledPreview>
288218
</StyledEditor>
219+
<SyncStatus provider={realtime} connState={connState} />
289220
</Container>
290221
{mode !== 'preview' && (
291222
<StyledBottomBar className='doc-preview__toolbar'>

src/cloud/components/Editor/index.tsx

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,6 @@ const Editor = ({
158158
: 'preview'
159159
)
160160
const [editorContent, setEditorContent] = useState('')
161-
const [showingConnectIssueMessage, setShowingShowingConnectIssueMessage] =
162-
useState<boolean>(false)
163161
const docRef = useRef<string>('')
164162
const router = useRouter()
165163
const { state } = router
@@ -486,16 +484,6 @@ const Editor = ({
486484
})
487485
}, [openModal, onTemplatePickCallback])
488486

489-
useEffect(() => {
490-
if (connState == 'reconnecting') {
491-
setShowingShowingConnectIssueMessage(true)
492-
} else if (connState == 'disconnected') {
493-
setShowingShowingConnectIssueMessage(true)
494-
} else {
495-
setShowingShowingConnectIssueMessage(false)
496-
}
497-
}, [connState])
498-
499487
const toggleScrollSync = useCallback(() => {
500488
setScrollSync(not)
501489
}, [])
@@ -1029,9 +1017,7 @@ const Editor = ({
10291017
)}
10301018
</Container>
10311019
</EditorLayout>
1032-
{showingConnectIssueMessage && (
1033-
<SyncStatus provider={realtime} connState={connState} />
1034-
)}
1020+
<SyncStatus provider={realtime} connState={connState} />
10351021
</ApplicationContent>
10361022
</ApplicationPage>
10371023
)

src/cloud/components/Topbar/SyncStatus.tsx

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,56 +21,60 @@ const SyncStatus = ({ provider, connState }: SyncStatusProps) => {
2121
switch (connState) {
2222
case 'reconnecting':
2323
return (
24-
<div className={'sync__status__container_reconnecting'}>
25-
<div className={'sync__status__header'}>
26-
<Spinner variant={'warning'} size={20} />
27-
<div className={'sync__status__header_text'}>Connecting..</div>
28-
</div>
29-
<div>
30-
Changes will not be synced with the server until reconnection
24+
<ConnectIssueContainer>
25+
<div className={'sync__status__container_reconnecting'}>
26+
<div className={'sync__status__header'}>
27+
<Spinner variant={'warning'} size={20} />
28+
<div className={'sync__status__header_text'}>Connecting..</div>
29+
</div>
30+
<div>
31+
Changes will not be synced with the server until reconnection
32+
</div>
3133
</div>
32-
</div>
34+
</ConnectIssueContainer>
3335
)
3436
case 'disconnected':
3537
return (
36-
<div className={'sync__status__container_disconnected'}>
37-
<div className={'sync__status__header'}>
38-
<Icon
39-
className={'sync__status__header_warn_color'}
40-
path={mdiAlertOutline}
41-
size={20}
42-
/>
43-
<div className={'sync__status__header_text'}>
44-
Please try reconnecting
38+
<ConnectIssueContainer>
39+
<div className={'sync__status__container_disconnected'}>
40+
<div className={'sync__status__header'}>
41+
<Icon
42+
className={'sync__status__header_warn_color'}
43+
path={mdiAlertOutline}
44+
size={20}
45+
/>
46+
<div className={'sync__status__header_text'}>
47+
Please try reconnecting
48+
</div>
4549
</div>
50+
<div>
51+
Edit session has expired. Changes will not be synced with the
52+
server until reconnection.
53+
</div>
54+
<Button
55+
className={'sync__status__reconnect_button'}
56+
variant='warning'
57+
onClick={reconnect}
58+
size={'md'}
59+
>
60+
Reconnect
61+
</Button>
4662
</div>
47-
<div>
48-
Edit session has expired. Changes will not be synced with the
49-
server until reconnection.
50-
</div>
51-
<Button
52-
className={'sync__status__reconnect_button'}
53-
variant='warning'
54-
onClick={reconnect}
55-
size={'md'}
56-
>
57-
Reconnect
58-
</Button>
59-
</div>
63+
</ConnectIssueContainer>
6064
)
6165
default:
62-
return undefined
66+
return null
6367
}
6468
}, [connState, reconnect])
6569

66-
return <ConnectIssueContainer>{content}</ConnectIssueContainer>
70+
return content
6771
}
6872

6973
const ConnectIssueContainer = styled.div`
7074
position: absolute;
7175
bottom: 24px;
7276
right: 46px;
73-
z-index: 9999;
77+
z-index: 1;
7478
width: 300px;
7579
7680
background-color: ${({ theme }) => theme.colors.background.tertiary};

0 commit comments

Comments
 (0)