@magicbell/core
Version:
Official MagicBell API wrapper
28 lines • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.compareAttributeStrategy = compareAttributeStrategy;
const tslib_1 = require("tslib");
const eq_js_1 = tslib_1.__importDefault(require("lodash/eq.js"));
const has_js_1 = tslib_1.__importDefault(require("lodash/has.js"));
const keys_js_1 = tslib_1.__importDefault(require("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
*/
function compareAttributeStrategy(notification, context, comparator = eq_js_1.default) {
const diff = [];
(0, keys_js_1.default)(context).forEach((attr) => {
const conditionValue = context[attr];
if ((attr === 'read' && !comparator(notification.isRead, conditionValue)) ||
(attr === 'seen' && !comparator(notification.isSeen, conditionValue)) ||
((0, has_js_1.default)(notification, attr) && !comparator(notification[attr], conditionValue))) {
diff.push(attr);
}
});
return { result: diff.length === 0, delta: diff };
}
//# sourceMappingURL=strategy.js.map