matrix-react-sdk
Version:
SDK for matrix.org using React
89 lines (81 loc) • 11.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.resolveThreePids = exports.lookupThreePids = exports.lookupThreePidProfiles = void 0;
var _directMessages = require("./direct-messages");
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 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.
*/
/**
* Tries to resolve the ThreepidMembers to DirectoryMembers.
*
* @param members - List of members to resolve
* @returns {Promise<Member[]>} Same list with ThreepidMembers replaced by DirectoryMembers if succesfully resolved
*/
const resolveThreePids = async (members, client) => {
const threePidMembers = members.filter(m => m instanceof _directMessages.ThreepidMember);
// Nothing to do here
if (threePidMembers.length === 0) return members;
const lookedUpProfiles = await lookupThreePidProfiles(threePidMembers, client);
return members.map(member => {
if (!(member instanceof _directMessages.ThreepidMember)) return member;
const lookedUpProfile = lookedUpProfiles.find(r => r.threePidId === member.userId);
// No profile found for this member; use the ThreepidMember.
if (!lookedUpProfile) return member;
return new _directMessages.DirectoryMember({
user_id: lookedUpProfile.mxid,
avatar_url: lookedUpProfile?.profile?.avatar_url,
display_name: lookedUpProfile?.profile?.displayname
});
});
};
/**
* Tries to look up the ThreepidMembers.
*
* @param threePids - List of 3rd-party members to look up
* @returns List of resolved 3rd-party IDs with their MXIDs
*/
exports.resolveThreePids = resolveThreePids;
const lookupThreePids = async (threePids, client) => {
// No identity server configured. Unable to resolve any 3rd party member.
if (!client.identityServer) return [];
// Nothing we can search, return null
if (threePids.length === 0) return [];
const token = await client.identityServer.getAccessToken();
if (!token) return [];
const lookedUp = await client.bulkLookupThreePids(threePids.map(t => [t.isEmail ? "email" : "msisdn", t.userId]), token);
return lookedUp.threepids.map(([_threePidType, threePidId, mxid]) => ({
threePidId,
mxid
}));
};
/**
* Tries to look up the MXIDs and profiles of the ThreepidMembers.
*
* @param threePids - List of 3rd-prty members to look up
* @returns List of resolved 3rd-party members with their MXIDs and profile (if found)
*/
exports.lookupThreePids = lookupThreePids;
const lookupThreePidProfiles = async (threePids, client) => {
const lookedUpThreePids = await lookupThreePids(threePids, client);
const promises = lookedUpThreePids.map(async t => {
let profile = null;
try {
profile = await client.getProfileInfo(t.mxid);
} catch {
// ignore any lookup error
}
return {
threePidId: t.threePidId,
mxid: t.mxid,
profile
};
});
return Promise.all(promises);
};
exports.lookupThreePidProfiles = lookupThreePidProfiles;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGlyZWN0TWVzc2FnZXMiLCJyZXF1aXJlIiwicmVzb2x2ZVRocmVlUGlkcyIsIm1lbWJlcnMiLCJjbGllbnQiLCJ0aHJlZVBpZE1lbWJlcnMiLCJmaWx0ZXIiLCJtIiwiVGhyZWVwaWRNZW1iZXIiLCJsZW5ndGgiLCJsb29rZWRVcFByb2ZpbGVzIiwibG9va3VwVGhyZWVQaWRQcm9maWxlcyIsIm1hcCIsIm1lbWJlciIsImxvb2tlZFVwUHJvZmlsZSIsImZpbmQiLCJyIiwidGhyZWVQaWRJZCIsInVzZXJJZCIsIkRpcmVjdG9yeU1lbWJlciIsInVzZXJfaWQiLCJteGlkIiwiYXZhdGFyX3VybCIsInByb2ZpbGUiLCJkaXNwbGF5X25hbWUiLCJkaXNwbGF5bmFtZSIsImV4cG9ydHMiLCJsb29rdXBUaHJlZVBpZHMiLCJ0aHJlZVBpZHMiLCJpZGVudGl0eVNlcnZlciIsInRva2VuIiwiZ2V0QWNjZXNzVG9rZW4iLCJsb29rZWRVcCIsImJ1bGtMb29rdXBUaHJlZVBpZHMiLCJ0IiwiaXNFbWFpbCIsInRocmVlcGlkcyIsIl90aHJlZVBpZFR5cGUiLCJsb29rZWRVcFRocmVlUGlkcyIsInByb21pc2VzIiwiZ2V0UHJvZmlsZUluZm8iLCJQcm9taXNlIiwiYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3RocmVlcGlkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBNYXRyaXhDbGllbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IERpcmVjdG9yeU1lbWJlciwgTWVtYmVyLCBUaHJlZXBpZE1lbWJlciB9IGZyb20gXCIuL2RpcmVjdC1tZXNzYWdlc1wiO1xuXG4vKipcbiAqIFRyaWVzIHRvIHJlc29sdmUgdGhlIFRocmVlcGlkTWVtYmVycyB0byBEaXJlY3RvcnlNZW1iZXJzLlxuICpcbiAqIEBwYXJhbSBtZW1iZXJzIC0gTGlzdCBvZiBtZW1iZXJzIHRvIHJlc29sdmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPE1lbWJlcltdPn0gU2FtZSBsaXN0IHdpdGggVGhyZWVwaWRNZW1iZXJzIHJlcGxhY2VkIGJ5IERpcmVjdG9yeU1lbWJlcnMgaWYgc3VjY2VzZnVsbHkgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVUaHJlZVBpZHMgPSBhc3luYyAobWVtYmVyczogTWVtYmVyW10sIGNsaWVudDogTWF0cml4Q2xpZW50KTogUHJvbWlzZTxNZW1iZXJbXT4gPT4ge1xuICAgIGNvbnN0IHRocmVlUGlkTWVtYmVycyA9IG1lbWJlcnMuZmlsdGVyKChtKSA9PiBtIGluc3RhbmNlb2YgVGhyZWVwaWRNZW1iZXIpIGFzIFRocmVlcGlkTWVtYmVyW107XG5cbiAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmVcbiAgICBpZiAodGhyZWVQaWRNZW1iZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG1lbWJlcnM7XG5cbiAgICBjb25zdCBsb29rZWRVcFByb2ZpbGVzID0gYXdhaXQgbG9va3VwVGhyZWVQaWRQcm9maWxlcyh0aHJlZVBpZE1lbWJlcnMsIGNsaWVudCk7XG5cbiAgICByZXR1cm4gbWVtYmVycy5tYXAoKG1lbWJlcjogTWVtYmVyKSA9PiB7XG4gICAgICAgIGlmICghKG1lbWJlciBpbnN0YW5jZW9mIFRocmVlcGlkTWVtYmVyKSkgcmV0dXJuIG1lbWJlcjtcblxuICAgICAgICBjb25zdCBsb29rZWRVcFByb2ZpbGUgPSBsb29rZWRVcFByb2ZpbGVzLmZpbmQoKHIpID0+IHIudGhyZWVQaWRJZCA9PT0gbWVtYmVyLnVzZXJJZCk7XG5cbiAgICAgICAgLy8gTm8gcHJvZmlsZSBmb3VuZCBmb3IgdGhpcyBtZW1iZXI7IHVzZSB0aGUgVGhyZWVwaWRNZW1iZXIuXG4gICAgICAgIGlmICghbG9va2VkVXBQcm9maWxlKSByZXR1cm4gbWVtYmVyO1xuXG4gICAgICAgIHJldHVybiBuZXcgRGlyZWN0b3J5TWVtYmVyKHtcbiAgICAgICAgICAgIHVzZXJfaWQ6IGxvb2tlZFVwUHJvZmlsZS5teGlkLFxuICAgICAgICAgICAgYXZhdGFyX3VybDogbG9va2VkVXBQcm9maWxlPy5wcm9maWxlPy5hdmF0YXJfdXJsLFxuICAgICAgICAgICAgZGlzcGxheV9uYW1lOiBsb29rZWRVcFByb2ZpbGU/LnByb2ZpbGU/LmRpc3BsYXluYW1lLFxuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogVHJpZXMgdG8gbG9vayB1cCB0aGUgVGhyZWVwaWRNZW1iZXJzLlxuICpcbiAqIEBwYXJhbSB0aHJlZVBpZHMgLSBMaXN0IG9mIDNyZC1wYXJ0eSBtZW1iZXJzIHRvIGxvb2sgdXBcbiAqIEByZXR1cm5zICBMaXN0IG9mIHJlc29sdmVkIDNyZC1wYXJ0eSBJRHMgd2l0aCB0aGVpciBNWElEc1xuICovXG5leHBvcnQgY29uc3QgbG9va3VwVGhyZWVQaWRzID0gYXN5bmMgKFxuICAgIHRocmVlUGlkczogVGhyZWVwaWRNZW1iZXJbXSxcbiAgICBjbGllbnQ6IE1hdHJpeENsaWVudCxcbik6IFByb21pc2U8eyB0aHJlZVBpZElkOiBzdHJpbmc7IG14aWQ6IHN0cmluZyB9W10+ID0+IHtcbiAgICAvLyBObyBpZGVudGl0eSBzZXJ2ZXIgY29uZmlndXJlZC4gVW5hYmxlIHRvIHJlc29sdmUgYW55IDNyZCBwYXJ0eSBtZW1iZXIuXG4gICAgaWYgKCFjbGllbnQuaWRlbnRpdHlTZXJ2ZXIpIHJldHVybiBbXTtcblxuICAgIC8vIE5vdGhpbmcgd2UgY2FuIHNlYXJjaCwgcmV0dXJuIG51bGxcbiAgICBpZiAodGhyZWVQaWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCBjbGllbnQuaWRlbnRpdHlTZXJ2ZXIuZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgIGlmICghdG9rZW4pIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGxvb2tlZFVwID0gYXdhaXQgY2xpZW50LmJ1bGtMb29rdXBUaHJlZVBpZHMoXG4gICAgICAgIHRocmVlUGlkcy5tYXAoKHQpID0+IFt0LmlzRW1haWwgPyBcImVtYWlsXCIgOiBcIm1zaXNkblwiLCB0LnVzZXJJZF0pLFxuICAgICAgICB0b2tlbixcbiAgICApO1xuXG4gICAgcmV0dXJuIGxvb2tlZFVwLnRocmVlcGlkcy5tYXAoKFtfdGhyZWVQaWRUeXBlLCB0aHJlZVBpZElkLCBteGlkXTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddKSA9PiAoe1xuICAgICAgICB0aHJlZVBpZElkLFxuICAgICAgICBteGlkLFxuICAgIH0pKTtcbn07XG5cbi8qKlxuICogVHJpZXMgdG8gbG9vayB1cCB0aGUgTVhJRHMgYW5kIHByb2ZpbGVzIG9mIHRoZSBUaHJlZXBpZE1lbWJlcnMuXG4gKlxuICogQHBhcmFtIHRocmVlUGlkcyAtIExpc3Qgb2YgM3JkLXBydHkgbWVtYmVycyB0byBsb29rIHVwXG4gKiBAcmV0dXJucyBMaXN0IG9mIHJlc29sdmVkIDNyZC1wYXJ0eSBtZW1iZXJzIHdpdGggdGhlaXIgTVhJRHMgYW5kIHByb2ZpbGUgKGlmIGZvdW5kKVxuICovXG5leHBvcnQgY29uc3QgbG9va3VwVGhyZWVQaWRQcm9maWxlcyA9IGFzeW5jIChcbiAgICB0aHJlZVBpZHM6IFRocmVlcGlkTWVtYmVyW10sXG4gICAgY2xpZW50OiBNYXRyaXhDbGllbnQsXG4pOiBQcm9taXNlPHsgdGhyZWVQaWRJZDogc3RyaW5nOyBteGlkOiBzdHJpbmc7IHByb2ZpbGU6IG51bGwgfCB7IGF2YXRhcl91cmw/OiBzdHJpbmc7IGRpc3BsYXluYW1lPzogc3RyaW5nIH0gfVtdPiA9PiB7XG4gICAgY29uc3QgbG9va2VkVXBUaHJlZVBpZHMgPSBhd2FpdCBsb29rdXBUaHJlZVBpZHModGhyZWVQaWRzLCBjbGllbnQpO1xuICAgIGNvbnN0IHByb21pc2VzID0gbG9va2VkVXBUaHJlZVBpZHMubWFwKGFzeW5jICh0KSA9PiB7XG4gICAgICAgIGxldCBwcm9maWxlOiBudWxsIHwgeyBhdmF0YXJfdXJsPzogc3RyaW5nOyBkaXNwbGF5X25hbWU/OiBzdHJpbmcgfSA9IG51bGw7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2ZpbGUgPSBhd2FpdCBjbGllbnQuZ2V0UHJvZmlsZUluZm8odC5teGlkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgYW55IGxvb2t1cCBlcnJvclxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRocmVlUGlkSWQ6IHQudGhyZWVQaWRJZCxcbiAgICAgICAgICAgIG14aWQ6IHQubXhpZCxcbiAgICAgICAgICAgIHByb2ZpbGUsXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVVBLElBQUFBLGVBQUEsR0FBQUMsT0FBQTtBQVZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGdCQUFnQixHQUFHLE1BQUFBLENBQU9DLE9BQWlCLEVBQUVDLE1BQW9CLEtBQXdCO0VBQ2xHLE1BQU1DLGVBQWUsR0FBR0YsT0FBTyxDQUFDRyxNQUFNLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxZQUFZQyw4QkFBYyxDQUFxQjs7RUFFOUY7RUFDQSxJQUFJSCxlQUFlLENBQUNJLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBT04sT0FBTztFQUVoRCxNQUFNTyxnQkFBZ0IsR0FBRyxNQUFNQyxzQkFBc0IsQ0FBQ04sZUFBZSxFQUFFRCxNQUFNLENBQUM7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