1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-25 05:23:13 +03:00

Console logging to loglevel

This commit is contained in:
jkasun
2019-05-19 09:29:40 +05:30
parent 56062e8e4e
commit a73dabcb67
41 changed files with 248 additions and 214 deletions

View File

@@ -27,6 +27,7 @@ import MockHttpBackend from 'matrix-mock-request';
import expect from 'expect'; import expect from 'expect';
import Promise from 'bluebird'; import Promise from 'bluebird';
import LocalStorageCryptoStore from '../lib/crypto/store/localStorage-crypto-store'; import LocalStorageCryptoStore from '../lib/crypto/store/localStorage-crypto-store';
import logger from '../src/logger';
/** /**
* Wrapper for a MockStorageApi, MockHttpBackend and MatrixClient * Wrapper for a MockStorageApi, MockHttpBackend and MatrixClient
@@ -82,7 +83,7 @@ TestClient.prototype.toString = function() {
* @return {Promise} * @return {Promise}
*/ */
TestClient.prototype.start = function() { TestClient.prototype.start = function() {
console.log(this + ': starting'); logger.log(this + ': starting');
this.httpBackend.when("GET", "/pushrules").respond(200, {}); this.httpBackend.when("GET", "/pushrules").respond(200, {});
this.httpBackend.when("POST", "/filter").respond(200, { filter_id: "fid" }); this.httpBackend.when("POST", "/filter").respond(200, { filter_id: "fid" });
this.expectDeviceKeyUpload(); this.expectDeviceKeyUpload();
@@ -100,7 +101,7 @@ TestClient.prototype.start = function() {
this.httpBackend.flushAllExpected(), this.httpBackend.flushAllExpected(),
testUtils.syncPromise(this.client), testUtils.syncPromise(this.client),
]).then(() => { ]).then(() => {
console.log(this + ': started'); logger.log(this + ': started');
}); });
}; };
@@ -122,7 +123,7 @@ TestClient.prototype.expectDeviceKeyUpload = function() {
expect(content.one_time_keys).toBe(undefined); expect(content.one_time_keys).toBe(undefined);
expect(content.device_keys).toBeTruthy(); expect(content.device_keys).toBeTruthy();
console.log(self + ': received device keys'); logger.log(self + ': received device keys');
// we expect this to happen before any one-time keys are uploaded. // we expect this to happen before any one-time keys are uploaded.
expect(Object.keys(self.oneTimeKeys).length).toEqual(0); expect(Object.keys(self.oneTimeKeys).length).toEqual(0);
@@ -159,7 +160,7 @@ TestClient.prototype.awaitOneTimeKeyUpload = function() {
expect(content.device_keys).toBe(undefined); expect(content.device_keys).toBe(undefined);
expect(content.one_time_keys).toBeTruthy(); expect(content.one_time_keys).toBeTruthy();
expect(content.one_time_keys).toNotEqual({}); expect(content.one_time_keys).toNotEqual({});
console.log('%s: received %i one-time keys', this, logger.log('%s: received %i one-time keys', this,
Object.keys(content.one_time_keys).length); Object.keys(content.one_time_keys).length);
this.oneTimeKeys = content.one_time_keys; this.oneTimeKeys = content.one_time_keys;
return {one_time_key_counts: { return {one_time_key_counts: {
@@ -223,11 +224,11 @@ TestClient.prototype.getSigningKey = function() {
* @returns {Promise} promise which completes once the sync has been flushed * @returns {Promise} promise which completes once the sync has been flushed
*/ */
TestClient.prototype.flushSync = function() { TestClient.prototype.flushSync = function() {
console.log(`${this}: flushSync`); logger.log(`${this}: flushSync`);
return Promise.all([ return Promise.all([
this.httpBackend.flush('/sync', 1), this.httpBackend.flush('/sync', 1),
testUtils.syncPromise(this.client), testUtils.syncPromise(this.client),
]).then(() => { ]).then(() => {
console.log(`${this}: flushSync completed`); logger.log(`${this}: flushSync completed`);
}); });
}; };

View File

@@ -20,6 +20,7 @@ import Promise from 'bluebird';
import TestClient from '../TestClient'; import TestClient from '../TestClient';
import testUtils from '../test-utils'; import testUtils from '../test-utils';
import logger from '../../src/logger';
const ROOM_ID = "!room:id"; const ROOM_ID = "!room:id";
@@ -71,7 +72,7 @@ function getSyncResponse(roomMembers) {
describe("DeviceList management:", function() { describe("DeviceList management:", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('not running deviceList tests: Olm not present'); logger.warn('not running deviceList tests: Olm not present');
return; return;
} }
@@ -108,7 +109,7 @@ describe("DeviceList management:", function() {
return aliceTestClient.flushSync(); return aliceTestClient.flushSync();
}).then(function() { }).then(function() {
console.log("Forcing alice to download our device keys"); logger.log("Forcing alice to download our device keys");
aliceTestClient.httpBackend.when('POST', '/keys/query').respond(200, { aliceTestClient.httpBackend.when('POST', '/keys/query').respond(200, {
device_keys: { device_keys: {
@@ -121,7 +122,7 @@ describe("DeviceList management:", function() {
aliceTestClient.httpBackend.flush('/keys/query', 1), aliceTestClient.httpBackend.flush('/keys/query', 1),
]); ]);
}).then(function() { }).then(function() {
console.log("Telling alice to send a megolm message"); logger.log("Telling alice to send a megolm message");
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/send/', 'PUT', '/send/',

View File

@@ -36,6 +36,7 @@ import Promise from 'bluebird';
const utils = require("../../lib/utils"); const utils = require("../../lib/utils");
const testUtils = require("../test-utils"); const testUtils = require("../test-utils");
const TestClient = require('../TestClient').default; const TestClient = require('../TestClient').default;
import logger from '../../src/logger';
let aliTestClient; let aliTestClient;
const roomId = "!room:localhost"; const roomId = "!room:localhost";
@@ -95,7 +96,7 @@ function expectBobQueryKeys() {
const aliKeys = {}; const aliKeys = {};
aliKeys[aliDeviceId] = aliTestClient.deviceKeys; aliKeys[aliDeviceId] = aliTestClient.deviceKeys;
console.log("query result will be", aliKeys); logger.log("query result will be", aliKeys);
bobTestClient.httpBackend.when( bobTestClient.httpBackend.when(
"POST", "/keys/query", "POST", "/keys/query",
@@ -334,7 +335,7 @@ function recvMessage(httpBackend, client, sender, message) {
if (event.getType() == "m.room.member") { if (event.getType() == "m.room.member") {
return; return;
} }
console.log(client.credentials.userId + " received event", logger.log(client.credentials.userId + " received event",
event); event);
client.removeListener("event", onEvent); client.removeListener("event", onEvent);
@@ -607,7 +608,7 @@ describe("MatrixClient crypto", function() {
const eventPromise = new Promise((resolve, reject) => { const eventPromise = new Promise((resolve, reject) => {
const onEvent = function(event) { const onEvent = function(event) {
console.log(bobUserId + " received event", logger.log(bobUserId + " received event",
event); event);
resolve(event); resolve(event);
}; };
@@ -734,7 +735,7 @@ describe("MatrixClient crypto", function() {
return Promise.resolve() return Promise.resolve()
.then(() => { .then(() => {
console.log(aliTestClient + ': starting'); logger.log(aliTestClient + ': starting');
httpBackend.when("GET", "/pushrules").respond(200, {}); httpBackend.when("GET", "/pushrules").respond(200, {});
httpBackend.when("POST", "/filter").respond(200, { filter_id: "fid" }); httpBackend.when("POST", "/filter").respond(200, { filter_id: "fid" });
aliTestClient.expectDeviceKeyUpload(); aliTestClient.expectDeviceKeyUpload();
@@ -746,7 +747,7 @@ describe("MatrixClient crypto", function() {
aliTestClient.client.startClient({}); aliTestClient.client.startClient({});
return httpBackend.flushAllExpected().then(() => { return httpBackend.flushAllExpected().then(() => {
console.log(aliTestClient + ': started'); logger.log(aliTestClient + ': started');
}); });
}) })
.then(() => httpBackend.when("POST", "/keys/upload") .then(() => httpBackend.when("POST", "/keys/upload")
@@ -755,7 +756,7 @@ describe("MatrixClient crypto", function() {
expect(content.one_time_keys).toNotEqual({}); expect(content.one_time_keys).toNotEqual({});
expect(Object.keys(content.one_time_keys).length) expect(Object.keys(content.one_time_keys).length)
.toBeGreaterThanOrEqualTo(1); .toBeGreaterThanOrEqualTo(1);
console.log('received %i one-time keys', logger.log('received %i one-time keys',
Object.keys(content.one_time_keys).length); Object.keys(content.one_time_keys).length);
// cancel futher calls by telling the client // cancel futher calls by telling the client
// we have more than we need // we have more than we need

View File

@@ -5,6 +5,7 @@ const sdk = require("../..");
const HttpBackend = require("matrix-mock-request"); const HttpBackend = require("matrix-mock-request");
const utils = require("../test-utils"); const utils = require("../test-utils");
const EventTimeline = sdk.EventTimeline; const EventTimeline = sdk.EventTimeline;
import logger from '../../src/logger';
const baseUrl = "http://localhost.or.something"; const baseUrl = "http://localhost.or.something";
const userId = "@alice:localhost"; const userId = "@alice:localhost";
@@ -84,7 +85,7 @@ function startClient(httpBackend, client) {
// set up a promise which will resolve once the client is initialised // set up a promise which will resolve once the client is initialised
const deferred = Promise.defer(); const deferred = Promise.defer();
client.on("sync", function(state) { client.on("sync", function(state) {
console.log("sync", state); logger.log("sync", state);
if (state != "SYNCING") { if (state != "SYNCING") {
return; return;
} }
@@ -669,11 +670,11 @@ describe("MatrixClient event timelines", function() {
// initiate the send, and set up checks to be done when it completes // initiate the send, and set up checks to be done when it completes
// - but note that it won't complete until after the /sync does, below. // - but note that it won't complete until after the /sync does, below.
client.sendTextMessage(roomId, "a body", TXN_ID).then(function(res) { client.sendTextMessage(roomId, "a body", TXN_ID).then(function(res) {
console.log("sendTextMessage completed"); logger.log("sendTextMessage completed");
expect(res.event_id).toEqual(event.event_id); expect(res.event_id).toEqual(event.event_id);
return client.getEventTimeline(timelineSet, event.event_id); return client.getEventTimeline(timelineSet, event.event_id);
}).then(function(tl) { }).then(function(tl) {
console.log("getEventTimeline completed (2)"); logger.log("getEventTimeline completed (2)");
expect(tl.getEvents().length).toEqual(2); expect(tl.getEvents().length).toEqual(2);
expect(tl.getEvents()[1].getContent().body).toEqual("a body"); expect(tl.getEvents()[1].getContent().body).toEqual("a body");
}), }),
@@ -684,7 +685,7 @@ describe("MatrixClient event timelines", function() {
]).then(function() { ]).then(function() {
return client.getEventTimeline(timelineSet, event.event_id); return client.getEventTimeline(timelineSet, event.event_id);
}).then(function(tl) { }).then(function(tl) {
console.log("getEventTimeline completed (1)"); logger.log("getEventTimeline completed (1)");
expect(tl.getEvents().length).toEqual(2); expect(tl.getEvents().length).toEqual(2);
expect(tl.getEvents()[1].event).toEqual(event); expect(tl.getEvents()[1].event).toEqual(event);

View File

@@ -355,9 +355,9 @@ describe("MatrixClient", function() {
return client._crypto._olmDevice.sign(anotherjson.stringify(b)); return client._crypto._olmDevice.sign(anotherjson.stringify(b));
}; };
console.log("Ed25519: " + ed25519key); logger.log("Ed25519: " + ed25519key);
console.log("boris:", sign(borisKeys.dev1)); logger.log("boris:", sign(borisKeys.dev1));
console.log("chaz:", sign(chazKeys.dev2)); logger.log("chaz:", sign(chazKeys.dev2));
*/ */
httpBackend.when("POST", "/keys/query").check(function(req) { httpBackend.when("POST", "/keys/query").check(function(req) {

View File

@@ -23,6 +23,7 @@ import expect from 'expect';
const utils = require('../../lib/utils'); const utils = require('../../lib/utils');
const testUtils = require('../test-utils'); const testUtils = require('../test-utils');
const TestClient = require('../TestClient').default; const TestClient = require('../TestClient').default;
import logger from '../../src/logger';
const ROOM_ID = "!room:id"; const ROOM_ID = "!room:id";
@@ -203,7 +204,7 @@ function getSyncResponse(roomMembers) {
describe("megolm", function() { describe("megolm", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('not running megolm tests: Olm not present'); logger.warn('not running megolm tests: Olm not present');
return; return;
} }
const Olm = global.Olm; const Olm = global.Olm;
@@ -416,7 +417,7 @@ describe("megolm", function() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
event.once('Event.decrypted', (ev) => { event.once('Event.decrypted', (ev) => {
console.log(`${Date.now()} event ${event.getId()} now decrypted`); logger.log(`${Date.now()} event ${event.getId()} now decrypted`);
resolve(ev); resolve(ev);
}); });
}); });
@@ -555,7 +556,7 @@ describe("megolm", function() {
).respond(200, function(path, content) { ).respond(200, function(path, content) {
const ct = content.ciphertext; const ct = content.ciphertext;
const r = inboundGroupSession.decrypt(ct); const r = inboundGroupSession.decrypt(ct);
console.log('Decrypted received megolm message', r); logger.log('Decrypted received megolm message', r);
expect(r.message_index).toEqual(0); expect(r.message_index).toEqual(0);
const decrypted = JSON.parse(r.plaintext); const decrypted = JSON.parse(r.plaintext);
@@ -600,7 +601,7 @@ describe("megolm", function() {
return aliceTestClient.flushSync(); return aliceTestClient.flushSync();
}).then(function() { }).then(function() {
console.log('Forcing alice to download our device keys'); logger.log('Forcing alice to download our device keys');
aliceTestClient.httpBackend.when('POST', '/keys/query').respond( aliceTestClient.httpBackend.when('POST', '/keys/query').respond(
200, getTestKeysQueryResponse('@bob:xyz'), 200, getTestKeysQueryResponse('@bob:xyz'),
@@ -611,10 +612,10 @@ describe("megolm", function() {
aliceTestClient.httpBackend.flush('/keys/query', 1), aliceTestClient.httpBackend.flush('/keys/query', 1),
]); ]);
}).then(function() { }).then(function() {
console.log('Telling alice to block our device'); logger.log('Telling alice to block our device');
aliceTestClient.client.setDeviceBlocked('@bob:xyz', 'DEVICE_ID'); aliceTestClient.client.setDeviceBlocked('@bob:xyz', 'DEVICE_ID');
console.log('Telling alice to send a megolm message'); logger.log('Telling alice to send a megolm message');
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/send/', 'PUT', '/send/',
).respond(200, { ).respond(200, {
@@ -656,7 +657,7 @@ describe("megolm", function() {
return aliceTestClient.flushSync(); return aliceTestClient.flushSync();
}).then(function() { }).then(function() {
console.log("Fetching bob's devices and marking known"); logger.log("Fetching bob's devices and marking known");
aliceTestClient.httpBackend.when('POST', '/keys/query').respond( aliceTestClient.httpBackend.when('POST', '/keys/query').respond(
200, getTestKeysQueryResponse('@bob:xyz'), 200, getTestKeysQueryResponse('@bob:xyz'),
@@ -669,17 +670,17 @@ describe("megolm", function() {
aliceTestClient.client.setDeviceKnown('@bob:xyz', 'DEVICE_ID'); aliceTestClient.client.setDeviceKnown('@bob:xyz', 'DEVICE_ID');
}); });
}).then(function() { }).then(function() {
console.log('Telling alice to send a megolm message'); logger.log('Telling alice to send a megolm message');
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/sendToDevice/m.room.encrypted/', 'PUT', '/sendToDevice/m.room.encrypted/',
).respond(200, function(path, content) { ).respond(200, function(path, content) {
console.log('sendToDevice: ', content); logger.log('sendToDevice: ', content);
const m = content.messages['@bob:xyz'].DEVICE_ID; const m = content.messages['@bob:xyz'].DEVICE_ID;
const ct = m.ciphertext[testSenderKey]; const ct = m.ciphertext[testSenderKey];
expect(ct.type).toEqual(1); // normal message expect(ct.type).toEqual(1); // normal message
const decrypted = JSON.parse(p2pSession.decrypt(ct.type, ct.body)); const decrypted = JSON.parse(p2pSession.decrypt(ct.type, ct.body));
console.log('decrypted sendToDevice:', decrypted); logger.log('decrypted sendToDevice:', decrypted);
expect(decrypted.type).toEqual('m.room_key'); expect(decrypted.type).toEqual('m.room_key');
megolmSessionId = decrypted.content.session_id; megolmSessionId = decrypted.content.session_id;
return {}; return {};
@@ -688,7 +689,7 @@ describe("megolm", function() {
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/send/', 'PUT', '/send/',
).respond(200, function(path, content) { ).respond(200, function(path, content) {
console.log('/send:', content); logger.log('/send:', content);
expect(content.session_id).toEqual(megolmSessionId); expect(content.session_id).toEqual(megolmSessionId);
return { return {
event_id: '$event_id', event_id: '$event_id',
@@ -704,14 +705,14 @@ describe("megolm", function() {
}), }),
]); ]);
}).then(function() { }).then(function() {
console.log('Telling alice to block our device'); logger.log('Telling alice to block our device');
aliceTestClient.client.setDeviceBlocked('@bob:xyz', 'DEVICE_ID'); aliceTestClient.client.setDeviceBlocked('@bob:xyz', 'DEVICE_ID');
console.log('Telling alice to send another megolm message'); logger.log('Telling alice to send another megolm message');
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/send/', 'PUT', '/send/',
).respond(200, function(path, content) { ).respond(200, function(path, content) {
console.log('/send:', content); logger.log('/send:', content);
expect(content.session_id).toNotEqual(megolmSessionId); expect(content.session_id).toNotEqual(megolmSessionId);
return { return {
event_id: '$event_id', event_id: '$event_id',
@@ -792,7 +793,7 @@ describe("megolm", function() {
aliceTestClient.httpBackend.when( aliceTestClient.httpBackend.when(
'PUT', '/sendToDevice/m.room.encrypted/', 'PUT', '/sendToDevice/m.room.encrypted/',
).respond(200, function(path, content) { ).respond(200, function(path, content) {
console.log("sendToDevice: ", content); logger.log("sendToDevice: ", content);
const m = content.messages[aliceTestClient.userId].DEVICE_ID; const m = content.messages[aliceTestClient.userId].DEVICE_ID;
const ct = m.ciphertext[testSenderKey]; const ct = m.ciphertext[testSenderKey];
expect(ct.type).toEqual(0); // pre-key message expect(ct.type).toEqual(0); // pre-key message
@@ -812,7 +813,7 @@ describe("megolm", function() {
).respond(200, function(path, content) { ).respond(200, function(path, content) {
const ct = content.ciphertext; const ct = content.ciphertext;
const r = inboundGroupSession.decrypt(ct); const r = inboundGroupSession.decrypt(ct);
console.log('Decrypted received megolm message', r); logger.log('Decrypted received megolm message', r);
decrypted = JSON.parse(r.plaintext); decrypted = JSON.parse(r.plaintext);
return { return {
@@ -865,7 +866,7 @@ describe("megolm", function() {
return aliceTestClient.flushSync(); return aliceTestClient.flushSync();
}).then(function() { }).then(function() {
// this will block // this will block
console.log('Forcing alice to download our device keys'); logger.log('Forcing alice to download our device keys');
downloadPromise = aliceTestClient.client.downloadKeys(['@bob:xyz']); downloadPromise = aliceTestClient.client.downloadKeys(['@bob:xyz']);
// so will this. // so will this.

View File

@@ -15,10 +15,11 @@ limitations under the License.
*/ */
// try to load the olm library. // try to load the olm library.
import logger from '../src/logger';
try { try {
global.Olm = require('olm'); global.Olm = require('olm');
console.log('loaded libolm'); logger.log('loaded libolm');
} catch (e) { } catch (e) {
console.warn("unable to run crypto tests: libolm not available"); logger.warn("unable to run crypto tests: libolm not available");
} }

View File

@@ -5,6 +5,7 @@ import Promise from 'bluebird';
// load olm before the sdk if possible // load olm before the sdk if possible
import './olm-loader'; import './olm-loader';
import logger from '../src/logger';
import sdk from '..'; import sdk from '..';
const MatrixEvent = sdk.MatrixEvent; const MatrixEvent = sdk.MatrixEvent;
@@ -25,7 +26,7 @@ module.exports.syncPromise = function(client, count) {
const p = new Promise((resolve, reject) => { const p = new Promise((resolve, reject) => {
const cb = (state) => { const cb = (state) => {
console.log(`${Date.now()} syncPromise(${count}): ${state}`); logger.log(`${Date.now()} syncPromise(${count}): ${state}`);
if (state == 'SYNCING') { if (state == 'SYNCING') {
resolve(); resolve();
} else { } else {
@@ -48,8 +49,8 @@ module.exports.syncPromise = function(client, count) {
module.exports.beforeEach = function(context) { module.exports.beforeEach = function(context) {
const desc = context.currentTest.fullTitle(); const desc = context.currentTest.fullTitle();
console.log(desc); logger.log(desc);
console.log(new Array(1 + desc.length).join("=")); logger.log(new Array(1 + desc.length).join("="));
}; };
/** /**
@@ -232,11 +233,11 @@ module.exports.awaitDecryption = function(event) {
return Promise.resolve(event); return Promise.resolve(event);
} }
console.log(`${Date.now()} event ${event.getId()} is being decrypted; waiting`); logger.log(`${Date.now()} event ${event.getId()} is being decrypted; waiting`);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
event.once('Event.decrypted', (ev) => { event.once('Event.decrypted', (ev) => {
console.log(`${Date.now()} event ${event.getId()} now decrypted`); logger.log(`${Date.now()} event ${event.getId()} now decrypted`);
resolve(ev); resolve(ev);
}); });
}); });

View File

@@ -19,6 +19,7 @@ import DeviceList from '../../../lib/crypto/DeviceList';
import MemoryCryptoStore from '../../../lib/crypto/store/memory-crypto-store.js'; import MemoryCryptoStore from '../../../lib/crypto/store/memory-crypto-store.js';
import testUtils from '../../test-utils'; import testUtils from '../../test-utils';
import utils from '../../../lib/utils'; import utils from '../../../lib/utils';
import logger from '../../../src/logger';
import expect from 'expect'; import expect from 'expect';
import Promise from 'bluebird'; import Promise from 'bluebird';
@@ -134,7 +135,7 @@ describe('DeviceList', function() {
}).then(() => { }).then(() => {
// uh-oh; user restarts before second request completes. The new instance // uh-oh; user restarts before second request completes. The new instance
// should know we never got a complete device list. // should know we never got a complete device list.
console.log("Creating new devicelist to simulate app reload"); logger.log("Creating new devicelist to simulate app reload");
downloadSpy.reset(); downloadSpy.reset();
const dl2 = createTestDeviceList(); const dl2 = createTestDeviceList();
const queryDefer3 = Promise.defer(); const queryDefer3 = Promise.defer();

View File

@@ -10,6 +10,7 @@ import MockStorageApi from '../../../MockStorageApi';
import testUtils from '../../../test-utils'; import testUtils from '../../../test-utils';
import OlmDevice from '../../../../lib/crypto/OlmDevice'; import OlmDevice from '../../../../lib/crypto/OlmDevice';
import Crypto from '../../../../lib/crypto'; import Crypto from '../../../../lib/crypto';
import logger from '../../../../src/logger';
const MatrixEvent = sdk.MatrixEvent; const MatrixEvent = sdk.MatrixEvent;
const MegolmDecryption = algorithms.DECRYPTION_CLASSES['m.megolm.v1.aes-sha2']; const MegolmDecryption = algorithms.DECRYPTION_CLASSES['m.megolm.v1.aes-sha2'];
@@ -21,7 +22,7 @@ const Olm = global.Olm;
describe("MegolmDecryption", function() { describe("MegolmDecryption", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running megolm unit tests: libolm not present'); logger.warn('Not running megolm unit tests: libolm not present');
return; return;
} }

View File

@@ -20,6 +20,7 @@ import expect from 'expect';
import MemoryCryptoStore from '../../../../lib/crypto/store/memory-crypto-store.js'; import MemoryCryptoStore from '../../../../lib/crypto/store/memory-crypto-store.js';
import MockStorageApi from '../../../MockStorageApi'; import MockStorageApi from '../../../MockStorageApi';
import testUtils from '../../../test-utils'; import testUtils from '../../../test-utils';
import logger from '../../../../src/logger';
import OlmDevice from '../../../../lib/crypto/OlmDevice'; import OlmDevice from '../../../../lib/crypto/OlmDevice';
import olmlib from '../../../../lib/crypto/olmlib'; import olmlib from '../../../../lib/crypto/olmlib';
@@ -45,7 +46,7 @@ async function setupSession(initiator, opponent) {
describe("OlmDecryption", function() { describe("OlmDecryption", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running megolm unit tests: libolm not present'); logger.warn('Not running megolm unit tests: libolm not present');
return; return;
} }

View File

@@ -28,6 +28,7 @@ import testUtils from '../../test-utils';
import OlmDevice from '../../../lib/crypto/OlmDevice'; import OlmDevice from '../../../lib/crypto/OlmDevice';
import Crypto from '../../../lib/crypto'; import Crypto from '../../../lib/crypto';
import logger from '../../../src/logger';
const Olm = global.Olm; const Olm = global.Olm;
@@ -112,7 +113,7 @@ function makeTestClient(sessionStore, cryptoStore) {
describe("MegolmBackup", function() { describe("MegolmBackup", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running megolm backup unit tests: libolm not present'); logger.warn('Not running megolm backup unit tests: libolm not present');
return; return;
} }

View File

@@ -13,15 +13,15 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import logger from '../../../../src/logger';
try { try {
global.Olm = require('olm'); global.Olm = require('olm');
} catch (e) { } catch (e) {
console.warn("unable to run device verification tests: libolm not available"); logger.warn("unable to run device verification tests: libolm not available");
} }
import expect from 'expect'; import expect from 'expect';
import DeviceInfo from '../../../../lib/crypto/deviceinfo'; import DeviceInfo from '../../../../lib/crypto/deviceinfo';
import {ShowQRCode, ScanQRCode} from '../../../../lib/crypto/verification/QRCode'; import {ShowQRCode, ScanQRCode} from '../../../../lib/crypto/verification/QRCode';
@@ -30,7 +30,7 @@ const Olm = global.Olm;
describe("QR code verification", function() { describe("QR code verification", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running device verification tests: libolm not present'); logger.warn('Not running device verification tests: libolm not present');
return; return;
} }

View File

@@ -13,11 +13,12 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import logger from '../../../../src/logger';
try { try {
global.Olm = require('olm'); global.Olm = require('olm');
} catch (e) { } catch (e) {
console.warn("unable to run device verification tests: libolm not available"); logger.warn("unable to run device verification tests: libolm not available");
} }
import expect from 'expect'; import expect from 'expect';
@@ -32,7 +33,7 @@ import {makeTestClients} from './util';
describe("verification request", function() { describe("verification request", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running device verification unit tests: libolm not present'); logger.warn('Not running device verification unit tests: libolm not present');
return; return;
} }

View File

@@ -13,11 +13,12 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import logger from '../../../../src/logger';
try { try {
global.Olm = require('olm'); global.Olm = require('olm');
} catch (e) { } catch (e) {
console.warn("unable to run device verification tests: libolm not available"); logger.warn("unable to run device verification tests: libolm not available");
} }
import expect from 'expect'; import expect from 'expect';
@@ -37,7 +38,7 @@ import {makeTestClients} from './util';
describe("SAS verification", function() { describe("SAS verification", function() {
if (!global.Olm) { if (!global.Olm) {
console.warn('Not running device verification unit tests: libolm not present'); logger.warn('Not running device verification unit tests: libolm not present');
return; return;
} }

View File

@@ -21,6 +21,7 @@ import testUtils from '../test-utils';
import expect from 'expect'; import expect from 'expect';
import Promise from 'bluebird'; import Promise from 'bluebird';
import logger from '../../src/logger';
describe("MatrixEvent", () => { describe("MatrixEvent", () => {
beforeEach(function() { beforeEach(function() {
@@ -48,7 +49,7 @@ describe("MatrixEvent", () => {
const crypto = { const crypto = {
decryptEvent: function() { decryptEvent: function() {
++callCount; ++callCount;
console.log(`decrypt: ${callCount}`); logger.log(`decrypt: ${callCount}`);
if (callCount == 1) { if (callCount == 1) {
// schedule a second decryption attempt while // schedule a second decryption attempt while
// the first one is still running. // the first one is still running.

View File

@@ -24,6 +24,7 @@ const InteractiveAuth = sdk.InteractiveAuth;
const MatrixError = sdk.MatrixError; const MatrixError = sdk.MatrixError;
import expect from 'expect'; import expect from 'expect';
import logger from '../../src/logger';
// Trivial client object to test interactive auth // Trivial client object to test interactive auth
// (we do not need TestClient here) // (we do not need TestClient here)
@@ -64,7 +65,7 @@ describe("InteractiveAuth", function() {
// first we expect a call here // first we expect a call here
stateUpdated.andCall(function(stage) { stateUpdated.andCall(function(stage) {
console.log('aaaa'); logger.log('aaaa');
expect(stage).toEqual("logintype"); expect(stage).toEqual("logintype");
ia.submitAuthDict({ ia.submitAuthDict({
type: "logintype", type: "logintype",
@@ -75,7 +76,7 @@ describe("InteractiveAuth", function() {
// .. which should trigger a call here // .. which should trigger a call here
const requestRes = {"a": "b"}; const requestRes = {"a": "b"};
doRequest.andCall(function(authData) { doRequest.andCall(function(authData) {
console.log('cccc'); logger.log('cccc');
expect(authData).toEqual({ expect(authData).toEqual({
session: "sessionId", session: "sessionId",
type: "logintype", type: "logintype",
@@ -106,7 +107,7 @@ describe("InteractiveAuth", function() {
// first we expect a call to doRequest // first we expect a call to doRequest
doRequest.andCall(function(authData) { doRequest.andCall(function(authData) {
console.log("request1", authData); logger.log("request1", authData);
expect(authData).toEqual({}); expect(authData).toEqual({});
const err = new MatrixError({ const err = new MatrixError({
session: "sessionId", session: "sessionId",
@@ -132,7 +133,7 @@ describe("InteractiveAuth", function() {
// submitAuthDict should trigger another call to doRequest // submitAuthDict should trigger another call to doRequest
doRequest.andCall(function(authData) { doRequest.andCall(function(authData) {
console.log("request2", authData); logger.log("request2", authData);
expect(authData).toEqual({ expect(authData).toEqual({
session: "sessionId", session: "sessionId",
type: "logintype", type: "logintype",

View File

@@ -7,6 +7,7 @@ const utils = require("../test-utils");
import expect from 'expect'; import expect from 'expect';
import lolex from 'lolex'; import lolex from 'lolex';
import logger from '../../src/logger';
describe("MatrixClient", function() { describe("MatrixClient", function() {
const userId = "@alice:bar"; const userId = "@alice:bar";
@@ -69,7 +70,7 @@ describe("MatrixClient", function() {
"MatrixClient[UT] RECV " + method + " " + path + " " + "MatrixClient[UT] RECV " + method + " " + path + " " +
"EXPECT " + (next ? next.method : next) + " " + (next ? next.path : next) "EXPECT " + (next ? next.method : next) + " " + (next ? next.path : next)
); );
console.log(logLine); logger.log(logLine);
if (!next) { // no more things to return if (!next) { // no more things to return
if (pendingLookup) { if (pendingLookup) {
@@ -91,7 +92,7 @@ describe("MatrixClient", function() {
return pendingLookup.promise; return pendingLookup.promise;
} }
if (next.path === path && next.method === method) { if (next.path === path && next.method === method) {
console.log( logger.log(
"MatrixClient[UT] Matched. Returning " + "MatrixClient[UT] Matched. Returning " +
(next.error ? "BAD" : "GOOD") + " response", (next.error ? "BAD" : "GOOD") + " response",
); );
@@ -353,7 +354,7 @@ describe("MatrixClient", function() {
function syncChecker(expectedStates, done) { function syncChecker(expectedStates, done) {
return function syncListener(state, old) { return function syncListener(state, old) {
const expected = expectedStates.shift(); const expected = expectedStates.shift();
console.log( logger.log(
"'sync' curr=%s old=%s EXPECT=%s", state, old, expected, "'sync' curr=%s old=%s EXPECT=%s", state, old, expected,
); );
if (!expected) { if (!expected) {

View File

@@ -45,6 +45,7 @@ const olmlib = require("./crypto/olmlib");
import ReEmitter from './ReEmitter'; import ReEmitter from './ReEmitter';
import RoomList from './crypto/RoomList'; import RoomList from './crypto/RoomList';
import logger from '../src/logger';
import Crypto from './crypto'; import Crypto from './crypto';
import { isCryptoAvailable } from './crypto'; import { isCryptoAvailable } from './crypto';
@@ -70,7 +71,7 @@ function keysFromRecoverySession(sessions, decryptionKey, roomId) {
decrypted.room_id = roomId; decrypted.room_id = roomId;
keys.push(decrypted); keys.push(decrypted);
} catch (e) { } catch (e) {
console.log("Failed to decrypt session from backup"); logger.log("Failed to decrypt session from backup");
} }
} }
return keys; return keys;
@@ -449,7 +450,7 @@ MatrixClient.prototype.getCapabilities = function() {
if (this._cachedCapabilities) { if (this._cachedCapabilities) {
if (now < this._cachedCapabilities.expiration) { if (now < this._cachedCapabilities.expiration) {
console.log("Returning cached capabilities"); logger.log("Returning cached capabilities");
return Promise.resolve(this._cachedCapabilities.capabilities); return Promise.resolve(this._cachedCapabilities.capabilities);
} }
} }
@@ -458,7 +459,7 @@ MatrixClient.prototype.getCapabilities = function() {
return this._http.authedRequest( return this._http.authedRequest(
undefined, "GET", "/capabilities", undefined, "GET", "/capabilities",
).catch((e) => { ).catch((e) => {
console.error(e); logger.error(e);
return null; // otherwise consume the error return null; // otherwise consume the error
}).then((r) => { }).then((r) => {
if (!r) r = {}; if (!r) r = {};
@@ -475,7 +476,7 @@ MatrixClient.prototype.getCapabilities = function() {
expiration: now + cacheMs, expiration: now + cacheMs,
}; };
console.log("Caching capabilities: ", capabilities); logger.log("Caching capabilities: ", capabilities);
return capabilities; return capabilities;
}); });
}; };
@@ -501,7 +502,7 @@ MatrixClient.prototype.initCrypto = async function() {
} }
if (this._crypto) { if (this._crypto) {
console.warn("Attempt to re-initialise e2e encryption on MatrixClient"); logger.warn("Attempt to re-initialise e2e encryption on MatrixClient");
return; return;
} }
@@ -515,7 +516,7 @@ MatrixClient.prototype.initCrypto = async function() {
} }
// initialise the list of encrypted rooms (whether or not crypto is enabled) // initialise the list of encrypted rooms (whether or not crypto is enabled)
console.log("Crypto: initialising roomlist..."); logger.log("Crypto: initialising roomlist...");
await this._roomList.init(); await this._roomList.init();
const userId = this.getUserId(); const userId = this.getUserId();
@@ -550,7 +551,7 @@ MatrixClient.prototype.initCrypto = async function() {
"crypto.warning", "crypto.warning",
]); ]);
console.log("Crypto: initialising crypto object..."); logger.log("Crypto: initialising crypto object...");
await crypto.init(); await crypto.init();
this.olmVersion = Crypto.getOlmVersion(); this.olmVersion = Crypto.getOlmVersion();
@@ -1244,7 +1245,7 @@ MatrixClient.prototype._restoreKeyBackup = function(
key.session_id = targetSessionId; key.session_id = targetSessionId;
keys.push(key); keys.push(key);
} catch (e) { } catch (e) {
console.log("Failed to decrypt session from backup"); logger.log("Failed to decrypt session from backup");
} }
} }
@@ -1696,7 +1697,7 @@ MatrixClient.prototype.sendEvent = function(roomId, eventType, content, txnId,
txnId = this.makeTxnId(); txnId = this.makeTxnId();
} }
console.log(`sendEvent of type ${eventType} in ${roomId} with txnId ${txnId}`); logger.log(`sendEvent of type ${eventType} in ${roomId} with txnId ${txnId}`);
// we always construct a MatrixEvent when sending because the store and // we always construct a MatrixEvent when sending because the store and
// scheduler use them. We'll extract the params back out if it turns out // scheduler use them. We'll extract the params back out if it turns out
@@ -1778,7 +1779,7 @@ function _sendEvent(client, room, event, callback) {
return res; return res;
}, function(err) { }, function(err) {
// the request failed to send. // the request failed to send.
console.error("Error sending event", err.stack || err); logger.error("Error sending event", err.stack || err);
try { try {
// set the error on the event before we update the status: // set the error on the event before we update the status:
@@ -1794,7 +1795,7 @@ function _sendEvent(client, room, event, callback) {
callback(err); callback(err);
} }
} catch (err2) { } catch (err2) {
console.error("Exception in error handler!", err2.stack || err); logger.error("Exception in error handler!", err2.stack || err);
} }
throw err; throw err;
}); });
@@ -1872,7 +1873,7 @@ function _sendEventHttpRequest(client, event) {
return client._http.authedRequest( return client._http.authedRequest(
undefined, "PUT", path, undefined, event.getWireContent(), undefined, "PUT", path, undefined, event.getWireContent(),
).then((res) => { ).then((res) => {
console.log( logger.log(
`Event sent to ${event.getRoomId()} with event id ${res.event_id}`, `Event sent to ${event.getRoomId()} with event id ${res.event_id}`,
); );
return res; return res;
@@ -2179,10 +2180,10 @@ MatrixClient.prototype.getRoomUpgradeHistory = function(roomId, verifyLinks=fals
// Work backwards first, looking at create events. // Work backwards first, looking at create events.
let createEvent = currentRoom.currentState.getStateEvents("m.room.create", ""); let createEvent = currentRoom.currentState.getStateEvents("m.room.create", "");
while (createEvent) { while (createEvent) {
console.log(`Looking at ${createEvent.getId()}`); logger.log(`Looking at ${createEvent.getId()}`);
const predecessor = createEvent.getContent()['predecessor']; const predecessor = createEvent.getContent()['predecessor'];
if (predecessor && predecessor['room_id']) { if (predecessor && predecessor['room_id']) {
console.log(`Looking at predecessor ${predecessor['room_id']}`); logger.log(`Looking at predecessor ${predecessor['room_id']}`);
const refRoom = this.getRoom(predecessor['room_id']); const refRoom = this.getRoom(predecessor['room_id']);
if (!refRoom) break; // end of the chain if (!refRoom) break; // end of the chain
@@ -3547,7 +3548,7 @@ MatrixClient.prototype.syncLeftRooms = function() {
// cleanup locks // cleanup locks
this._syncLeftRoomsPromise.then(function(res) { this._syncLeftRoomsPromise.then(function(res) {
console.log("Marking success of sync left room request"); logger.log("Marking success of sync left room request");
self._syncedLeftRooms = true; // flip the bit on success self._syncedLeftRooms = true; // flip the bit on success
}).finally(function() { }).finally(function() {
self._syncLeftRoomsPromise = null; // cleanup ongoing request state self._syncLeftRoomsPromise = null; // cleanup ongoing request state
@@ -3792,7 +3793,7 @@ MatrixClient.prototype.startClient = async function(opts) {
if (this._syncApi) { if (this._syncApi) {
// This shouldn't happen since we thought the client was not running // This shouldn't happen since we thought the client was not running
console.error("Still have sync object whilst not running: stopping old one"); logger.error("Still have sync object whilst not running: stopping old one");
this._syncApi.stop(); this._syncApi.stop();
} }
@@ -3835,7 +3836,7 @@ MatrixClient.prototype._storeClientOptions = function() {
* clean shutdown. * clean shutdown.
*/ */
MatrixClient.prototype.stopClient = function() { MatrixClient.prototype.stopClient = function() {
console.log('stopping MatrixClient'); logger.log('stopping MatrixClient');
this.clientRunning = false; this.clientRunning = false;
// TODO: f.e. Room => self.store.storeRoom(room) ? // TODO: f.e. Room => self.store.storeRoom(room) ?
@@ -3976,7 +3977,7 @@ function setupCallEventHandler(client) {
return; // stale/old invite event return; // stale/old invite event
} }
if (call) { if (call) {
console.log( logger.log(
"WARN: Already have a MatrixCall with id %s but got an " + "WARN: Already have a MatrixCall with id %s but got an " +
"invite. Clobbering.", "invite. Clobbering.",
content.call_id, content.call_id,
@@ -3987,7 +3988,7 @@ function setupCallEventHandler(client) {
forceTURN: client._forceTURN, forceTURN: client._forceTURN,
}); });
if (!call) { if (!call) {
console.log( logger.log(
"Incoming call ID " + content.call_id + " but this client " + "Incoming call ID " + content.call_id + " but this client " +
"doesn't support WebRTC", "doesn't support WebRTC",
); );
@@ -4032,14 +4033,14 @@ function setupCallEventHandler(client) {
if (existingCall.state === 'wait_local_media' || if (existingCall.state === 'wait_local_media' ||
existingCall.state === 'create_offer' || existingCall.state === 'create_offer' ||
existingCall.callId > call.callId) { existingCall.callId > call.callId) {
console.log( logger.log(
"Glare detected: answering incoming call " + call.callId + "Glare detected: answering incoming call " + call.callId +
" and canceling outgoing call " + existingCall.callId, " and canceling outgoing call " + existingCall.callId,
); );
existingCall._replacedBy(call); existingCall._replacedBy(call);
call.answer(); call.answer();
} else { } else {
console.log( logger.log(
"Glare detected: rejecting incoming call " + call.callId + "Glare detected: rejecting incoming call " + call.callId +
" and keeping outgoing call " + existingCall.callId, " and keeping outgoing call " + existingCall.callId,
); );
@@ -4109,7 +4110,7 @@ function checkTurnServers(client) {
client.turnServer().done(function(res) { client.turnServer().done(function(res) {
if (res.uris) { if (res.uris) {
console.log("Got TURN URIs: " + res.uris + " refresh in " + logger.log("Got TURN URIs: " + res.uris + " refresh in " +
res.ttl + " secs"); res.ttl + " secs");
// map the response to a format that can be fed to // map the response to a format that can be fed to
// RTCPeerConnection // RTCPeerConnection
@@ -4125,7 +4126,7 @@ function checkTurnServers(client) {
}, (res.ttl || (60 * 60)) * 1000 * 0.9); }, (res.ttl || (60 * 60)) * 1000 * 0.9);
} }
}, function(err) { }, function(err) {
console.error("Failed to get TURN URIs"); logger.error("Failed to get TURN URIs");
client._checkTurnServersTimeoutID = client._checkTurnServersTimeoutID =
setTimeout(function() { setTimeout(function() {
checkTurnServers(client); checkTurnServers(client);

View File

@@ -462,7 +462,7 @@ OlmDevice.prototype.createInboundSession = async function(
*/ */
OlmDevice.prototype.getSessionIdsForDevice = async function(theirDeviceIdentityKey) { OlmDevice.prototype.getSessionIdsForDevice = async function(theirDeviceIdentityKey) {
if (this._sessionsInProgress[theirDeviceIdentityKey]) { if (this._sessionsInProgress[theirDeviceIdentityKey]) {
console.log("waiting for session to be created"); logger.log("waiting for session to be created");
try { try {
await this._sessionsInProgress[theirDeviceIdentityKey]; await this._sessionsInProgress[theirDeviceIdentityKey];
} catch (e) { } catch (e) {

View File

@@ -23,6 +23,7 @@ limitations under the License.
*/ */
import Promise from 'bluebird'; import Promise from 'bluebird';
import logger from '../../../src/logger';
const logger = require("../../logger"); const logger = require("../../logger");
const utils = require("../../utils"); const utils = require("../../utils");
@@ -278,7 +279,7 @@ MegolmEncryption.prototype._prepareNewSession = async function() {
).catch((e) => { ).catch((e) => {
// This throws if the upload failed, but this is fine // This throws if the upload failed, but this is fine
// since it will have written it to the db and will retry. // since it will have written it to the db and will retry.
console.log("Failed to back up group session", e); logger.log("Failed to back up group session", e);
}); });
} }
@@ -955,7 +956,7 @@ MegolmDecryption.prototype.onRoomKeyEvent = function(event) {
).catch((e) => { ).catch((e) => {
// This throws if the upload failed, but this is fine // This throws if the upload failed, but this is fine
// since it will have written it to the db and will retry. // since it will have written it to the db and will retry.
console.log("Failed to back up group session", e); logger.log("Failed to back up group session", e);
}); });
} }
}).catch((e) => { }).catch((e) => {
@@ -1088,7 +1089,7 @@ MegolmDecryption.prototype.importRoomKey = function(session) {
).catch((e) => { ).catch((e) => {
// This throws if the upload failed, but this is fine // This throws if the upload failed, but this is fine
// since it will have written it to the db and will retry. // since it will have written it to the db and will retry.
console.log("Failed to back up group session", e); logger.log("Failed to back up group session", e);
}); });
} }
// have another go at decrypting events sent with this session. // have another go at decrypting events sent with this session.

View File

@@ -197,11 +197,11 @@ utils.inherits(Crypto, EventEmitter);
* Returns a promise which resolves once the crypto module is ready for use. * Returns a promise which resolves once the crypto module is ready for use.
*/ */
Crypto.prototype.init = async function() { Crypto.prototype.init = async function() {
console.log("Crypto: initialising Olm..."); logger.log("Crypto: initialising Olm...");
await global.Olm.init(); await global.Olm.init();
console.log("Crypto: initialising Olm device..."); logger.log("Crypto: initialising Olm device...");
await this._olmDevice.init(); await this._olmDevice.init();
console.log("Crypto: loading device list..."); logger.log("Crypto: loading device list...");
await this._deviceList.load(); await this._deviceList.load();
// build our device keys: these will later be uploaded // build our device keys: these will later be uploaded
@@ -210,7 +210,7 @@ Crypto.prototype.init = async function() {
this._deviceKeys["curve25519:" + this._deviceId] = this._deviceKeys["curve25519:" + this._deviceId] =
this._olmDevice.deviceCurve25519Key; this._olmDevice.deviceCurve25519Key;
console.log("Crypto: fetching own devices..."); logger.log("Crypto: fetching own devices...");
let myDevices = this._deviceList.getRawStoredDevicesForUser( let myDevices = this._deviceList.getRawStoredDevicesForUser(
this._userId, this._userId,
); );
@@ -221,7 +221,7 @@ Crypto.prototype.init = async function() {
if (!myDevices[this._deviceId]) { if (!myDevices[this._deviceId]) {
// add our own deviceinfo to the cryptoStore // add our own deviceinfo to the cryptoStore
console.log("Crypto: adding this device to the store..."); logger.log("Crypto: adding this device to the store...");
const deviceInfo = { const deviceInfo = {
keys: this._deviceKeys, keys: this._deviceKeys,
algorithms: this._supportedAlgorithms, algorithms: this._supportedAlgorithms,
@@ -236,7 +236,7 @@ Crypto.prototype.init = async function() {
this._deviceList.saveIfDirty(); this._deviceList.saveIfDirty();
} }
console.log("Crypto: checking for key backup..."); logger.log("Crypto: checking for key backup...");
this._checkAndStartKeyBackup(); this._checkAndStartKeyBackup();
}; };
@@ -247,9 +247,9 @@ Crypto.prototype.init = async function() {
* to it. * to it.
*/ */
Crypto.prototype._checkAndStartKeyBackup = async function() { Crypto.prototype._checkAndStartKeyBackup = async function() {
console.log("Checking key backup status..."); logger.log("Checking key backup status...");
if (this._baseApis.isGuest()) { if (this._baseApis.isGuest()) {
console.log("Skipping key backup check since user is guest"); logger.log("Skipping key backup check since user is guest");
this._checkedForBackup = true; this._checkedForBackup = true;
return null; return null;
} }
@@ -257,7 +257,7 @@ Crypto.prototype._checkAndStartKeyBackup = async function() {
try { try {
backupInfo = await this._baseApis.getKeyBackupVersion(); backupInfo = await this._baseApis.getKeyBackupVersion();
} catch (e) { } catch (e) {
console.log("Error checking for active key backup", e); logger.log("Error checking for active key backup", e);
if (e.httpStatus / 100 === 4) { if (e.httpStatus / 100 === 4) {
// well that's told us. we won't try again. // well that's told us. we won't try again.
this._checkedForBackup = true; this._checkedForBackup = true;
@@ -269,27 +269,27 @@ Crypto.prototype._checkAndStartKeyBackup = async function() {
const trustInfo = await this.isKeyBackupTrusted(backupInfo); const trustInfo = await this.isKeyBackupTrusted(backupInfo);
if (trustInfo.usable && !this.backupInfo) { if (trustInfo.usable && !this.backupInfo) {
console.log( logger.log(
"Found usable key backup v" + backupInfo.version + "Found usable key backup v" + backupInfo.version +
": enabling key backups", ": enabling key backups",
); );
this._baseApis.enableKeyBackup(backupInfo); this._baseApis.enableKeyBackup(backupInfo);
} else if (!trustInfo.usable && this.backupInfo) { } else if (!trustInfo.usable && this.backupInfo) {
console.log("No usable key backup: disabling key backup"); logger.log("No usable key backup: disabling key backup");
this._baseApis.disableKeyBackup(); this._baseApis.disableKeyBackup();
} else if (!trustInfo.usable && !this.backupInfo) { } else if (!trustInfo.usable && !this.backupInfo) {
console.log("No usable key backup: not enabling key backup"); logger.log("No usable key backup: not enabling key backup");
} else if (trustInfo.usable && this.backupInfo) { } else if (trustInfo.usable && this.backupInfo) {
// may not be the same version: if not, we should switch // may not be the same version: if not, we should switch
if (backupInfo.version !== this.backupInfo.version) { if (backupInfo.version !== this.backupInfo.version) {
console.log( logger.log(
"On backup version " + this.backupInfo.version + " but found " + "On backup version " + this.backupInfo.version + " but found " +
"version " + backupInfo.version + ": switching.", "version " + backupInfo.version + ": switching.",
); );
this._baseApis.disableKeyBackup(); this._baseApis.disableKeyBackup();
this._baseApis.enableKeyBackup(backupInfo); this._baseApis.enableKeyBackup(backupInfo);
} else { } else {
console.log("Backup version " + backupInfo.version + " still current"); logger.log("Backup version " + backupInfo.version + " still current");
} }
} }
@@ -359,7 +359,7 @@ Crypto.prototype.isKeyBackupTrusted = async function(backupInfo) {
for (const keyId of Object.keys(mySigs)) { for (const keyId of Object.keys(mySigs)) {
const keyIdParts = keyId.split(':'); const keyIdParts = keyId.split(':');
if (keyIdParts[0] !== 'ed25519') { if (keyIdParts[0] !== 'ed25519') {
console.log("Ignoring unknown signature type: " + keyIdParts[0]); logger.log("Ignoring unknown signature type: " + keyIdParts[0]);
continue; continue;
} }
const sigInfo = { deviceId: keyIdParts[1] }; // XXX: is this how we're supposed to get the device ID? const sigInfo = { deviceId: keyIdParts[1] }; // XXX: is this how we're supposed to get the device ID?
@@ -1172,7 +1172,7 @@ Crypto.prototype.scheduleKeyBackupSend = async function(maxDelay = 10000) {
numFailures = 0; numFailures = 0;
} catch (err) { } catch (err) {
numFailures++; numFailures++;
console.log("Key backup request failed", err); logger.log("Key backup request failed", err);
if (err.data) { if (err.data) {
if ( if (
err.data.errcode == 'M_NOT_FOUND' || err.data.errcode == 'M_NOT_FOUND' ||
@@ -1878,7 +1878,7 @@ Crypto.prototype._onKeyVerificationMessage = function(event) {
if (!handler) { if (!handler) {
return; return;
} else if (event.getType() === "m.key.verification.cancel") { } else if (event.getType() === "m.key.verification.cancel") {
console.log(event); logger.log(event);
if (handler.verifier) { if (handler.verifier) {
handler.verifier.cancel(event); handler.verifier.cancel(event);
} else if (handler.request && handler.request.cancel) { } else if (handler.request && handler.request.cancel) {

View File

@@ -694,7 +694,7 @@ function promiseifyTxn(txn) {
if (txn._mx_abortexception !== undefined) { if (txn._mx_abortexception !== undefined) {
reject(txn._mx_abortexception); reject(txn._mx_abortexception);
} else { } else {
console.log("Error performing indexeddb txn", event); logger.log("Error performing indexeddb txn", event);
reject(event.target.error); reject(event.target.error);
} }
}; };
@@ -702,7 +702,7 @@ function promiseifyTxn(txn) {
if (txn._mx_abortexception !== undefined) { if (txn._mx_abortexception !== undefined) {
reject(txn._mx_abortexception); reject(txn._mx_abortexception);
} else { } else {
console.log("Error performing indexeddb txn", event); localStorage.log("Error performing indexeddb txn", event);
reject(event.target.error); reject(event.target.error);
} }
}; };

View File

@@ -90,7 +90,7 @@ export default class IndexedDBCryptoStore {
}; };
req.onerror = (ev) => { req.onerror = (ev) => {
console.log("Error connecting to indexeddb", ev); logger.log("Error connecting to indexeddb", ev);
reject(ev.target.error); reject(ev.target.error);
}; };
@@ -160,7 +160,7 @@ export default class IndexedDBCryptoStore {
}; };
req.onerror = (ev) => { req.onerror = (ev) => {
console.log("Error deleting data from indexeddb", ev); logger.log("Error deleting data from indexeddb", ev);
reject(ev.target.error); reject(ev.target.error);
}; };

View File

@@ -22,6 +22,7 @@ import Promise from 'bluebird';
const parseContentType = require('content-type').parse; const parseContentType = require('content-type').parse;
const utils = require("./utils"); const utils = require("./utils");
import logger from '../src/logger';
// we use our own implementation of setTimeout, so that if we get suspended in // we use our own implementation of setTimeout, so that if we get suspended in
// the middle of a /sync, we cancel the sync as soon as we awake, rather than // the middle of a /sync, we cancel the sync as soon as we awake, rather than
@@ -175,7 +176,7 @@ module.exports.MatrixHttpApi.prototype = {
if (global.XMLHttpRequest) { if (global.XMLHttpRequest) {
rawResponse = false; rawResponse = false;
} else { } else {
console.warn( logger.warn(
"Returning the raw JSON from uploadContent(). Future " + "Returning the raw JSON from uploadContent(). Future " +
"versions of the js-sdk will change this default, to " + "versions of the js-sdk will change this default, to " +
"return the parsed object. Set opts.rawResponse=false " + "return the parsed object. Set opts.rawResponse=false " +
@@ -188,7 +189,7 @@ module.exports.MatrixHttpApi.prototype = {
let onlyContentUri = opts.onlyContentUri; let onlyContentUri = opts.onlyContentUri;
if (!rawResponse && onlyContentUri === undefined) { if (!rawResponse && onlyContentUri === undefined) {
if (global.XMLHttpRequest) { if (global.XMLHttpRequest) {
console.warn( logger.warn(
"Returning only the content-uri from uploadContent(). " + "Returning only the content-uri from uploadContent(). " +
"Future versions of the js-sdk will change this " + "Future versions of the js-sdk will change this " +
"default, to return the whole response object. Set " + "default, to return the whole response object. Set " +

View File

@@ -21,6 +21,7 @@ import Promise from 'bluebird';
const url = require("url"); const url = require("url");
const utils = require("./utils"); const utils = require("./utils");
import logger from '../src/logger';
const EMAIL_STAGE_TYPE = "m.login.email.identity"; const EMAIL_STAGE_TYPE = "m.login.email.identity";
const MSISDN_STAGE_TYPE = "m.login.msisdn"; const MSISDN_STAGE_TYPE = "m.login.msisdn";
@@ -268,7 +269,7 @@ InteractiveAuth.prototype = {
prom = prom.then( prom = prom.then(
function(result) { function(result) {
console.log("result from request: ", result); logger.log("result from request: ", result);
self._completionDeferred.resolve(result); self._completionDeferred.resolve(result);
}, function(error) { }, function(error) {
// sometimes UI auth errors don't come with flows // sometimes UI auth errors don't come with flows
@@ -301,7 +302,7 @@ InteractiveAuth.prototype = {
// since we don't want to suddenly fail if the internet connection // since we don't want to suddenly fail if the internet connection
// had a blip whilst we were polling // had a blip whilst we were polling
prom = prom.catch((error) => { prom = prom.catch((error) => {
console.log("Ignoring error from UI auth: " + error); logger.log("Ignoring error from UI auth: " + error);
}); });
} }
prom.done(); prom.done();
@@ -351,9 +352,9 @@ InteractiveAuth.prototype = {
*/ */
_chooseStage: function() { _chooseStage: function() {
const flow = this._chooseFlow(); const flow = this._chooseFlow();
console.log("Active flow => %s", JSON.stringify(flow)); logger.log("Active flow => %s", JSON.stringify(flow));
const nextStage = this._firstUncompletedStage(flow); const nextStage = this._firstUncompletedStage(flow);
console.log("Next stage: %s", nextStage); logger.log("Next stage: %s", nextStage);
return nextStage; return nextStage;
}, },

View File

@@ -20,6 +20,7 @@ limitations under the License.
const EventEmitter = require("events").EventEmitter; const EventEmitter = require("events").EventEmitter;
const utils = require("../utils"); const utils = require("../utils");
const EventTimeline = require("./event-timeline"); const EventTimeline = require("./event-timeline");
import logger from '../../src/logger';
// var DEBUG = false; // var DEBUG = false;
const DEBUG = true; const DEBUG = true;
@@ -27,7 +28,7 @@ const DEBUG = true;
let debuglog; let debuglog;
if (DEBUG) { if (DEBUG) {
// using bind means that we get to keep useful line numbers in the console // using bind means that we get to keep useful line numbers in the console
debuglog = console.log.bind(console); debuglog = logger.log.bind(logger);
} else { } else {
debuglog = function() {}; debuglog = function() {};
} }
@@ -405,7 +406,7 @@ EventTimelineSet.prototype.addEventsToTimeline = function(events, toStartOfTimel
} }
// time to join the timelines. // time to join the timelines.
console.info("Already have timeline for " + eventId + logger.info("Already have timeline for " + eventId +
" - joining timeline " + timeline + " to " + " - joining timeline " + timeline + " to " +
existingTimeline); existingTimeline);
@@ -419,15 +420,15 @@ EventTimelineSet.prototype.addEventsToTimeline = function(events, toStartOfTimel
if (backwardsIsLive || forwardsIsLive) { if (backwardsIsLive || forwardsIsLive) {
// The live timeline should never be spliced into a non-live position. // The live timeline should never be spliced into a non-live position.
// We use independent logging to better discover the problem at a glance. // We use independent logging to better discover the problem at a glance.
console.warn({backwardsIsLive, forwardsIsLive}); // debugging logger.warn({backwardsIsLive, forwardsIsLive}); // debugging
if (backwardsIsLive) { if (backwardsIsLive) {
console.warn( logger.warn(
"Refusing to set a preceding existingTimeLine on our " + "Refusing to set a preceding existingTimeLine on our " +
"timeline as the existingTimeLine is live (" + existingTimeline + ")", "timeline as the existingTimeLine is live (" + existingTimeline + ")",
); );
} }
if (forwardsIsLive) { if (forwardsIsLive) {
console.warn( logger.warn(
"Refusing to set our preceding timeline on a existingTimeLine " + "Refusing to set our preceding timeline on a existingTimeLine " +
"as our timeline is live (" + timeline + ")", "as our timeline is live (" + timeline + ")",
); );
@@ -447,8 +448,8 @@ EventTimelineSet.prototype.addEventsToTimeline = function(events, toStartOfTimel
// timeline we ended up on. // timeline we ended up on.
if (lastEventWasNew || !didUpdate) { if (lastEventWasNew || !didUpdate) {
if (direction === EventTimeline.FORWARDS && timeline === this._liveTimeline) { if (direction === EventTimeline.FORWARDS && timeline === this._liveTimeline) {
console.warn({lastEventWasNew, didUpdate}); // for debugging logger.warn({lastEventWasNew, didUpdate}); // for debugging
console.warn( logger.warn(
`Refusing to set forwards pagination token of live timeline ` + `Refusing to set forwards pagination token of live timeline ` +
`${timeline} to ${paginationToken}`, `${timeline} to ${paginationToken}`,
); );

View File

@@ -24,6 +24,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
import {EventEmitter} from 'events'; import {EventEmitter} from 'events';
import utils from '../utils.js'; import utils from '../utils.js';
import logger from '../../src/logger';
/** /**
* Enum for event statuses. * Enum for event statuses.
@@ -367,7 +368,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// new info. // new info.
// //
if (this._decryptionPromise) { if (this._decryptionPromise) {
console.log( logger.log(
`Event ${this.getId()} already being decrypted; queueing a retry`, `Event ${this.getId()} already being decrypted; queueing a retry`,
); );
this._retryDecryption = true; this._retryDecryption = true;
@@ -441,7 +442,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
if (e.name !== "DecryptionError") { if (e.name !== "DecryptionError") {
// not a decryption error: log the whole exception as an error // not a decryption error: log the whole exception as an error
// (and don't bother with a retry) // (and don't bother with a retry)
console.error( logger.error(
`Error decrypting event (id=${this.getId()}): ${e.stack || e}`, `Error decrypting event (id=${this.getId()}): ${e.stack || e}`,
); );
this._decryptionPromise = null; this._decryptionPromise = null;
@@ -467,7 +468,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// //
if (this._retryDecryption) { if (this._retryDecryption) {
// decryption error, but we have a retry queued. // decryption error, but we have a retry queued.
console.log( logger.log(
`Got error decrypting event (id=${this.getId()}: ` + `Got error decrypting event (id=${this.getId()}: ` +
`${e}), but retrying`, `${e}), but retrying`,
); );
@@ -476,7 +477,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// decryption error, no retries queued. Warn about the error and // decryption error, no retries queued. Warn about the error and
// set it to m.bad.encrypted. // set it to m.bad.encrypted.
console.warn( logger.warn(
`Error decrypting event (id=${this.getId()}): ${e.detailedString}`, `Error decrypting event (id=${this.getId()}): ${e.detailedString}`,
); );

View File

@@ -21,6 +21,7 @@ const EventEmitter = require("events").EventEmitter;
const utils = require("../utils"); const utils = require("../utils");
const RoomMember = require("./room-member"); const RoomMember = require("./room-member");
import logger from '../../src/logger';
// possible statuses for out-of-band member loading // possible statuses for out-of-band member loading
const OOB_STATUS_NOTSTARTED = 1; const OOB_STATUS_NOTSTARTED = 1;
@@ -447,7 +448,7 @@ RoomState.prototype.clearOutOfBandMembers = function() {
delete this.members[userId]; delete this.members[userId];
} }
}); });
console.log(`LL: RoomState removed ${count} members...`); logger.log(`LL: RoomState removed ${count} members...`);
this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;
}; };
@@ -456,11 +457,11 @@ RoomState.prototype.clearOutOfBandMembers = function() {
* @param {MatrixEvent[]} stateEvents array of membership state events * @param {MatrixEvent[]} stateEvents array of membership state events
*/ */
RoomState.prototype.setOutOfBandMembers = function(stateEvents) { RoomState.prototype.setOutOfBandMembers = function(stateEvents) {
console.log(`LL: RoomState about to set ${stateEvents.length} OOB members ...`); logger.log(`LL: RoomState about to set ${stateEvents.length} OOB members ...`);
if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) { if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {
return; return;
} }
console.log(`LL: RoomState put in OOB_STATUS_FINISHED state ...`); logger.log(`LL: RoomState put in OOB_STATUS_FINISHED state ...`);
this._oobMemberFlags.status = OOB_STATUS_FINISHED; this._oobMemberFlags.status = OOB_STATUS_FINISHED;
stateEvents.forEach((e) => this._setOutOfBandMember(e)); stateEvents.forEach((e) => this._setOutOfBandMember(e));
}; };

View File

@@ -29,6 +29,7 @@ const ContentRepo = require("../content-repo");
const EventTimeline = require("./event-timeline"); const EventTimeline = require("./event-timeline");
const EventTimelineSet = require("./event-timeline-set"); const EventTimelineSet = require("./event-timeline-set");
import logger from '../../src/logger';
import ReEmitter from '../ReEmitter'; import ReEmitter from '../ReEmitter';
// These constants are used as sane defaults when the homeserver doesn't support // These constants are used as sane defaults when the homeserver doesn't support
@@ -206,7 +207,7 @@ utils.inherits(Room, EventEmitter);
Room.prototype.getVersion = function() { Room.prototype.getVersion = function() {
const createEvent = this.currentState.getStateEvents("m.room.create", ""); const createEvent = this.currentState.getStateEvents("m.room.create", "");
if (!createEvent) { if (!createEvent) {
console.warn("Room " + this.room_id + " does not have an m.room.create event"); logger.warn("Room " + this.room_id + " does not have an m.room.create event");
return '1'; return '1';
} }
const ver = createEvent.getContent()['room_version']; const ver = createEvent.getContent()['room_version'];
@@ -260,8 +261,8 @@ Room.prototype.getRecommendedVersion = async function() {
} }
const currentVersion = this.getVersion(); const currentVersion = this.getVersion();
console.log(`[${this.roomId}] Current version: ${currentVersion}`); logger.log(`[${this.roomId}] Current version: ${currentVersion}`);
console.log(`[${this.roomId}] Version capability: `, versionCap); logger.log(`[${this.roomId}] Version capability: `, versionCap);
const result = { const result = {
version: currentVersion, version: currentVersion,
@@ -283,9 +284,9 @@ Room.prototype.getRecommendedVersion = async function() {
result.needsUpgrade = true; result.needsUpgrade = true;
result.urgent = !!this.getVersion().match(/^[0-9]+[0-9.]*$/g); result.urgent = !!this.getVersion().match(/^[0-9]+[0-9.]*$/g);
if (result.urgent) { if (result.urgent) {
console.warn(`URGENT upgrade required on ${this.roomId}`); logger.warn(`URGENT upgrade required on ${this.roomId}`);
} else { } else {
console.warn(`Non-urgent upgrade required on ${this.roomId}`); logger.warn(`Non-urgent upgrade required on ${this.roomId}`);
} }
return Promise.resolve(result); return Promise.resolve(result);
} }
@@ -468,7 +469,7 @@ Room.prototype._loadMembers = async function() {
if (rawMembersEvents === null) { if (rawMembersEvents === null) {
fromServer = true; fromServer = true;
rawMembersEvents = await this._loadMembersFromServer(); rawMembersEvents = await this._loadMembersFromServer();
console.log(`LL: got ${rawMembersEvents.length} ` + logger.log(`LL: got ${rawMembersEvents.length} ` +
`members from server for room ${this.roomId}`); `members from server for room ${this.roomId}`);
} }
const memberEvents = rawMembersEvents.map(this._client.getEventMapper()); const memberEvents = rawMembersEvents.map(this._client.getEventMapper());
@@ -512,21 +513,21 @@ Room.prototype.loadMembersIfNeeded = function() {
const oobMembers = this.currentState.getMembers() const oobMembers = this.currentState.getMembers()
.filter((m) => m.isOutOfBand()) .filter((m) => m.isOutOfBand())
.map((m) => m.events.member.event); .map((m) => m.events.member.event);
console.log(`LL: telling store to write ${oobMembers.length}` logger.log(`LL: telling store to write ${oobMembers.length}`
+ ` members for room ${this.roomId}`); + ` members for room ${this.roomId}`);
const store = this._client.store; const store = this._client.store;
return store.setOutOfBandMembers(this.roomId, oobMembers) return store.setOutOfBandMembers(this.roomId, oobMembers)
// swallow any IDB error as we don't want to fail // swallow any IDB error as we don't want to fail
// because of this // because of this
.catch((err) => { .catch((err) => {
console.log("LL: storing OOB room members failed, oh well", logger.log("LL: storing OOB room members failed, oh well",
err); err);
}); });
} }
}).catch((err) => { }).catch((err) => {
// as this is not awaited anywhere, // as this is not awaited anywhere,
// at least show the error in the console // at least show the error in the console
console.error(err); logger.error(err);
}); });
this._membersPromise = inMemoryUpdate; this._membersPromise = inMemoryUpdate;
@@ -552,9 +553,9 @@ Room.prototype.clearLoadedMembersIfNeeded = async function() {
*/ */
Room.prototype._cleanupAfterLeaving = function() { Room.prototype._cleanupAfterLeaving = function() {
this.clearLoadedMembersIfNeeded().catch((err) => { this.clearLoadedMembersIfNeeded().catch((err) => {
console.error(`error after clearing loaded members from ` + logger.error(`error after clearing loaded members from ` +
`room ${this.roomId} after leaving`); `room ${this.roomId} after leaving`);
console.dir(err); logger.dir(err);
}); });
}; };
@@ -1099,7 +1100,7 @@ Room.prototype.addPendingEvent = function(event, txnId) {
if (this._opts.pendingEventOrdering == "detached") { if (this._opts.pendingEventOrdering == "detached") {
if (this._pendingEventList.some((e) => e.status === EventStatus.NOT_SENT)) { if (this._pendingEventList.some((e) => e.status === EventStatus.NOT_SENT)) {
console.warn("Setting event as NOT_SENT due to messages in the same state"); logger.warn("Setting event as NOT_SENT due to messages in the same state");
event.status = EventStatus.NOT_SENT; event.status = EventStatus.NOT_SENT;
} }
this._pendingEventList.push(event); this._pendingEventList.push(event);
@@ -1209,7 +1210,7 @@ ALLOWED_TRANSITIONS[EventStatus.CANCELLED] =
* @fires module:client~MatrixClient#event:"Room.localEchoUpdated" * @fires module:client~MatrixClient#event:"Room.localEchoUpdated"
*/ */
Room.prototype.updatePendingEvent = function(event, newStatus, newEventId) { Room.prototype.updatePendingEvent = function(event, newStatus, newEventId) {
console.log(`setting pendingEvent status to ${newStatus} in ${event.getRoomId()}`); logger.log(`setting pendingEvent status to ${newStatus} in ${event.getRoomId()}`);
// if the message was sent, we expect an event id // if the message was sent, we expect an event id
if (newStatus == EventStatus.SENT && !newEventId) { if (newStatus == EventStatus.SENT && !newEventId) {

View File

@@ -39,9 +39,10 @@ let _realCallbackKey;
// each is an object with keys [runAt, func, params, key]. // each is an object with keys [runAt, func, params, key].
const _callbackList = []; const _callbackList = [];
import logger from '../src/logger';
// var debuglog = console.log.bind(console); // var debuglog = console.log.bind(console);
const debuglog = function() {}; const debuglog = function() {};
/** /**
* Replace the function used by this module to get the current time. * Replace the function used by this module to get the current time.
* *
@@ -170,7 +171,7 @@ function _runCallbacks() {
try { try {
cb.func.apply(global, cb.params); cb.func.apply(global, cb.params);
} catch (e) { } catch (e) {
console.error("Uncaught exception in callback function", logger.error("Uncaught exception in callback function",
e.stack || e); e.stack || e);
} }
} }

View File

@@ -21,6 +21,7 @@ limitations under the License.
*/ */
const utils = require("./utils"); const utils = require("./utils");
import Promise from 'bluebird'; import Promise from 'bluebird';
import logger from '../src/logger';
const DEBUG = false; // set true to enable console logging. const DEBUG = false; // set true to enable console logging.
@@ -269,7 +270,7 @@ function _removeNextEvent(scheduler, queueName) {
function debuglog() { function debuglog() {
if (DEBUG) { if (DEBUG) {
console.log(...arguments); logger.log(...arguments);
} }
} }

View File

@@ -19,6 +19,7 @@ import Promise from 'bluebird';
import SyncAccumulator from "../sync-accumulator"; import SyncAccumulator from "../sync-accumulator";
import utils from "../utils"; import utils from "../utils";
import * as IndexedDBHelpers from "../indexeddb-helpers"; import * as IndexedDBHelpers from "../indexeddb-helpers";
import logger from '../../src/logger';
const VERSION = 3; const VERSION = 3;
@@ -146,7 +147,7 @@ LocalIndexedDBStoreBackend.prototype = {
*/ */
connect: function() { connect: function() {
if (!this._disconnected) { if (!this._disconnected) {
console.log( logger.log(
`LocalIndexedDBStoreBackend.connect: already connected or connecting`, `LocalIndexedDBStoreBackend.connect: already connected or connecting`,
); );
return Promise.resolve(); return Promise.resolve();
@@ -154,14 +155,14 @@ LocalIndexedDBStoreBackend.prototype = {
this._disconnected = false; this._disconnected = false;
console.log( logger.log(
`LocalIndexedDBStoreBackend.connect: connecting...`, `LocalIndexedDBStoreBackend.connect: connecting...`,
); );
const req = this.indexedDB.open(this._dbName, VERSION); const req = this.indexedDB.open(this._dbName, VERSION);
req.onupgradeneeded = (ev) => { req.onupgradeneeded = (ev) => {
const db = ev.target.result; const db = ev.target.result;
const oldVersion = ev.oldVersion; const oldVersion = ev.oldVersion;
console.log( logger.log(
`LocalIndexedDBStoreBackend.connect: upgrading from ${oldVersion}`, `LocalIndexedDBStoreBackend.connect: upgrading from ${oldVersion}`,
); );
if (oldVersion < 1) { // The database did not previously exist. if (oldVersion < 1) { // The database did not previously exist.
@@ -178,16 +179,16 @@ LocalIndexedDBStoreBackend.prototype = {
}; };
req.onblocked = () => { req.onblocked = () => {
console.log( logger.log(
`can't yet open LocalIndexedDBStoreBackend because it is open elsewhere`, `can't yet open LocalIndexedDBStoreBackend because it is open elsewhere`,
); );
}; };
console.log( logger.log(
`LocalIndexedDBStoreBackend.connect: awaiting connection...`, `LocalIndexedDBStoreBackend.connect: awaiting connection...`,
); );
return reqAsEventPromise(req).then((ev) => { return reqAsEventPromise(req).then((ev) => {
console.log( logger.log(
`LocalIndexedDBStoreBackend.connect: connected`, `LocalIndexedDBStoreBackend.connect: connected`,
); );
this.db = ev.target.result; this.db = ev.target.result;
@@ -215,7 +216,7 @@ LocalIndexedDBStoreBackend.prototype = {
this._loadAccountData(), this._loadAccountData(),
this._loadSyncData(), this._loadSyncData(),
]).then(([accountData, syncData]) => { ]).then(([accountData, syncData]) => {
console.log( logger.log(
`LocalIndexedDBStoreBackend: loaded initial data`, `LocalIndexedDBStoreBackend: loaded initial data`,
); );
this._syncAccumulator.accumulate({ this._syncAccumulator.accumulate({
@@ -273,7 +274,7 @@ LocalIndexedDBStoreBackend.prototype = {
reject(err); reject(err);
}; };
}).then((events) => { }).then((events) => {
console.log(`LL: got ${events && events.length}` + logger.log(`LL: got ${events && events.length}` +
` membershipEvents from storage for room ${roomId} ...`); ` membershipEvents from storage for room ${roomId} ...`);
return events; return events;
}); });
@@ -287,7 +288,7 @@ LocalIndexedDBStoreBackend.prototype = {
* @param {event[]} membershipEvents the membership events to store * @param {event[]} membershipEvents the membership events to store
*/ */
setOutOfBandMembers: async function(roomId, membershipEvents) { setOutOfBandMembers: async function(roomId, membershipEvents) {
console.log(`LL: backend about to store ${membershipEvents.length}` + logger.log(`LL: backend about to store ${membershipEvents.length}` +
` members for ${roomId}`); ` members for ${roomId}`);
const tx = this.db.transaction(["oob_membership_events"], "readwrite"); const tx = this.db.transaction(["oob_membership_events"], "readwrite");
const store = tx.objectStore("oob_membership_events"); const store = tx.objectStore("oob_membership_events");
@@ -306,7 +307,7 @@ LocalIndexedDBStoreBackend.prototype = {
}; };
store.put(markerObject); store.put(markerObject);
await txnAsPromise(tx); await txnAsPromise(tx);
console.log(`LL: backend done storing for ${roomId}!`); logger.log(`LL: backend done storing for ${roomId}!`);
}, },
clearOutOfBandMembers: async function(roomId) { clearOutOfBandMembers: async function(roomId) {
@@ -341,7 +342,7 @@ LocalIndexedDBStoreBackend.prototype = {
[roomId, maxStateKey], [roomId, maxStateKey],
); );
console.log(`LL: Deleting all users + marker in storage for ` + logger.log(`LL: Deleting all users + marker in storage for ` +
`room ${roomId}, with key range:`, `room ${roomId}, with key range:`,
[roomId, minStateKey], [roomId, maxStateKey]); [roomId, minStateKey], [roomId, maxStateKey]);
await reqAsPromise(writeStore.delete(membersKeyRange)); await reqAsPromise(writeStore.delete(membersKeyRange));
@@ -354,11 +355,11 @@ LocalIndexedDBStoreBackend.prototype = {
*/ */
clearDatabase: function() { clearDatabase: function() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log(`Removing indexeddb instance: ${this._dbName}`); logger.log(`Removing indexeddb instance: ${this._dbName}`);
const req = this.indexedDB.deleteDatabase(this._dbName); const req = this.indexedDB.deleteDatabase(this._dbName);
req.onblocked = () => { req.onblocked = () => {
console.log( logger.log(
`can't yet delete indexeddb ${this._dbName}` + `can't yet delete indexeddb ${this._dbName}` +
` because it is open elsewhere`, ` because it is open elsewhere`,
); );
@@ -368,14 +369,14 @@ LocalIndexedDBStoreBackend.prototype = {
// in firefox, with indexedDB disabled, this fails with a // in firefox, with indexedDB disabled, this fails with a
// DOMError. We treat this as non-fatal, so that we can still // DOMError. We treat this as non-fatal, so that we can still
// use the app. // use the app.
console.warn( logger.warn(
`unable to delete js-sdk store indexeddb: ${ev.target.error}`, `unable to delete js-sdk store indexeddb: ${ev.target.error}`,
); );
resolve(); resolve();
}; };
req.onsuccess = () => { req.onsuccess = () => {
console.log(`Removed indexeddb instance: ${this._dbName}`); logger.log(`Removed indexeddb instance: ${this._dbName}`);
resolve(); resolve();
}; };
}); });
@@ -434,7 +435,7 @@ LocalIndexedDBStoreBackend.prototype = {
* @return {Promise} Resolves if the data was persisted. * @return {Promise} Resolves if the data was persisted.
*/ */
_persistSyncData: function(nextBatch, roomsData, groupsData) { _persistSyncData: function(nextBatch, roomsData, groupsData) {
console.log("Persisting sync data up to ", nextBatch); logger.log("Persisting sync data up to ", nextBatch);
return Promise.try(() => { return Promise.try(() => {
const txn = this.db.transaction(["sync"], "readwrite"); const txn = this.db.transaction(["sync"], "readwrite");
const store = txn.objectStore("sync"); const store = txn.objectStore("sync");
@@ -508,7 +509,7 @@ LocalIndexedDBStoreBackend.prototype = {
* @return {Promise<Object[]>} A list of raw global account events. * @return {Promise<Object[]>} A list of raw global account events.
*/ */
_loadAccountData: function() { _loadAccountData: function() {
console.log( logger.log(
`LocalIndexedDBStoreBackend: loading account data...`, `LocalIndexedDBStoreBackend: loading account data...`,
); );
return Promise.try(() => { return Promise.try(() => {
@@ -517,7 +518,7 @@ LocalIndexedDBStoreBackend.prototype = {
return selectQuery(store, undefined, (cursor) => { return selectQuery(store, undefined, (cursor) => {
return cursor.value; return cursor.value;
}).then((result) => { }).then((result) => {
console.log( logger.log(
`LocalIndexedDBStoreBackend: loaded account data`, `LocalIndexedDBStoreBackend: loaded account data`,
); );
return result; return result;
@@ -530,7 +531,7 @@ LocalIndexedDBStoreBackend.prototype = {
* @return {Promise<Object>} An object with "roomsData" and "nextBatch" keys. * @return {Promise<Object>} An object with "roomsData" and "nextBatch" keys.
*/ */
_loadSyncData: function() { _loadSyncData: function() {
console.log( logger.log(
`LocalIndexedDBStoreBackend: loading sync data...`, `LocalIndexedDBStoreBackend: loading sync data...`,
); );
return Promise.try(() => { return Promise.try(() => {
@@ -539,11 +540,11 @@ LocalIndexedDBStoreBackend.prototype = {
return selectQuery(store, undefined, (cursor) => { return selectQuery(store, undefined, (cursor) => {
return cursor.value; return cursor.value;
}).then((results) => { }).then((results) => {
console.log( logger.log(
`LocalIndexedDBStoreBackend: loaded sync data`, `LocalIndexedDBStoreBackend: loaded sync data`,
); );
if (results.length > 1) { if (results.length > 1) {
console.warn("loadSyncData: More than 1 sync row found."); logger.warn("loadSyncData: More than 1 sync row found.");
} }
return (results.length > 0 ? results[0] : {}); return (results.length > 0 ? results[0] : {});
}); });

View File

@@ -16,6 +16,7 @@ limitations under the License.
*/ */
import Promise from 'bluebird'; import Promise from 'bluebird';
import logger from '../../src/logger';
/** /**
* An IndexedDB store backend where the actual backend sits in a web * An IndexedDB store backend where the actual backend sits in a web
@@ -140,7 +141,7 @@ RemoteIndexedDBStoreBackend.prototype = {
// tell the worker the db name. // tell the worker the db name.
this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(() => { this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(() => {
console.log("IndexedDB worker is ready"); logger.log("IndexedDB worker is ready");
}); });
} }
return this._startPromise; return this._startPromise;
@@ -170,13 +171,13 @@ RemoteIndexedDBStoreBackend.prototype = {
if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') { if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') {
if (msg.seq === undefined) { if (msg.seq === undefined) {
console.error("Got reply from worker with no seq"); logger.error("Got reply from worker with no seq");
return; return;
} }
const def = this._inFlight[msg.seq]; const def = this._inFlight[msg.seq];
if (def === undefined) { if (def === undefined) {
console.error("Got reply for unknown seq " + msg.seq); logger.error("Got reply for unknown seq " + msg.seq);
return; return;
} }
delete this._inFlight[msg.seq]; delete this._inFlight[msg.seq];
@@ -189,7 +190,7 @@ RemoteIndexedDBStoreBackend.prototype = {
def.reject(error); def.reject(error);
} }
} else { } else {
console.warn("Unrecognised message from worker: " + msg); logger.warn("Unrecognised message from worker: " + msg);
} }
}, },
}; };

View File

@@ -17,6 +17,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
import LocalIndexedDBStoreBackend from "./indexeddb-local-backend.js"; import LocalIndexedDBStoreBackend from "./indexeddb-local-backend.js";
import logger from '../../src/logger';
/** /**
* This class lives in the webworker and drives a LocalIndexedDBStoreBackend * This class lives in the webworker and drives a LocalIndexedDBStoreBackend
@@ -129,8 +130,8 @@ class IndexedDBStoreWorker {
result: ret, result: ret,
}); });
}, (err) => { }, (err) => {
console.error("Error running command: "+msg.command); logger.error("Error running command: "+msg.command);
console.error(err); logger.error(err);
this.postMessage.call(null, { this.postMessage.call(null, {
command: 'cmd_fail', command: 'cmd_fail',
seq: msg.seq, seq: msg.seq,

View File

@@ -25,6 +25,7 @@ import LocalIndexedDBStoreBackend from "./indexeddb-local-backend.js";
import RemoteIndexedDBStoreBackend from "./indexeddb-remote-backend.js"; import RemoteIndexedDBStoreBackend from "./indexeddb-remote-backend.js";
import User from "../models/user"; import User from "../models/user";
import {MatrixEvent} from "../models/event"; import {MatrixEvent} from "../models/event";
import logger from '../../src/logger';
/** /**
* This is an internal module. See {@link IndexedDBStore} for the public class. * This is an internal module. See {@link IndexedDBStore} for the public class.
@@ -124,16 +125,16 @@ IndexedDBStore.exists = function(indexedDB, dbName) {
*/ */
IndexedDBStore.prototype.startup = function() { IndexedDBStore.prototype.startup = function() {
if (this.startedUp) { if (this.startedUp) {
console.log(`IndexedDBStore.startup: already started`); logger.log(`IndexedDBStore.startup: already started`);
return Promise.resolve(); return Promise.resolve();
} }
console.log(`IndexedDBStore.startup: connecting to backend`); logger.log(`IndexedDBStore.startup: connecting to backend`);
return this.backend.connect().then(() => { return this.backend.connect().then(() => {
console.log(`IndexedDBStore.startup: loading presence events`); logger.log(`IndexedDBStore.startup: loading presence events`);
return this.backend.getUserPresenceEvents(); return this.backend.getUserPresenceEvents();
}).then((userPresenceEvents) => { }).then((userPresenceEvents) => {
console.log(`IndexedDBStore.startup: processing presence events`); logger.log(`IndexedDBStore.startup: processing presence events`);
userPresenceEvents.forEach(([userId, rawEvent]) => { userPresenceEvents.forEach(([userId, rawEvent]) => {
const u = new User(userId); const u = new User(userId);
if (rawEvent) { if (rawEvent) {
@@ -174,9 +175,9 @@ IndexedDBStore.prototype.getSavedSyncToken = degradable(function() {
IndexedDBStore.prototype.deleteAllData = degradable(function() { IndexedDBStore.prototype.deleteAllData = degradable(function() {
MemoryStore.prototype.deleteAllData.call(this); MemoryStore.prototype.deleteAllData.call(this);
return this.backend.clearDatabase().then(() => { return this.backend.clearDatabase().then(() => {
console.log("Deleted indexeddb data."); logger.log("Deleted indexeddb data.");
}, (err) => { }, (err) => {
console.error(`Failed to delete indexeddb data: ${err}`); logger.error(`Failed to delete indexeddb data: ${err}`);
throw err; throw err;
}); });
}); });
@@ -290,18 +291,18 @@ function degradable(func, fallback) {
try { try {
return await func.call(this, ...args); return await func.call(this, ...args);
} catch (e) { } catch (e) {
console.error("IndexedDBStore failure, degrading to MemoryStore", e); logger.error("IndexedDBStore failure, degrading to MemoryStore", e);
this.emit("degraded", e); this.emit("degraded", e);
try { try {
// We try to delete IndexedDB after degrading since this store is only a // We try to delete IndexedDB after degrading since this store is only a
// cache (the app will still function correctly without the data). // cache (the app will still function correctly without the data).
// It's possible that deleting repair IndexedDB for the next app load, // It's possible that deleting repair IndexedDB for the next app load,
// potenially by making a little more space available. // potenially by making a little more space available.
console.log("IndexedDBStore trying to delete degraded data"); logger.log("IndexedDBStore trying to delete degraded data");
await this.backend.clearDatabase(); await this.backend.clearDatabase();
console.log("IndexedDBStore delete after degrading succeeeded"); logger.log("IndexedDBStore delete after degrading succeeeded");
} catch (e) { } catch (e) {
console.warn("IndexedDBStore delete after degrading failed", e); logger.warn("IndexedDBStore delete after degrading failed", e);
} }
// Degrade the store from being an instance of `IndexedDBStore` to instead be // Degrade the store from being an instance of `IndexedDBStore` to instead be
// an instance of `MemoryStore` so that future API calls use the memory path // an instance of `MemoryStore` so that future API calls use the memory path

View File

@@ -257,7 +257,7 @@ function removeByPrefix(store, prefix) {
function debuglog() { function debuglog() {
if (DEBUG) { if (DEBUG) {
console.log(...arguments); logger.log(...arguments);
} }
} }

View File

@@ -21,6 +21,7 @@ limitations under the License.
*/ */
import utils from "./utils"; import utils from "./utils";
import logger from '../src/logger';
/** /**
@@ -168,7 +169,7 @@ class SyncAccumulator {
} }
break; break;
default: default:
console.error("Unknown cateogory: ", category); logger.error("Unknown cateogory: ", category);
} }
} }

View File

@@ -32,6 +32,7 @@ const Group = require('./models/group');
const utils = require("./utils"); const utils = require("./utils");
const Filter = require("./filter"); const Filter = require("./filter");
const EventTimeline = require("./models/event-timeline"); const EventTimeline = require("./models/event-timeline");
import logger from '../src/logger';
import {InvalidStoreError} from './errors'; import {InvalidStoreError} from './errors';
@@ -58,7 +59,7 @@ function debuglog(...params) {
if (!DEBUG) { if (!DEBUG) {
return; return;
} }
console.log(...params); logger.log(...params);
} }
@@ -386,7 +387,7 @@ SyncApi.prototype._peekPoll = function(peekRoom, token) {
peekRoom.addLiveEvents(events); peekRoom.addLiveEvents(events);
self._peekPoll(peekRoom, res.end); self._peekPoll(peekRoom, res.end);
}, function(err) { }, function(err) {
console.error("[%s] Peek poll failed: %s", peekRoom.roomId, err); logger.error("[%s] Peek poll failed: %s", peekRoom.roomId, err);
setTimeout(function() { setTimeout(function() {
self._peekPoll(peekRoom, token); self._peekPoll(peekRoom, token);
}, 30 * 1000); }, 30 * 1000);
@@ -448,7 +449,7 @@ SyncApi.prototype._wasLazyLoadingToggled = async function(lazyLoadMembers) {
SyncApi.prototype._shouldAbortSync = function(error) { SyncApi.prototype._shouldAbortSync = function(error) {
if (error.errcode === "M_UNKNOWN_TOKEN") { if (error.errcode === "M_UNKNOWN_TOKEN") {
// The logout already happened, we just need to stop. // The logout already happened, we just need to stop.
console.warn("Token no longer valid - assuming logout"); logger.warn("Token no longer valid - assuming logout");
this.stop(); this.stop();
return true; return true;
} }
@@ -488,7 +489,7 @@ SyncApi.prototype.sync = function() {
client.pushRules = result; client.pushRules = result;
} catch (err) { } catch (err) {
console.error("Getting push rules failed", err); logger.error("Getting push rules failed", err);
if (self._shouldAbortSync(err)) return; if (self._shouldAbortSync(err)) return;
// wait for saved sync to complete before doing anything else, // wait for saved sync to complete before doing anything else,
// otherwise the sync state will end up being incorrect // otherwise the sync state will end up being incorrect
@@ -516,7 +517,7 @@ SyncApi.prototype.sync = function() {
); );
debuglog("Created and stored lazy load sync filter"); debuglog("Created and stored lazy load sync filter");
} catch (err) { } catch (err) {
console.error( logger.error(
"Creating and storing lazy load sync filter failed", "Creating and storing lazy load sync filter failed",
err, err,
); );
@@ -540,7 +541,7 @@ SyncApi.prototype.sync = function() {
// we leave the state as 'ERROR' which isn't great since this normally means // we leave the state as 'ERROR' which isn't great since this normally means
// we're retrying. The client must be stopped before clearing the stores anyway // we're retrying. The client must be stopped before clearing the stores anyway
// so the app should stop the client, clear the store and start it again. // so the app should stop the client, clear the store and start it again.
console.warn("InvalidStoreError: store is not usable: stopping sync."); logger.warn("InvalidStoreError: store is not usable: stopping sync.");
return; return;
} }
if (this.opts.lazyLoadMembers && this.opts.crypto) { if (this.opts.lazyLoadMembers && this.opts.crypto) {
@@ -551,7 +552,7 @@ SyncApi.prototype.sync = function() {
await this.client._storeClientOptions(); await this.client._storeClientOptions();
debuglog("Stored client options"); debuglog("Stored client options");
} catch (err) { } catch (err) {
console.error("Storing client options failed", err); logger.error("Storing client options failed", err);
throw err; throw err;
} }
@@ -574,7 +575,7 @@ SyncApi.prototype.sync = function() {
getFilterName(client.credentials.userId), filter, getFilterName(client.credentials.userId), filter,
); );
} catch (err) { } catch (err) {
console.error("Getting filter failed", err); logger.error("Getting filter failed", err);
if (self._shouldAbortSync(err)) return; if (self._shouldAbortSync(err)) return;
// wait for saved sync to complete before doing anything else, // wait for saved sync to complete before doing anything else,
// otherwise the sync state will end up being incorrect // otherwise the sync state will end up being incorrect
@@ -621,7 +622,7 @@ SyncApi.prototype.sync = function() {
return self._syncFromCache(savedSync); return self._syncFromCache(savedSync);
} }
}).catch(err => { }).catch(err => {
console.error("Getting saved sync failed", err); logger.error("Getting saved sync failed", err);
}); });
// Now start the first incremental sync request: this can also // Now start the first incremental sync request: this can also
// take a while so if we set it going now, we can wait for it // take a while so if we set it going now, we can wait for it
@@ -693,7 +694,7 @@ SyncApi.prototype._syncFromCache = async function(savedSync) {
try { try {
await this._processSyncResponse(syncEventData, data); await this._processSyncResponse(syncEventData, data);
} catch(e) { } catch(e) {
console.error("Error processing cached sync", e.stack || e); logger.error("Error processing cached sync", e.stack || e);
} }
// Don't emit a prepared if we've bailed because the store is invalid: // Don't emit a prepared if we've bailed because the store is invalid:
@@ -772,7 +773,7 @@ SyncApi.prototype._sync = async function(syncOptions) {
} catch(e) { } catch(e) {
// log the exception with stack if we have it, else fall back // log the exception with stack if we have it, else fall back
// to the plain description // to the plain description
console.error("Caught /sync error", e.stack || e); logger.error("Caught /sync error", e.stack || e);
// Emit the exception for client handling // Emit the exception for client handling
this.client.emit("sync.unexpectedError", e); this.client.emit("sync.unexpectedError", e);
@@ -886,15 +887,15 @@ SyncApi.prototype._onSyncError = function(err, syncOptions) {
return; return;
} }
console.error("/sync error %s", err); logger.error("/sync error %s", err);
console.error(err); logger.error(err);
if(this._shouldAbortSync(err)) { if(this._shouldAbortSync(err)) {
return; return;
} }
this._failedSyncCount++; this._failedSyncCount++;
console.log('Number of consecutive failed sync requests:', this._failedSyncCount); logger.log('Number of consecutive failed sync requests:', this._failedSyncCount);
debuglog("Starting keep-alive"); debuglog("Starting keep-alive");
// Note that we do *not* mark the sync connection as // Note that we do *not* mark the sync connection as
@@ -1048,7 +1049,7 @@ SyncApi.prototype._processSyncResponse = async function(
content.msgtype == "m.bad.encrypted" content.msgtype == "m.bad.encrypted"
) { ) {
// the mapper already logged a warning. // the mapper already logged a warning.
console.log( logger.log(
'Ignoring undecryptable to-device event from ' + 'Ignoring undecryptable to-device event from ' +
toDeviceEvent.getSender(), toDeviceEvent.getSender(),
); );

View File

@@ -19,6 +19,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
const EventTimeline = require("./models/event-timeline"); const EventTimeline = require("./models/event-timeline");
import logger from '../src/logger';
/** /**
* @private * @private
@@ -28,7 +29,7 @@ const DEBUG = false;
/** /**
* @private * @private
*/ */
const debuglog = DEBUG ? console.log.bind(console) : function() {}; const debuglog = DEBUG ? logger.log.bind(logger) : function() {};
/** /**
* the number of times we ask the server for more events before giving up * the number of times we ask the server for more events before giving up

View File

@@ -21,6 +21,7 @@ limitations under the License.
*/ */
const utils = require("../utils"); const utils = require("../utils");
const EventEmitter = require("events").EventEmitter; const EventEmitter = require("events").EventEmitter;
import logger from '../../src/logger';
const DEBUG = true; // set true to enable console logging. const DEBUG = true; // set true to enable console logging.
// events: hangup, error(err), replaced(call), state(state, oldState) // events: hangup, error(err), replaced(call), state(state, oldState)
@@ -195,7 +196,7 @@ MatrixCall.prototype.placeScreenSharingCall =
* @param {string} queueId Arbitrary ID to track the chain of promises to be used * @param {string} queueId Arbitrary ID to track the chain of promises to be used
*/ */
MatrixCall.prototype.playElement = function(element, queueId) { MatrixCall.prototype.playElement = function(element, queueId) {
console.log("queuing play on " + queueId + " and element " + element); logger.log("queuing play on " + queueId + " and element " + element);
// XXX: FIXME: Does this leak elements, given the old promises // XXX: FIXME: Does this leak elements, given the old promises
// may hang around and retain a reference to them? // may hang around and retain a reference to them?
if (this.mediaPromises[queueId]) { if (this.mediaPromises[queueId]) {
@@ -206,10 +207,10 @@ MatrixCall.prototype.playElement = function(element, queueId) {
// these failures may be non-fatal (as in the case of unmounts) // these failures may be non-fatal (as in the case of unmounts)
this.mediaPromises[queueId] = this.mediaPromises[queueId] =
this.mediaPromises[queueId].then(function() { this.mediaPromises[queueId].then(function() {
console.log("previous promise completed for " + queueId); logger.log("previous promise completed for " + queueId);
return element.play(); return element.play();
}, function() { }, function() {
console.log("previous promise failed for " + queueId); logger.log("previous promise failed for " + queueId);
return element.play(); return element.play();
}); });
} else { } else {
@@ -224,14 +225,14 @@ MatrixCall.prototype.playElement = function(element, queueId) {
* @param {string} queueId Arbitrary ID to track the chain of promises to be used * @param {string} queueId Arbitrary ID to track the chain of promises to be used
*/ */
MatrixCall.prototype.pauseElement = function(element, queueId) { MatrixCall.prototype.pauseElement = function(element, queueId) {
console.log("queuing pause on " + queueId + " and element " + element); logger.log("queuing pause on " + queueId + " and element " + element);
if (this.mediaPromises[queueId]) { if (this.mediaPromises[queueId]) {
this.mediaPromises[queueId] = this.mediaPromises[queueId] =
this.mediaPromises[queueId].then(function() { this.mediaPromises[queueId].then(function() {
console.log("previous promise completed for " + queueId); logger.log("previous promise completed for " + queueId);
return element.pause(); return element.pause();
}, function() { }, function() {
console.log("previous promise failed for " + queueId); logger.log("previous promise failed for " + queueId);
return element.pause(); return element.pause();
}); });
} else { } else {
@@ -250,15 +251,15 @@ MatrixCall.prototype.pauseElement = function(element, queueId) {
* @param {string} queueId Arbitrary ID to track the chain of promises to be used * @param {string} queueId Arbitrary ID to track the chain of promises to be used
*/ */
MatrixCall.prototype.assignElement = function(element, srcObject, queueId) { MatrixCall.prototype.assignElement = function(element, srcObject, queueId) {
console.log("queuing assign on " + queueId + " element " + element + " for " + logger.log("queuing assign on " + queueId + " element " + element + " for " +
srcObject); srcObject);
if (this.mediaPromises[queueId]) { if (this.mediaPromises[queueId]) {
this.mediaPromises[queueId] = this.mediaPromises[queueId] =
this.mediaPromises[queueId].then(function() { this.mediaPromises[queueId].then(function() {
console.log("previous promise completed for " + queueId); logger.log("previous promise completed for " + queueId);
element.srcObject = srcObject; element.srcObject = srcObject;
}, function() { }, function() {
console.log("previous promise failed for " + queueId); logger.log("previous promise failed for " + queueId);
element.srcObject = srcObject; element.srcObject = srcObject;
}); });
} else { } else {
@@ -1159,7 +1160,7 @@ const callError = function(code, msg) {
const debuglog = function() { const debuglog = function() {
if (DEBUG) { if (DEBUG) {
console.log(...arguments); logger.log(...arguments);
} }
}; };