mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-14 07:04:45 -04:00

* Remove redundant equal value Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Add NoteLoadingBoundary to fetch note from API before rendering Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Improve debug message for setHandler Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Add test for boundary Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Use common error page for note loading errors Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Fix tests Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Format code Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Add missing snapshot Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Reformat code Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
28 lines
1 KiB
TypeScript
28 lines
1 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { useAsync } from 'react-use'
|
|
import { getNote } from '../../../../api/notes'
|
|
import { setNoteDataFromServer } from '../../../../redux/note-details/methods'
|
|
import { useSingleStringUrlParameter } from '../../../../hooks/common/use-single-string-url-parameter'
|
|
import type { AsyncState } from 'react-use/lib/useAsyncFn'
|
|
|
|
/**
|
|
* Reads the note id from the current URL, requests the note from the backend and writes it into the global application state.
|
|
*
|
|
* @return An {@link AsyncState async state} that represents the current state of the loading process.
|
|
*/
|
|
export const useLoadNoteFromServer = (): AsyncState<void> => {
|
|
const id = useSingleStringUrlParameter('noteId', undefined)
|
|
|
|
return useAsync(async () => {
|
|
if (id === undefined) {
|
|
throw new Error('Invalid id')
|
|
}
|
|
const noteFromServer = await getNote(id)
|
|
setNoteDataFromServer(noteFromServer)
|
|
}, [id])
|
|
}
|