UNPKG

agenda-paper

Version:

Show your daily agenda on an ePaper display

64 lines (49 loc) 1.66 kB
import { NextFunction, Request, Response } from 'express'; import { APRequest } from '../requests-types'; import { CONFIG_FOLDER } from '../constants'; import { doesFileExist, readJsonFile, writeJsonToFile } from '../helpers/file.helper'; export interface Settings { showLocation?: boolean; showFreeEvents?: boolean; maskPrivateEvents?: boolean; } const SETTINGS_FILE_NAME = `${CONFIG_FOLDER}/settings.json`; const INITIAL_SETTINGS: Settings = { showLocation: false, showFreeEvents: false, maskPrivateEvents: true, }; export const loadSettingsFromFile = () => async (req: Request, res: Response, next: NextFunction) => { const { payload } = <APRequest>req; let settings; if (doesFileExist(SETTINGS_FILE_NAME)) { settings = readJsonFile(SETTINGS_FILE_NAME); } else { settings = INITIAL_SETTINGS; writeJsonToFile(SETTINGS_FILE_NAME, settings); } payload.settings = settings; next(); }; export const extractSettingsFromBody = () => async (req: Request, res: Response, next: NextFunction) => { const { body, payload } = <APRequest>req; const { showLocation, showFreeEvents, maskPrivateEvents } = <Settings>body; const settings: Settings = { showLocation, showFreeEvents, maskPrivateEvents, }; payload.settings = settings; next(); }; export const saveSettingsToFile = () => async (req: Request, res: Response, next: NextFunction) => { const { payload } = <APRequest>req; const { settings } = <{ settings: Settings }>payload; try { writeJsonToFile(SETTINGS_FILE_NAME, settings); } catch (e) { console.error(e); return res.status(500).send(); } return next(); };