Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
try {
await room.onMatrixReaction(ev);
} catch (e) {
log.error("Failed procesing reaction message: ", e);
endTimer({outcome: "fail"});
return;
}
endTimer({outcome: "success"});
}
let success = false;
// Handle a m.room.message event
if (ev.type === "m.room.message" || ev.content) {
if (ev.content["m.relates_to"] !== undefined) {
const relatesTo = ev.content["m.relates_to"];
if (relatesTo.rel_type === "m.replace" && relatesTo.event_id) {
// We have an edit.
try {
success = await room.onMatrixEdit(ev);
} catch (e) {
log.error("Failed processing matrix edit: ", e);
endTimer({outcome: "fail"});
return;
}
}
}
try {
success = await room.onMatrixMessage(ev);
} catch (e) {
log.error("Failed processing matrix message: ", e);
endTimer({outcome: "fail"});
// Handle a m.reaction event
if (ev.type === "m.reaction") {
room.onMatrixReaction(ev).then(
() => endTimer({outcome: "success"}),
(e) => {
log.error("Failed procesing matrix message: ", e);
endTimer({outcome: "fail"});
}
);
return;
}
// Handle a m.room.message event
if (ev.type === "m.room.message" || ev.content) {
if (ev.content['m.relates_to'] !== undefined) {
const relates_to = ev.content['m.relates_to'];
if (relates_to.rel_type === "m.replace" && relates_to.event_id !== undefined) {
log.info("edit in progress");
// We have an edit.
room.onMatrixEdit(ev).then(
() => endTimer({outcome: "success"}),
(e) => {
log.error("Failed procesing matrix message: ", e);
endTimer({outcome: "fail"});
}
);
return;
}
}
room.onMatrixMessage(ev).then(
() => endTimer({outcome: "success"}),
// Handle a m.reaction event
if (ev.type === "m.reaction") {
room.onMatrixReaction(ev).then(
() => endTimer({outcome: "success"}),
(e) => {
log.error("Failed procesing matrix message: ", e);
endTimer({outcome: "fail"});
}
);
return;
}
// Handle a m.room.message event
if (ev.type === "m.room.message" || ev.content) {
if (ev.content['m.relates_to'] !== undefined) {
const relates_to = ev.content['m.relates_to'];
if (relates_to.rel_type === "m.replace" && relates_to.event_id !== undefined) {
log.info("edit in progress");
// We have an edit.
room.onMatrixEdit(ev).then(
() => endTimer({outcome: "success"}),
(e) => {
log.error("Failed procesing matrix message: ", e);
endTimer({outcome: "fail"});
}
);
return;
}
}
room.onMatrixMessage(ev).then(
() => endTimer({outcome: "success"}),
(e) => {
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
if (serverName) {
// We also do our own minimal .well-known validation to avoid pulling in the js-sdk
try {
const result = await fetch(`https://${serverName}/.well-known/matrix/client`);
const wkConfig = await result.json();
if (wkConfig && wkConfig['m.homeserver']) {
hsUrl = wkConfig['m.homeserver']['base_url'];
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
} catch (e) {
console.error(e);
return renderConfigError("Unable to fetch homeserver configuration");
}
}
if (defaultHsUrl) {
hsUrl = defaultHsUrl;
isUrl = defaultIsUrl;
}
if (!hsUrl) {
return renderConfigError("Unable to locate homeserver");
}
export async function sendLoginRequest(hsUrl, isUrl, loginType, loginParams) {
const client = Matrix.createClient({
baseUrl: hsUrl,
idBaseUrl: isUrl,
});
const data = await client.login(loginType, loginParams);
const wellknown = data.well_known;
if (wellknown) {
if (wellknown["m.homeserver"] && wellknown["m.homeserver"]["base_url"]) {
hsUrl = wellknown["m.homeserver"]["base_url"];
console.log(`Overrode homeserver setting with ${hsUrl} from login response`);
}
if (wellknown["m.identity_server"] && wellknown["m.identity_server"]["base_url"]) {
// TODO: should we prompt here?
isUrl = wellknown["m.identity_server"]["base_url"];
console.log(`Overrode IS setting with ${isUrl} from login response`);
}
}
return {
homeserverUrl: hsUrl,
identityServerUrl: isUrl,
userId: data.user_id,
deviceId: data.device_id,
accessToken: data.access_token,
};
}
hsUrl = wkConfig['m.homeserver']['base_url'];
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
if (serverName) {
// We also do our own minimal .well-known validation to avoid pulling in the js-sdk
try {
const result = await fetch(`https://${serverName}/.well-known/matrix/client`);
const wkConfig = await result.json();
if (wkConfig && wkConfig['m.homeserver']) {
hsUrl = wkConfig['m.homeserver']['base_url'];
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
} catch (e) {
console.error(e);
return renderConfigError("Unable to fetch homeserver configuration");
}
}
if (defaultHsUrl) {
hsUrl = defaultHsUrl;
isUrl = defaultIsUrl;
}
if (!hsUrl) {
return renderConfigError("Unable to locate homeserver");
{
if(!room_id)
room_id = mc.rooms.search.value.split(" ")[0];
if(!(room_id in mc.rooms))
mc.rooms[room_id] = new mc.room({room_id: room_id});
let room = mc.rooms[room_id];
// Try to join room by canon alias first
let alias = room.state['m.room.canonical_alias'].content.alias;
// Fallback to any alias
if(empty(alias)) try
{
let aliases = room.state['m.room.aliases'];
let state_key = Object.keys(aliases)[0];
alias = aliases[state_key].content.aliases[0];
}
catch(e) {}
// Fallback to room id
if(empty(alias))
alias = room_id;
let request = mc.m.join.post(alias); try
{
let data = await request.response;
mc.rooms.joined[room_id] = room;
debug.object(data);
return true;
}
{
if(!room_id)
room_id = mc.rooms.search.value.split(" ")[0];
if(!(room_id in mc.rooms))
mc.rooms[room_id] = new mc.room({room_id: room_id});
let room = mc.rooms[room_id];
// Try to join room by canon alias first
let alias = room.state['m.room.canonical_alias'].content.alias;
// Fallback to any alias
if(empty(alias)) try
{
let aliases = room.state['m.room.aliases'];
let state_key = Object.keys(aliases)[0];
alias = aliases[state_key].content.aliases[0];
}
catch(e) {}
// Fallback to room id
if(empty(alias))
alias = room_id;
let request = mc.m.join.post(alias); try
{
let data = await request.response;
mc.rooms.join[room_id] = room;
debug.object(data);
return true;
}
editName: function() {
if ($scope.name.isEditing) {
console.log("Warning: Already editing name.");
return;
};
var nameEvent = $scope.room.current_room_state.state_events['m.room.name'];
if (nameEvent) {
$scope.name.newNameText = nameEvent.content.name;
}
else {
$scope.name.newNameText = "";
}
// Force focus to the input
$timeout(function() {
angular.element('.roomNameInput').focus();
}, 0);
$scope.name.isEditing = true;
},
updateName: function() {
var userId = "@alice:bar";
var mockStorageApi;
var batchNum = 3;
// web storage api keys
var prefix = "room_" + roomId + "_timeline_";
var stateKeyName = "room_" + roomId + "_state";
// stored state events
var stateEventMap = {
"m.room.member": {},
"m.room.name": {}
};
stateEventMap["m.room.member"][userId] = utils.mkMembership(
{user: userId, room: roomId, mship: "join"}
);
stateEventMap["m.room.name"][""] = utils.mkEvent(
{user: userId, room: roomId, type: "m.room.name",
content: {
name: "foo"
}}
);
beforeEach(function() {
utils.beforeEach(this); // eslint-disable-line no-invalid-this
mockStorageApi = new MockStorageApi();
store = new WebStorageStore(mockStorageApi, batchNum);
room = new Room(roomId);
});
describe("constructor", function() {
it("should throw if the WebStorage API functions are missing", function() {
expect(function() {