@@ -5,6 +5,7 @@ import type { NoteTool } from '@/domain/entities/Note';
55import { useRouter , useRoute } from 'vue-router' ;
66import type { NoteDraft } from '@/domain/entities/NoteDraft' ;
77import type EditorTool from '@/domain/entities/EditorTool' ;
8+ import DomainError from '@/domain/entities/errors/Base' ;
89import useNavbar from './useNavbar' ;
910import { getTitle } from '@/infrastructure/utils/note' ;
1011
@@ -98,7 +99,7 @@ interface UseNoteComposableOptions {
9899 * @param options - note service options
99100 */
100101export default function ( options : UseNoteComposableOptions ) : UseNoteComposableState {
101- const { patchOpenedPageByUrl } = useNavbar ( ) ;
102+ const { patchOpenedPageByUrl, deleteOpenedPageByUrl } = useNavbar ( ) ;
102103 /**
103104 * Current note identifier
104105 */
@@ -163,15 +164,21 @@ export default function (options: UseNoteComposableOptions): UseNoteComposableSt
163164 * @param id - Note identifier got from composable argument
164165 */
165166 async function load ( id : NoteId ) : Promise < void > {
166- /**
167- * @todo try-catch domain errors
168- */
169- const response = await noteService . getNoteById ( id ) ;
170-
171- note . value = response . note ;
172- canEdit . value = response . accessRights . canEdit ;
173- noteTools . value = response . tools ;
174- parentNote . value = response . parentNote ;
167+ try {
168+ const response = await noteService . getNoteById ( id ) ;
169+
170+ note . value = response . note ;
171+ canEdit . value = response . accessRights . canEdit ;
172+ noteTools . value = response . tools ;
173+ parentNote . value = response . parentNote ;
174+ } catch ( error ) {
175+ deleteOpenedPageByUrl ( route . path ) ;
176+ if ( error instanceof DomainError ) {
177+ void router . push ( `/error/${ error . statusCode } ` ) ;
178+ } else {
179+ void router . push ( '/error/500' ) ;
180+ }
181+ }
175182 }
176183
177184 /**
0 commit comments