mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 14:32:08 +08:00
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
const { isValidJSValue } = require('graphql');
|
|
|
|
module.exports = {
|
|
NotificationSettings: {
|
|
digestFrequency: {
|
|
// This hook will swap out the digest frequency with `NONE` in the event
|
|
// that an org had a digest plugin enabled and later switched it off. This
|
|
// will force users that have previously had a digested option enabled to
|
|
// get notifications immediately until they update their frequency
|
|
// options.
|
|
post: async (settings, args, ctx, { schema }, frequency) => {
|
|
try {
|
|
// Validate that the type is correct.
|
|
const errors = isValidJSValue(
|
|
frequency,
|
|
schema.getType('DIGEST_FREQUENCY')
|
|
);
|
|
if (errors && errors.length > 0) {
|
|
ctx.log.info(
|
|
{ frequency },
|
|
'invalid frequency, swapping with `NONE`, plugin likely disabled'
|
|
);
|
|
// Fallback to 'NONE' if the digest value has an error.
|
|
frequency = 'NONE';
|
|
}
|
|
} catch (err) {
|
|
ctx.log.error({ err }, 'could not check if the type was valid');
|
|
|
|
// Fallback to 'NONE' if we couldn't validate the value.
|
|
frequency = 'NONE';
|
|
}
|
|
|
|
return frequency;
|
|
},
|
|
},
|
|
},
|
|
};
|