mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-01 00:00:22 -05:00
7475237170
- Change api function argument (readability) - create a new wrapper hooks for saving the project to both server-side and angular scope - Implement the new save project settings hooks on project-wide settings update - On spell check language update function, add new comment to give more context about the decision GitOrigin-RevId: 93d558d1e1d4db265a943eeb4366842430900c43
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { useCallback } from 'react'
|
|
import { useEditorContext } from '../../../shared/context/editor-context'
|
|
import useScopeValue from '../../../shared/hooks/use-scope-value'
|
|
import type { ProjectSettings } from '../utils/api'
|
|
import useSaveProjectSettings from './use-save-project-settings'
|
|
|
|
export default function useRootDocId() {
|
|
const [rootDocId] =
|
|
useScopeValue<ProjectSettings['rootDocId']>('project.rootDoc_id')
|
|
const { permissionsLevel } = useEditorContext()
|
|
const saveProjectSettings = useSaveProjectSettings()
|
|
|
|
const setRootDocIdFunc = useCallback(
|
|
async (newRootDocId: ProjectSettings['rootDocId']) => {
|
|
// rootDoc_id will be undefined on angular scope on initialisation
|
|
const allowUpdate =
|
|
typeof rootDocId !== 'undefined' && permissionsLevel !== 'readOnly'
|
|
|
|
if (allowUpdate) {
|
|
try {
|
|
await saveProjectSettings('rootDocId', newRootDocId)
|
|
} catch (err) {
|
|
// TODO: retry mechanism (max 10x before failed completely and rollback the old value)
|
|
}
|
|
}
|
|
},
|
|
[permissionsLevel, rootDocId, saveProjectSettings]
|
|
)
|
|
|
|
return {
|
|
rootDocId,
|
|
setRootDocId: setRootDocIdFunc,
|
|
}
|
|
}
|