Rewrite slide controller to TypeScript

Before this patch the non-TypeScript version of the slide mode causes
problems with the TypeScript code. Therefore, in order to get things
working, this patch does minimalistic changes to the slide mode
controller to bring it into TypeScript convention. And unbreak slide
mode. Further changes are required, but this gets slide mode back to a
usable state.

Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
This commit is contained in:
Sheogorath 2020-02-26 14:21:00 +01:00
parent a3f5dcb4c7
commit 37923d11f8
No known key found for this signature in database
GPG key ID: C9B1C80737B9CE18
3 changed files with 54 additions and 48 deletions

51
lib/web/note/slide.ts Normal file
View file

@ -0,0 +1,51 @@
import {NextFunction, Response} from "express";
import {NoteUtils} from "./util";
import models from '../../models';
import errors from '../../errors';
import logger from '../../logger';
import config from '../../config';
export module SlideController{
export function publishSlideActions (req: any, res: Response, next: NextFunction) {
NoteUtils.findNote(req, res, function (note) {
const action = req.params.action
if (action === 'edit') {
res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)) + '?both')
} else { res.redirect(config.serverURL + '/p/' + note.shortid) }
})
}
export function showPublishSlide(req: any, res: Response, next: NextFunction) {
const include = [{
model: models.User,
as: 'owner'
}, {
model: models.User,
as: 'lastchangeuser'
}]
NoteUtils.findNote(req, res, function (note) {
// force to use short id
const shortid = req.params.shortid
if ((note.alias && shortid !== note.alias) || (!note.alias && shortid !== note.shortid)) {
return res.redirect(config.serverURL + '/p/' + (note.alias || note.shortid))
}
note.increment('viewcount').then(function (note) {
if (!note) {
return errors.errorNotFound(res)
}
NoteUtils.getPublishData(req, res, note, (data) => {
res.set({
'Cache-Control': 'private' // only cache by client
})
return res.render('slide.ejs', data)
})
}).catch(function (err) {
logger.error(err)
return errors.errorInternalError(res)
})
}, include)
}
}