Merge pull request #19 from vector-im/bwindels/small-bits

Various small bits
This commit is contained in:
Bruno Windels 2020-08-17 12:15:28 +00:00 committed by GitHub
commit 0d3ab21044
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 15 deletions

View file

@ -15,18 +15,11 @@ limitations under the License.
*/ */
export function avatarInitials(name) { export function avatarInitials(name) {
let words = name.split(" "); let firstChar = name.charAt(0);
if (words.length === 1) { if (firstChar === "!" || firstChar === "@" || firstChar === "#") {
words = words[0].split("-"); firstChar = name.charAt(1);
} }
words = words.slice(0, 2); return firstChar.toUpperCase();
return words.reduce((i, w) => {
let firstChar = w.charAt(0);
if (firstChar === "!" || firstChar === "@" || firstChar === "#") {
firstChar = w.charAt(1);
}
return i + firstChar.toUpperCase();
}, "");
} }
/** /**

View file

@ -45,8 +45,12 @@ export class RoomTileViewModel extends ViewModel {
} }
compare(other) { compare(other) {
// sort by name for now // sort alphabetically
return this._room.name.localeCompare(other._room.name); const nameCmp = this._room.name.localeCompare(other._room.name);
if (nameCmp === 0) {
return this._room.id.localeCompare(other._room.id);
}
return nameCmp;
} }
get isOpen() { get isOpen() {

View file

@ -14,6 +14,17 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
export class WrappedError extends Error {
constructor(message, cause) {
super(`${message}: ${cause.message}`);
this.cause = cause;
}
get name() {
return "WrappedError";
}
}
export class HomeServerError extends Error { export class HomeServerError extends Error {
constructor(method, url, body, status) { constructor(method, url, body, status) {
super(`${body ? body.error : status} on ${method} ${url}`); super(`${body ? body.error : status} on ${method} ${url}`);

View file

@ -21,6 +21,7 @@ import {GapWriter} from "./timeline/persistence/GapWriter.js";
import {Timeline} from "./timeline/Timeline.js"; import {Timeline} from "./timeline/Timeline.js";
import {FragmentIdComparer} from "./timeline/FragmentIdComparer.js"; import {FragmentIdComparer} from "./timeline/FragmentIdComparer.js";
import {SendQueue} from "./sending/SendQueue.js"; import {SendQueue} from "./sending/SendQueue.js";
import {WrappedError} from "../error.js"
export class Room extends EventEmitter { export class Room extends EventEmitter {
constructor({roomId, storage, hsApi, emitCollectionChange, sendScheduler, pendingEvents, user}) { constructor({roomId, storage, hsApi, emitCollectionChange, sendScheduler, pendingEvents, user}) {
@ -67,8 +68,12 @@ export class Room extends EventEmitter {
} }
load(summary, txn) { load(summary, txn) {
this._summary.load(summary); try {
return this._syncWriter.load(txn); this._summary.load(summary);
return this._syncWriter.load(txn);
} catch (err) {
throw new WrappedError(`Could not load room ${this._roomId}`, err);
}
} }
sendEvent(eventType, content) { sendEvent(eventType, content) {