feat: wip, better digest handling (+ eventual digest resend logic) (#7995)

* feat: wip, better digest handling (+ eventual digest resend logic)

- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid

* feat: continuing work on digest tools

- Added ACP page to view digest settings and delivery times per user

* feat: added paginator and stub buttons for resending digest

* feat: wrapping up digest revamp

- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval

* fix: minor cleanup

* fix: #8010 and some style suggestions from baris

* fix: resolve confusing comment
This commit is contained in:
Julian Lam
2019-11-02 13:11:02 -04:00
committed by GitHub
parent e3c9dafa08
commit 645d647248
12 changed files with 296 additions and 16 deletions

View File

@@ -9,6 +9,7 @@ var adminController = {
postQueue: require('./admin/postqueue'),
blacklist: require('./admin/blacklist'),
groups: require('./admin/groups'),
digest: require('./admin/digest'),
appearance: require('./admin/appearance'),
extend: {
widgets: require('./admin/widgets'),

View File

@@ -0,0 +1,23 @@
'use strict';
const meta = require('../../meta');
const digest = require('../../user/digest');
const pagination = require('../../pagination');
const digestController = module.exports;
digestController.get = async function (req, res) {
const page = parseInt(req.query.page, 10) || 1;
const resultsPerPage = 50;
const start = Math.max(0, page - 1) * resultsPerPage;
const stop = start + resultsPerPage - 1;
const delivery = await digest.getDeliveryTimes(start, stop);
const pageCount = Math.ceil(delivery.count / resultsPerPage);
res.render('admin/manage/digest', {
title: '[[admin/menu:manage/digest]]',
delivery: delivery.users,
default: meta.config.dailyDigestFreq,
pagination: pagination.create(page, pageCount),
});
};