@magicbell/core
Version:
Official MagicBell API wrapper
24 lines • 1 kB
JavaScript
import eq from 'lodash/eq.js';
import has from 'lodash/has.js';
import keys from 'lodash/keys.js';
/**
* Check if a notification satisfies all conditions of the given `context`. It
* Uses equal to compare.
*
* @param notification Notification to test
* @param context Set of rules to test the notification against
* @param comparator Function used to compare notification attributes and context values
*/
export function compareAttributeStrategy(notification, context, comparator = eq) {
const diff = [];
keys(context).forEach((attr) => {
const conditionValue = context[attr];
if ((attr === 'read' && !comparator(notification.isRead, conditionValue)) ||
(attr === 'seen' && !comparator(notification.isSeen, conditionValue)) ||
(has(notification, attr) && !comparator(notification[attr], conditionValue))) {
diff.push(attr);
}
});
return { result: diff.length === 0, delta: diff };
}
//# sourceMappingURL=strategy.js.map