matrix-react-sdk
Version:
SDK for matrix.org using React
66 lines (60 loc) • 7.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getThreepidsWithBindStatus = getThreepidsWithBindStatus;
var _matrix = require("matrix-js-sdk/src/matrix");
var _IdentityAuthClient = _interopRequireDefault(require("./IdentityAuthClient"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 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.
*/
async function getThreepidsWithBindStatus(client, filterMedium) {
const userId = client.getUserId();
let {
threepids
} = await client.getThreePids();
if (filterMedium) {
threepids = threepids.filter(a => a.medium === filterMedium);
}
// Check bind status assuming we have an IS and terms are agreed
if (threepids.length > 0 && !!client.getIdentityServerUrl()) {
try {
const authClient = new _IdentityAuthClient.default();
const identityAccessToken = await authClient.getAccessToken({
check: false
});
if (!identityAccessToken) {
throw new Error("No identity access token found");
}
// Restructure for lookup query
const query = threepids.map(({
medium,
address
}) => [medium, address]);
const lookupResults = await client.bulkLookupThreePids(query, identityAccessToken);
// Record which are already bound
for (const [medium, address, mxid] of lookupResults.threepids) {
if (mxid !== userId) {
continue;
}
if (filterMedium && medium !== filterMedium) {
continue;
}
const threepid = threepids.find(e => e.medium === medium && e.address === address);
if (!threepid) continue;
threepid.bound = true;
}
} catch (e) {
// Ignore terms errors here and assume other flows handle this
if (!(e instanceof _matrix.MatrixError) || e.errcode !== "M_TERMS_NOT_SIGNED") {
throw e;
}
}
}
return threepids;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl9JZGVudGl0eUF1dGhDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZ2V0VGhyZWVwaWRzV2l0aEJpbmRTdGF0dXMiLCJjbGllbnQiLCJmaWx0ZXJNZWRpdW0iLCJ1c2VySWQiLCJnZXRVc2VySWQiLCJ0aHJlZXBpZHMiLCJnZXRUaHJlZVBpZHMiLCJmaWx0ZXIiLCJhIiwibWVkaXVtIiwibGVuZ3RoIiwiZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwiLCJhdXRoQ2xpZW50IiwiSWRlbnRpdHlBdXRoQ2xpZW50IiwiaWRlbnRpdHlBY2Nlc3NUb2tlbiIsImdldEFjY2Vzc1Rva2VuIiwiY2hlY2siLCJFcnJvciIsInF1ZXJ5IiwibWFwIiwiYWRkcmVzcyIsImxvb2t1cFJlc3VsdHMiLCJidWxrTG9va3VwVGhyZWVQaWRzIiwibXhpZCIsInRocmVlcGlkIiwiZmluZCIsImUiLCJib3VuZCIsIk1hdHJpeEVycm9yIiwiZXJyY29kZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ib3VuZFRocmVlcGlkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBJVGhyZWVwaWQsIFRocmVlcGlkTWVkaXVtLCBNYXRyaXhDbGllbnQsIE1hdHJpeEVycm9yIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgSWRlbnRpdHlBdXRoQ2xpZW50IGZyb20gXCIuL0lkZW50aXR5QXV0aENsaWVudFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VGhyZWVwaWRzV2l0aEJpbmRTdGF0dXMoXG4gICAgY2xpZW50OiBNYXRyaXhDbGllbnQsXG4gICAgZmlsdGVyTWVkaXVtPzogVGhyZWVwaWRNZWRpdW0sXG4pOiBQcm9taXNlPElUaHJlZXBpZFtdPiB7XG4gICAgY29uc3QgdXNlcklkID0gY2xpZW50LmdldFVzZXJJZCgpO1xuXG4gICAgbGV0IHsgdGhyZWVwaWRzIH0gPSBhd2FpdCBjbGllbnQuZ2V0VGhyZWVQaWRzKCk7XG4gICAgaWYgKGZpbHRlck1lZGl1bSkge1xuICAgICAgICB0aHJlZXBpZHMgPSB0aHJlZXBpZHMuZmlsdGVyKChhKSA9PiBhLm1lZGl1bSA9PT0gZmlsdGVyTWVkaXVtKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBiaW5kIHN0YXR1cyBhc3N1bWluZyB3ZSBoYXZlIGFuIElTIGFuZCB0ZXJtcyBhcmUgYWdyZWVkXG4gICAgaWYgKHRocmVlcGlkcy5sZW5ndGggPiAwICYmICEhY2xpZW50LmdldElkZW50aXR5U2VydmVyVXJsKCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhDbGllbnQgPSBuZXcgSWRlbnRpdHlBdXRoQ2xpZW50KCk7XG4gICAgICAgICAgICBjb25zdCBpZGVudGl0eUFjY2Vzc1Rva2VuID0gYXdhaXQgYXV0aENsaWVudC5nZXRBY2Nlc3NUb2tlbih7IGNoZWNrOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmICghaWRlbnRpdHlBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGlkZW50aXR5IGFjY2VzcyB0b2tlbiBmb3VuZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdHJ1Y3R1cmUgZm9yIGxvb2t1cCBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aHJlZXBpZHMubWFwKCh7IG1lZGl1bSwgYWRkcmVzcyB9KTogW3N0cmluZywgc3RyaW5nXSA9PiBbbWVkaXVtLCBhZGRyZXNzXSk7XG4gICAgICAgICAgICBjb25zdCBsb29rdXBSZXN1bHRzID0gYXdhaXQgY2xpZW50LmJ1bGtMb29rdXBUaHJlZVBpZHMocXVlcnksIGlkZW50aXR5QWNjZXNzVG9rZW4pO1xuXG4gICAgICAgICAgICAvLyBSZWNvcmQgd2hpY2ggYXJlIGFscmVhZHkgYm91bmRcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21lZGl1bSwgYWRkcmVzcywgbXhpZF0gb2YgbG9va3VwUmVzdWx0cy50aHJlZXBpZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAobXhpZCAhPT0gdXNlcklkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyTWVkaXVtICYmIG1lZGl1bSAhPT0gZmlsdGVyTWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0aHJlZXBpZCA9IHRocmVlcGlkcy5maW5kKChlKSA9PiBlLm1lZGl1bSA9PT0gbWVkaXVtICYmIGUuYWRkcmVzcyA9PT0gYWRkcmVzcyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aHJlZXBpZCkgY29udGludWU7XG4gICAgICAgICAgICAgICAgdGhyZWVwaWQuYm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdGVybXMgZXJyb3JzIGhlcmUgYW5kIGFzc3VtZSBvdGhlciBmbG93cyBoYW5kbGUgdGhpc1xuICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIE1hdHJpeEVycm9yKSB8fCBlLmVycmNvZGUgIT09IFwiTV9URVJNU19OT1RfU0lHTkVEXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocmVlcGlkcztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLG1CQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNTyxlQUFlRywwQkFBMEJBLENBQzVDQyxNQUFvQixFQUNwQkMsWUFBNkIsRUFDVDtFQUNwQixNQUFNQyxNQUFNLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUyxDQUFDLENBQUM7RUFFakMsSUFBSTtJQUFFQztFQUFVLENBQUMsR0FBRyxNQUFNSixNQUFNLENBQUNLLFlBQVksQ0FBQyxDQUFDO0VBQy9DLElBQUlKLFlBQVksRUFBRTtJQUNkRyxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0UsTUFBTSxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsTUFBTSxLQUFLUCxZQUFZLENBQUM7RUFDbEU7O0VBRUE7RUFDQSxJQUFJRyxTQUFTLENBQUNLLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDVCxNQUFNLENBQUNVLG9CQUFvQixDQUFDLENBQUMsRUFBRTtJQUN6RCxJQUFJO01BQ0EsTUFBTUMsVUFBVSxHQUFHLElBQUlDLDJCQUFrQixDQUFDLENBQUM7TUFDM0MsTUFBTUMsbUJBQW1CLEdBQUcsTUFBTUYsVUFBVSxDQUFDRyxjQUFjLENBQUM7UUFBRUMsS0FBSyxFQUFFO01BQU0sQ0FBQyxDQUFDO01BQzdFLElBQUksQ0FBQ0YsbUJBQW1CLEVBQUU7UUFDdEIsTUFBTSxJQUFJRyxLQUFLLENBQUMsZ0NBQWdDLENBQUM7TUFDckQ7O01BRUE7TUFDQSxNQUFNQyxLQUFLLEdBQUdiLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDLENBQUM7UUFBRVYsTUFBTTtRQUFFVztNQUFRLENBQUMsS0FBdUIsQ0FBQ1gsTUFBTSxFQUFFVyxPQUFPLENBQUMsQ0FBQztNQUN6RixNQUFNQyxhQUFhLEdBQUcsTUFBTXBCLE1BQU0sQ0FBQ3FCLG1CQUFtQixDQUFDSixLQUFLLEVBQUVKLG1CQUFtQixDQUFDOztNQUVsRjtNQUNBLEtBQUssTUFBTSxDQUFDTCxNQUFNLEVBQUVXLE9BQU8sRUFBRUcsSUFBSSxDQUFDLElBQUlGLGFBQWEsQ0FBQ2hCLFNBQVMsRUFBRTtRQUMzRCxJQUFJa0IsSUFBSSxLQUFLcEIsTUFBTSxFQUFFO1VBQ2pCO1FBQ0o7UUFDQSxJQUFJRCxZQUFZLElBQUlPLE1BQU0sS0FBS1AsWUFBWSxFQUFFO1VBQ3pDO1FBQ0o7UUFDQSxNQUFNc0IsUUFBUSxHQUFHbkIsU0FBUyxDQUFDb0IsSUFBSSxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ2pCLE1BQU0sS0FBS0EsTUFBTSxJQUFJaUIsQ0FBQyxDQUFDTixPQUFPLEtBQUtBLE9BQU8sQ0FBQztRQUNwRixJQUFJLENBQUNJLFFBQVEsRUFBRTtRQUNmQSxRQUFRLENBQUNHLEtBQUssR0FBRyxJQUFJO01BQ3pCO0lBQ0osQ0FBQyxDQUFDLE9BQU9ELENBQUMsRUFBRTtNQUNSO01BQ0EsSUFBSSxFQUFFQSxDQUFDLFlBQVlFLG1CQUFXLENBQUMsSUFBSUYsQ0FBQyxDQUFDRyxPQUFPLEtBQUssb0JBQW9CLEVBQUU7UUFDbkUsTUFBTUgsQ0FBQztNQUNYO0lBQ0o7RUFDSjtFQUVBLE9BQU9yQixTQUFTO0FBQ3BCIiwiaWdub3JlTGlzdCI6W119