matrix-react-sdk
Version:
SDK for matrix.org using React
95 lines (91 loc) • 9.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NotificationUtils = void 0;
var _matrix = require("matrix-js-sdk/src/matrix");
/*
Copyright 2024 New Vector Ltd.
Copyright 2016-2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
class NotificationUtils {
// Encodes a dictionary of {
// "notify": true/false,
// "sound": string or undefined,
// "highlight: true/false,
// }
// to a list of push actions.
static encodeActions(action) {
const notify = action.notify;
const sound = action.sound;
const highlight = action.highlight;
if (notify) {
const actions = [_matrix.PushRuleActionName.Notify];
if (sound) {
actions.push({
set_tweak: "sound",
value: sound
});
}
if (highlight) {
actions.push({
set_tweak: "highlight"
});
} else {
actions.push({
set_tweak: "highlight",
value: false
});
}
return actions;
} else {
return [_matrix.PushRuleActionName.DontNotify];
}
}
// Decode a list of actions to a dictionary of {
// "notify": true/false,
// "sound": string or undefined,
// "highlight: true/false,
// }
// If the actions couldn't be decoded then returns null.
static decodeActions(actions) {
let notify = false;
let sound;
let highlight = false;
for (const action of actions) {
if (action === _matrix.PushRuleActionName.Notify) {
notify = true;
} else if (action === _matrix.PushRuleActionName.DontNotify) {
notify = false;
} else if (typeof action === "object") {
if (action.set_tweak === "sound") {
sound = action.value;
} else if (action.set_tweak === "highlight") {
highlight = action.value;
} else {
// We don't understand this kind of tweak, so give up.
return null;
}
} else {
// We don't understand this kind of action, so give up.
return null;
}
}
if (highlight === undefined) {
// If a highlight tweak is missing a value then it defaults to true.
highlight = true;
}
const result = {
notify,
highlight
};
if (sound !== undefined) {
result.sound = sound;
}
return result;
}
}
exports.NotificationUtils = NotificationUtils;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIk5vdGlmaWNhdGlvblV0aWxzIiwiZW5jb2RlQWN0aW9ucyIsImFjdGlvbiIsIm5vdGlmeSIsInNvdW5kIiwiaGlnaGxpZ2h0IiwiYWN0aW9ucyIsIlB1c2hSdWxlQWN0aW9uTmFtZSIsIk5vdGlmeSIsInB1c2giLCJzZXRfdHdlYWsiLCJ2YWx1ZSIsIkRvbnROb3RpZnkiLCJkZWNvZGVBY3Rpb25zIiwidW5kZWZpbmVkIiwicmVzdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE2LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgUHVzaFJ1bGVBY3Rpb24sIFB1c2hSdWxlQWN0aW9uTmFtZSwgVHdlYWtIaWdobGlnaHQsIFR3ZWFrU291bmQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaFJ1bGVBY3Rpb25zIHtcbiAgICBub3RpZnk6IGJvb2xlYW47XG4gICAgc291bmQ/OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblV0aWxzIHtcbiAgICAvLyBFbmNvZGVzIGEgZGljdGlvbmFyeSBvZiB7XG4gICAgLy8gICBcIm5vdGlmeVwiOiB0cnVlL2ZhbHNlLFxuICAgIC8vICAgXCJzb3VuZFwiOiBzdHJpbmcgb3IgdW5kZWZpbmVkLFxuICAgIC8vICAgXCJoaWdobGlnaHQ6IHRydWUvZmFsc2UsXG4gICAgLy8gfVxuICAgIC8vIHRvIGEgbGlzdCBvZiBwdXNoIGFjdGlvbnMuXG4gICAgcHVibGljIHN0YXRpYyBlbmNvZGVBY3Rpb25zKGFjdGlvbjogUHVzaFJ1bGVBY3Rpb25zKTogUHVzaFJ1bGVBY3Rpb25bXSB7XG4gICAgICAgIGNvbnN0IG5vdGlmeSA9IGFjdGlvbi5ub3RpZnk7XG4gICAgICAgIGNvbnN0IHNvdW5kID0gYWN0aW9uLnNvdW5kO1xuICAgICAgICBjb25zdCBoaWdobGlnaHQgPSBhY3Rpb24uaGlnaGxpZ2h0O1xuICAgICAgICBpZiAobm90aWZ5KSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zOiBQdXNoUnVsZUFjdGlvbltdID0gW1B1c2hSdWxlQWN0aW9uTmFtZS5Ob3RpZnldO1xuICAgICAgICAgICAgaWYgKHNvdW5kKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgc2V0X3R3ZWFrOiBcInNvdW5kXCIsIHZhbHVlOiBzb3VuZCB9IGFzIFR3ZWFrU291bmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhpZ2hsaWdodCkge1xuICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7IHNldF90d2VhazogXCJoaWdobGlnaHRcIiB9IGFzIFR3ZWFrSGlnaGxpZ2h0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgc2V0X3R3ZWFrOiBcImhpZ2hsaWdodFwiLCB2YWx1ZTogZmFsc2UgfSBhcyBUd2Vha0hpZ2hsaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbUHVzaFJ1bGVBY3Rpb25OYW1lLkRvbnROb3RpZnldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjb2RlIGEgbGlzdCBvZiBhY3Rpb25zIHRvIGEgZGljdGlvbmFyeSBvZiB7XG4gICAgLy8gICBcIm5vdGlmeVwiOiB0cnVlL2ZhbHNlLFxuICAgIC8vICAgXCJzb3VuZFwiOiBzdHJpbmcgb3IgdW5kZWZpbmVkLFxuICAgIC8vICAgXCJoaWdobGlnaHQ6IHRydWUvZmFsc2UsXG4gICAgLy8gfVxuICAgIC8vIElmIHRoZSBhY3Rpb25zIGNvdWxkbid0IGJlIGRlY29kZWQgdGhlbiByZXR1cm5zIG51bGwuXG4gICAgcHVibGljIHN0YXRpYyBkZWNvZGVBY3Rpb25zKGFjdGlvbnM6IFB1c2hSdWxlQWN0aW9uW10pOiBQdXNoUnVsZUFjdGlvbnMgfCBudWxsIHtcbiAgICAgICAgbGV0IG5vdGlmeSA9IGZhbHNlO1xuICAgICAgICBsZXQgc291bmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGhpZ2hsaWdodDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gPT09IFB1c2hSdWxlQWN0aW9uTmFtZS5Ob3RpZnkpIHtcbiAgICAgICAgICAgICAgICBub3RpZnkgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09IFB1c2hSdWxlQWN0aW9uTmFtZS5Eb250Tm90aWZ5KSB7XG4gICAgICAgICAgICAgICAgbm90aWZ5ID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLnNldF90d2VhayA9PT0gXCJzb3VuZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvdW5kID0gYWN0aW9uLnZhbHVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnNldF90d2VhayA9PT0gXCJoaWdobGlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQgPSBhY3Rpb24udmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGtpbmQgb2YgdHdlYWssIHNvIGdpdmUgdXAuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGtpbmQgb2YgYWN0aW9uLCBzbyBnaXZlIHVwLlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhpZ2hsaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBJZiBhIGhpZ2hsaWdodCB0d2VhayBpcyBtaXNzaW5nIGEgdmFsdWUgdGhlbiBpdCBkZWZhdWx0cyB0byB0cnVlLlxuICAgICAgICAgICAgaGlnaGxpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogUHVzaFJ1bGVBY3Rpb25zID0geyBub3RpZnksIGhpZ2hsaWdodCB9O1xuICAgICAgICBpZiAoc291bmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzdWx0LnNvdW5kID0gc291bmQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQVVPLE1BQU1DLGlCQUFpQixDQUFDO0VBQzNCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9BQWNDLGFBQWFBLENBQUNDLE1BQXVCLEVBQW9CO0lBQ25FLE1BQU1DLE1BQU0sR0FBR0QsTUFBTSxDQUFDQyxNQUFNO0lBQzVCLE1BQU1DLEtBQUssR0FBR0YsTUFBTSxDQUFDRSxLQUFLO0lBQzFCLE1BQU1DLFNBQVMsR0FBR0gsTUFBTSxDQUFDRyxTQUFTO0lBQ2xDLElBQUlGLE1BQU0sRUFBRTtNQUNSLE1BQU1HLE9BQXlCLEdBQUcsQ0FBQ0MsMEJBQWtCLENBQUNDLE1BQU0sQ0FBQztNQUM3RCxJQUFJSixLQUFLLEVBQUU7UUFDUEUsT0FBTyxDQUFDRyxJQUFJLENBQUM7VUFBRUMsU0FBUyxFQUFFLE9BQU87VUFBRUMsS0FBSyxFQUFFUDtRQUFNLENBQWUsQ0FBQztNQUNwRTtNQUNBLElBQUlDLFNBQVMsRUFBRTtRQUNYQyxPQUFPLENBQUNHLElBQUksQ0FBQztVQUFFQyxTQUFTLEVBQUU7UUFBWSxDQUFtQixDQUFDO01BQzlELENBQUMsTUFBTTtRQUNISixPQUFPLENBQUNHLElBQUksQ0FBQztVQUFFQyxTQUFTLEVBQUUsV0FBVztVQUFFQyxLQUFLLEVBQUU7UUFBTSxDQUFtQixDQUFDO01BQzVFO01BQ0EsT0FBT0wsT0FBTztJQUNsQixDQUFDLE1BQU07TUFDSCxPQUFPLENBQUNDLDBCQUFrQixDQUFDSyxVQUFVLENBQUM7SUFDMUM7RUFDSjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPQUFjQyxhQUFhQSxDQUFDUCxPQUF5QixFQUEwQjtJQUMzRSxJQUFJSCxNQUFNLEdBQUcsS0FBSztJQUNsQixJQUFJQyxLQUF5QjtJQUM3QixJQUFJQyxTQUE4QixHQUFHLEtBQUs7SUFFMUMsS0FBSyxNQUFNSCxNQUFNLElBQUlJLE9BQU8sRUFBRTtNQUMxQixJQUFJSixNQUFNLEtBQUtLLDBCQUFrQixDQUFDQyxNQUFNLEVBQUU7UUFDdENMLE1BQU0sR0FBRyxJQUFJO01BQ2pCLENBQUMsTUFBTSxJQUFJRCxNQUFNLEtBQUtLLDBCQUFrQixDQUFDSyxVQUFVLEVBQUU7UUFDakRULE1BQU0sR0FBRyxLQUFLO01BQ2xCLENBQUMsTUFBTSxJQUFJLE9BQU9ELE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDbkMsSUFBSUEsTUFBTSxDQUFDUSxTQUFTLEtBQUssT0FBTyxFQUFFO1VBQzlCTixLQUFLLEdBQUdGLE1BQU0sQ0FBQ1MsS0FBSztRQUN4QixDQUFDLE1BQU0sSUFBSVQsTUFBTSxDQUFDUSxTQUFTLEtBQUssV0FBVyxFQUFFO1VBQ3pDTCxTQUFTLEdBQUdILE1BQU0sQ0FBQ1MsS0FBSztRQUM1QixDQUFDLE1BQU07VUFDSDtVQUNBLE9BQU8sSUFBSTtRQUNmO01BQ0osQ0FBQyxNQUFNO1FBQ0g7UUFDQSxPQUFPLElBQUk7TUFDZjtJQUNKO0lBRUEsSUFBSU4sU0FBUyxLQUFLUyxTQUFTLEVBQUU7TUFDekI7TUFDQVQsU0FBUyxHQUFHLElBQUk7SUFDcEI7SUFFQSxNQUFNVSxNQUF1QixHQUFHO01BQUVaLE1BQU07TUFBRUU7SUFBVSxDQUFDO0lBQ3JELElBQUlELEtBQUssS0FBS1UsU0FBUyxFQUFFO01BQ3JCQyxNQUFNLENBQUNYLEtBQUssR0FBR0EsS0FBSztJQUN4QjtJQUNBLE9BQU9XLE1BQU07RUFDakI7QUFDSjtBQUFDQyxPQUFBLENBQUFoQixpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==