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

@@ -42,6 +42,7 @@ SocketAdmin.analytics = {};
SocketAdmin.logs = {};
SocketAdmin.errors = {};
SocketAdmin.uploads = {};
SocketAdmin.digest = {};
SocketAdmin.before = async function (socket, method) {
const isAdmin = await user.isAdministrator(socket.uid);
@@ -352,4 +353,22 @@ SocketAdmin.uploads.delete = function (socket, pathToFile, callback) {
fs.unlink(pathToFile, callback);
};
SocketAdmin.digest.resend = async (socket, data) => {
const uid = data.uid;
const interval = data.action.startsWith('resend-') ? data.action.slice(7) : await userDigest.getUsersInterval(uid);
if (!interval && meta.config.dailyDigestFreq === 'off') {
throw new Error('[[error:digest-not-enabled]]');
}
if (uid) {
await userDigest.execute({
interval: interval || meta.config.dailyDigestFreq,
subscribers: [uid],
});
} else {
await userDigest.execute({ interval: interval });
}
};
require('../promisify')(SocketAdmin);