You've already forked matrix-js-sdk
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:
@@ -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 || {};
|
||||||
|
|||||||
Reference in New Issue
Block a user