37 lines
796 B
TypeScript

import type { DocumentsApi } from './documents.api';
import { Menu } from './menu.models';
import {
createMenuItems,
getApiSection,
getBasicSection,
getDeepDiveSection,
} from './menu.utils';
export class MenuApi {
private menuCache: Menu | null = null;
constructor(private readonly documentsApi: DocumentsApi) {}
getMenu(): Menu {
let menu = this.menuCache;
if (!menu) {
const items = createMenuItems(this.documentsApi.getDocuments());
if (items) {
menu = {
sections: [
getBasicSection(items),
getDeepDiveSection(items),
getApiSection(items),
],
};
} else {
throw new Error(`Cannot find any documents`);
}
this.menuCache = menu;
}
return menu;
}
}