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) {
let words = name.split(" ");
if (words.length === 1) {
words = words[0].split("-");
let firstChar = name.charAt(0);
if (firstChar === "!" || firstChar === "@" || firstChar === "#") {
firstChar = name.charAt(1);
}
words = words.slice(0, 2);
return words.reduce((i, w) => {
let firstChar = w.charAt(0);
if (firstChar === "!" || firstChar === "@" || firstChar === "#") {
firstChar = w.charAt(1);
}
return i + firstChar.toUpperCase();
}, "");
return firstChar.toUpperCase();
}
/**

View file

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

View file

@ -14,6 +14,17 @@ See the License for the specific language governing permissions and
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 {
constructor(method, url, body, status) {
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 {FragmentIdComparer} from "./timeline/FragmentIdComparer.js";
import {SendQueue} from "./sending/SendQueue.js";
import {WrappedError} from "../error.js"
export class Room extends EventEmitter {
constructor({roomId, storage, hsApi, emitCollectionChange, sendScheduler, pendingEvents, user}) {
@ -67,8 +68,12 @@ export class Room extends EventEmitter {
}
load(summary, txn) {
this._summary.load(summary);
return this._syncWriter.load(txn);
try {
this._summary.load(summary);
return this._syncWriter.load(txn);
} catch (err) {
throw new WrappedError(`Could not load room ${this._roomId}`, err);
}
}
sendEvent(eventType, content) {