// home.js // Copyright (C) 2024 DTP Technologies, LLC // All Rights Reserved 'use strict'; import express from 'express'; import { SiteController } from '../../lib/site-controller.js'; export default class HomeController extends SiteController { static get name ( ) { return 'HomeController'; } static get slug ( ) { return 'home'; } static create (dtp) { const instance = new HomeController(dtp); return instance; } constructor (dtp) { super(dtp, HomeController.slug); this.dtp = dtp; } async start ( ) { const router = express.Router(); this.dtp.app.use('/', router); router.get('/', this.getHome.bind(this)); return router; } async getHome (req, res, next) { const { chat: chatService } = this.dtp.services; try { if (!req.user) { return res.redirect('/welcome'); } res.locals.currentView = 'home'; res.locals.pageDescription = 'DTP Chat Home'; res.locals.ownerRooms = await chatService.getRoomsForOwner(req.user); res.locals.pagination = this.getPaginationParameters(req, 10); res.locals.memberRooms = await chatService.getRoomsForMember(req.user, res.locals.pagination); res.locals.memberRooms = res.locals.memberRooms.filter((room) => !room.owner._id.equals(req.user._id)); res.render('home'); } catch (error) { return next(error); } } }