Implement changes to MSC2285 (private read receipts) (#7993)
This commit is contained in:
parent
eca8494c66
commit
99543a7858
4 changed files with 16 additions and 9 deletions
|
@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { ReceiptType } from "matrix-js-sdk/src/@types/read_receipts";
|
||||
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
||||
|
||||
/**
|
||||
|
@ -29,9 +30,8 @@ export function findReadReceiptFromUserId(receiptEvent: MatrixEvent, userId: str
|
|||
const receiptKeys = Object.keys(receiptEvent.getContent());
|
||||
for (let i = 0; i < receiptKeys.length; ++i) {
|
||||
const rcpt = receiptEvent.getContent()[receiptKeys[i]];
|
||||
if (rcpt['m.read'] && rcpt['m.read'][userId]) {
|
||||
return rcpt;
|
||||
}
|
||||
if (rcpt[ReceiptType.Read]?.[userId]) return rcpt;
|
||||
if (rcpt[ReceiptType.ReadPrivate]?.[userId]) return rcpt;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||
|
||||
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||
import { ReceiptType } from "matrix-js-sdk/src/@types/read_receipts";
|
||||
|
||||
/**
|
||||
* Determines if a read receipt update event includes the client's own user.
|
||||
|
@ -26,8 +27,12 @@ import { MatrixClient } from "matrix-js-sdk/src/client";
|
|||
export function readReceiptChangeIsFor(event: MatrixEvent, client: MatrixClient): boolean {
|
||||
const myUserId = client.getUserId();
|
||||
for (const eventId of Object.keys(event.getContent())) {
|
||||
const receiptUsers = Object.keys(event.getContent()[eventId]['m.read'] || {});
|
||||
if (receiptUsers.includes(myUserId)) {
|
||||
const readReceiptUsers = Object.keys(event.getContent()[eventId][ReceiptType.Read] || {});
|
||||
if (readReceiptUsers.includes(myUserId)) {
|
||||
return true;
|
||||
}
|
||||
const readPrivateReceiptUsers = Object.keys(event.getContent()[eventId][ReceiptType.ReadPrivate] || {});
|
||||
if (readPrivateReceiptUsers.includes(myUserId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue