UNPKG

@magicbell/core

Version:

Official MagicBell API wrapper

28 lines 1.32 kB
"use strict"; 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