44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
|
|
const urlJoin = require('url-join');
|
|
const fetchEndpoint = require('./lib/fetch-endpoint');
|
|
|
|
const { matrixServerUrl } = require('../config.json');
|
|
assert(matrixServerUrl);
|
|
|
|
async function fetchRoomData(roomId) {
|
|
const stateNameEndpoint = urlJoin(
|
|
matrixServerUrl,
|
|
`_matrix/client/r0/rooms/${roomId}/state/m.room.name`
|
|
);
|
|
const stateAvatarEndpoint = urlJoin(
|
|
matrixServerUrl,
|
|
`_matrix/client/r0/rooms/${roomId}/state/m.room.avatar`
|
|
);
|
|
|
|
const [stateNameResDataOutcome, stateAvatarResDataOutcome] = await Promise.allSettled([
|
|
fetchEndpoint(stateNameEndpoint),
|
|
fetchEndpoint(stateAvatarEndpoint),
|
|
]);
|
|
|
|
let name;
|
|
if (stateNameResDataOutcome.reason === undefined) {
|
|
name = stateNameResDataOutcome.value.name;
|
|
}
|
|
|
|
let avatarUrl;
|
|
if (stateAvatarResDataOutcome.reason === undefined) {
|
|
avatarUrl = stateAvatarResDataOutcome.value.url;
|
|
}
|
|
|
|
return {
|
|
id: roomId,
|
|
name,
|
|
avatarUrl,
|
|
};
|
|
}
|
|
|
|
module.exports = fetchRoomData;
|