mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #12969 from overleaf/td-history-prevent-flashes
History migration: Prevent flash of previous document in document diff viewer when switching document GitOrigin-RevId: dae99c13779006b61eb018772295376320770d3b
This commit is contained in:
parent
f8a2d85126
commit
cf05b4a3d1
1 changed files with 18 additions and 26 deletions
|
@ -1,8 +1,7 @@
|
|||
import { useEffect, useState } from 'react'
|
||||
import { useEffect } from 'react'
|
||||
import Toolbar from './toolbar/toolbar'
|
||||
import Main from './main'
|
||||
import { Diff, DocDiffResponse } from '../../services/types/doc'
|
||||
import { Nullable } from '../../../../../../types/utils'
|
||||
import { useHistoryContext } from '../../context/history-context'
|
||||
import { diffDoc } from '../../services/api'
|
||||
import { highlightsFromDiffResponse } from '../../utils/highlights-from-diff-response'
|
||||
|
@ -10,12 +9,9 @@ import useAsync from '../../../../shared/hooks/use-async'
|
|||
import ErrorMessage from '../error-message'
|
||||
|
||||
function DiffView() {
|
||||
const [diff, setDiff] = useState<Nullable<Diff>>(null)
|
||||
const { selection, projectId, loadingState } = useHistoryContext()
|
||||
const loadingFileDiffs = loadingState === 'loadingFileDiffs'
|
||||
|
||||
const { isLoading, runAsync, error } = useAsync<DocDiffResponse>()
|
||||
|
||||
const { isLoading, data, runAsync, error } = useAsync<DocDiffResponse>()
|
||||
const { updateRange, selectedFile } = selection
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -25,28 +21,24 @@ function DiffView() {
|
|||
|
||||
const { fromV, toV } = updateRange
|
||||
|
||||
runAsync(diffDoc(projectId, fromV, toV, selectedFile.pathname))
|
||||
.then(data => {
|
||||
let diff: Diff | undefined
|
||||
|
||||
if (!data?.diff) {
|
||||
setDiff(null)
|
||||
}
|
||||
|
||||
if ('binary' in data.diff) {
|
||||
diff = { binary: true }
|
||||
} else {
|
||||
diff = {
|
||||
binary: false,
|
||||
docDiff: highlightsFromDiffResponse(data.diff),
|
||||
}
|
||||
}
|
||||
|
||||
setDiff(diff)
|
||||
})
|
||||
.catch(console.error)
|
||||
runAsync(diffDoc(projectId, fromV, toV, selectedFile.pathname)).catch(
|
||||
console.error
|
||||
)
|
||||
}, [projectId, runAsync, updateRange, selectedFile, loadingFileDiffs])
|
||||
|
||||
let diff: Diff | null
|
||||
|
||||
if (!data?.diff) {
|
||||
diff = null
|
||||
} else if ('binary' in data.diff) {
|
||||
diff = { binary: true }
|
||||
} else {
|
||||
diff = {
|
||||
binary: false,
|
||||
docDiff: highlightsFromDiffResponse(data.diff),
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="doc-panel">
|
||||
{error ? (
|
||||
|
|
Loading…
Reference in a new issue