1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-08 19:08:34 +03:00

Intern rel_type for relations

In anticipation of relations being quite frequently used, we should intern
strings of common fields, such as `rel_type`.
This commit is contained in:
J. Ryan Stinnett
2019-05-08 17:41:06 +01:00
parent ee8a4698a9
commit c1c81df4de

View File

@@ -50,6 +50,12 @@ module.exports.EventStatus = {
}; };
const interns = {}; const interns = {};
function intern(str) {
if (!interns[str]) {
interns[str] = str;
}
return interns[str];
}
/** /**
* Construct a Matrix Event object * Construct a Matrix Event object
@@ -87,20 +93,25 @@ module.exports.MatrixEvent = function MatrixEvent(
if (!event[prop]) { if (!event[prop]) {
return; return;
} }
if (!interns[event[prop]]) { event[prop] = intern(event[prop]);
interns[event[prop]] = event[prop];
}
event[prop] = interns[event[prop]];
}); });
["membership", "avatar_url", "displayname"].forEach((prop) => { ["membership", "avatar_url", "displayname"].forEach((prop) => {
if (!event.content || !event.content[prop]) { if (!event.content || !event.content[prop]) {
return; return;
} }
if (!interns[event.content[prop]]) { event.content[prop] = intern(event.content[prop]);
interns[event.content[prop]] = event.content[prop]; });
["rel_type"].forEach((prop) => {
if (
!event.content ||
!event.content["m.relates_to"] ||
!event.content["m.relates_to"][prop]
) {
return;
} }
event.content[prop] = interns[event.content[prop]]; event.content["m.relates_to"][prop] = intern(event.content["m.relates_to"][prop]);
}); });
this.event = event || {}; this.event = event || {};