DTP Base provides a scalable and secure Node.js application development harness ready for production service.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

57 lines
1.5 KiB

// 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.locals.invites = await chatService.getInvitationsForUser(req.user, { skip: 0, cpp: 5 });
res.render('home');
} catch (error) {
return next(error);
}
}
}