Go to file
Bruno Windels 7e8cc7ae00 need to return the response here, not the request wrapper
we were reading back a remote id of undefined because of this,
so when for some reason we never receive the message down from sync,
the pending message keeps sending on every load. The server ignores
the send though, because the transaction id is already used, and it returns
the remote id of the event that was already sent the previous time, but
as we were not storing this remote id, we'd just try again and again.

not receiving it through sync could have happened when we were sending a bunch of events
and then receiving (this is how we encountered this bug, while trying to repro another) the
response, but not yet the sync for the message that got wedged. Then we typed stuff on another client
so we would get a limited response for that room, and boom, we would not get the remote echo of the
event that was already sent (but because of this bug we didn't store the remote id) but no echo received yet (when we remove the pending event),
so it gets wedged!
2020-03-17 00:11:50 +01:00
doc Update e2e.md 2020-03-10 17:34:45 +00:00
prototypes prototypes for lumia idb changes (removing array keys, etc ...) 2019-06-26 22:19:40 +02:00
scripts fix unit tests by updating impunity 2020-03-13 23:26:48 +01:00
src need to return the response here, not the request wrapper 2020-03-17 00:11:50 +01:00
.editorconfig wip 2019-02-17 23:58:01 +01:00
.eslintrc.js its syncing, sort off 2019-02-10 21:25:46 +01:00
.gitignore ignore folders to store exports 2019-12-23 14:29:05 +01:00
icon.png add offline availability with service worker and appcache 2019-09-15 14:32:12 +02:00
index.html add offline availability with service worker and appcache 2019-09-15 14:32:12 +02:00
package.json cut 0.0.15 2020-03-14 21:42:24 +01:00
README.md add link to deployment 2019-11-22 09:01:57 +01:00
yarn.lock upgrade deps, also acorn to 7.1.1 because of security 2020-03-14 21:38:27 +01:00

Brawl

A minimal Matrix chat client, focused on performance, offline functionality and working on my Lumia 950 Windows Phone.

Status

Brawl can currently log you in, or pick an existing session, sync already joined rooms, fill gaps in the timeline, and send text messages. Everything is stored locally.

Showing multiple sessions, and sending messages

Why

I started writing Brawl both to have a functional matrix client on my aging phone, and to play around with some ideas I had how to use indexeddb optimally in a matrix client.

For every interaction or network response (syncing, filling a gap), Brawl starts a transaction in indexedb, and only commits it once everything went well. This helps to keep your storage always in a consistent state. As little data is kept in memory as well, and while scrolling in the above GIF, everything is loaded straight from the storage.

If you find this interesting, feel free to reach me at @bwindels:matrix.org.

How to use

You can try Brawl here, or try it locally by running yarn install (only the first time) and yarn start in the terminal, and point your browser to http://localhost:3000.