Bruno Windels
2fa5fa7890
add delete button in session picker
2019-10-12 21:16:48 +02:00
Bruno Windels
d367037332
very basic support for lazy loading
2019-10-12 20:24:09 +02:00
Bruno Windels
8616d79aad
make fetch errors more informative by including method and url
2019-09-15 14:31:50 +02:00
Bruno Windels
2b2b4232e9
moar send logging
2019-09-15 12:25:14 +02:00
Bruno Windels
6f527fd2e0
use openCursor where openKeyCursor is not supported
2019-09-15 12:24:46 +02:00
Bruno Windels
bbf6943455
use .get fallback where .getKey is not supported (Edge 15)
2019-09-15 12:24:27 +02:00
Bruno Windels
8e590fe53b
rename and use StorageError to deal with idb DOMerror
2019-09-15 12:23:54 +02:00
Bruno Windels
5a90b4673b
fix CORS requests failing
2019-09-15 12:23:08 +02:00
Bruno Windels
09b9eff7c1
fix remaining errors to make login work
2019-09-08 10:19:16 +02:00
Bruno Windels
49a577991b
login and session picker view models, sessions store
2019-07-31 00:06:53 +02:00
Bruno Windels
45cd85ead1
fixup: check for event entry with eventType, event isn't exposed anymore
2019-07-29 19:58:35 +02:00
Bruno Windels
8665bcb897
concat synced events in timeline with pending events for local echo
2019-07-29 19:53:58 +02:00
Bruno Windels
88a7d64091
fixup: delay not awaited, but not needed for now
2019-07-29 19:53:30 +02:00
Bruno Windels
9b94c4bb61
don't expose raw event object from entry, pending event doesn't have it
...
it only has content and *some* of the meta fields,
but we want to threat pendingevententry and evententry as one
and the same in the rest of the application, so don't give access
to entire event object.
2019-07-29 10:27:12 +02:00
Bruno Windels
56cee450d1
return syncing user id from PendingEventEntry.sender
...
add User class where we later can track display name, avatar, ...
2019-07-29 10:24:34 +02:00
Bruno Windels
b26f7df689
pending events are not certain to be sorted here
2019-07-29 09:54:34 +02:00
Bruno Windels
3ed72df620
put everything together to make it roughly work
...
no local echo yet, and send errors are being swallowed
2019-07-27 10:51:51 +02:00
Bruno Windels
851100b88a
send unsent messages after first sync
2019-07-26 22:40:39 +02:00
Bruno Windels
707988f806
better handle remote echos and hookup in session and room
2019-07-26 22:33:33 +02:00
Bruno Windels
ccb722d766
more WIP
2019-07-26 22:03:57 +02:00
Bruno Windels
f3d1128f28
WIP
2019-07-01 10:00:29 +02:00
Bruno Windels
c5b2d0c8b2
WIP
2019-06-28 00:52:54 +02:00
Bruno Windels
cd9f25ea80
convert tabs to spaces where needed
2019-06-26 22:31:36 +02:00
Bruno Windels
90a38078e0
unused import
2019-06-26 22:19:40 +02:00
Bruno Windels
b882e0ef8a
respect argument count of idb calls
...
lumia doesn't like undefined arguments if they
are being left out, so call the idb calls with
the exact amount of arguments
2019-06-26 22:02:00 +02:00
Bruno Windels
bbb5e35bcb
wrap everything that can throw a idb DOMException in StorageError
...
as lumia gives very cryptic errors without a stacktrace.
2019-06-26 22:00:50 +02:00
Bruno Windels
0fd52be710
encode idb array keys as sortable strings
...
that's why numeric parts of the keys have to be encoded
as a fixed length, "big-endian" ordered strings, so
string sorting will also sort the numeric keys correctly.
this also assumes room ids don't contain the "|" character,
we should probably escape the separator at some point.
2019-06-26 21:55:33 +02:00
Bruno Windels
106146660c
define storage keys to be 32bit for idb / web platform
...
as a preparation to serialize the eventIndex and fragmentId
as a 8 character string, part of a concatenated string PK,
as lumia doesn't support array keys.
2019-06-26 21:52:41 +02:00
Bruno Windels
ca4361248f
fallback for platforms missing AbortController
2019-06-26 19:49:49 +02:00
Bruno Windels
9cd5257959
load more events when scrolled to top
2019-06-16 17:29:33 +02:00
Bruno Windels
b47898e025
show full stack on sync error
2019-06-16 15:49:00 +02:00
Bruno Windels
1917a528c7
replace ad hoc buttons and label with SyncStatusBar
2019-06-16 10:54:16 +02:00
Bruno Windels
a4bc2dd2b0
support isOwn on messages
2019-06-16 10:53:23 +02:00
Bruno Windels
0524f06722
remove logging
2019-06-03 00:31:21 +02:00
Bruno Windels
6bdf44d114
adjust comment
2019-06-03 00:30:37 +02:00
Bruno Windels
45528580ed
fix comparator/comparer mismatch
2019-06-03 00:30:16 +02:00
Bruno Windels
3dbf5e727d
process in incoming order (reverse-chronological order if backward)
...
makes code simpler, don't need fix to undo reverse ordering of
nonOverlappingEvents. reverse looking is very likely premature
optimization as well.
2019-06-03 00:18:52 +02:00
Bruno Windels
0407829b26
fix filling gaps with overlapping events
...
although event order remains wrong, as events are reversed.
step before removing premature optimization, so it's in the git
commit log
2019-06-03 00:11:29 +02:00
Bruno Windels
c9aaa18151
return only eventId from findFirstOrLastOccurringEventId
2019-06-03 00:11:12 +02:00
Bruno Windels
7852f31f7e
clear token on pagination when events start overlapping
2019-06-02 19:28:24 +02:00
Bruno Windels
0b637f656a
timeline store requests should always be scoped to 1 fragmentId
...
as fragmentIds should not be sorted, they are a linked list
and that is what determines their order.
2019-06-02 19:27:40 +02:00
Bruno Windels
bb5f139355
fix fragmentId:0 being evaluated as falsy
2019-06-02 19:27:23 +02:00
Bruno Windels
4b5b90e199
fix another direction mismatch
2019-06-02 19:26:45 +02:00
Bruno Windels
c63d94947f
fix persisting a gappy sync
2019-06-02 18:28:38 +02:00
Bruno Windels
ef5d2cfa08
chunk is in reverse-chronological order for backward pagination
2019-06-02 18:15:40 +02:00
Bruno Windels
a59014475b
also swap logic of setter
2019-06-02 18:15:08 +02:00
Bruno Windels
bdad0ad86b
fix some gap fill errors
2019-06-02 15:46:24 +02:00
Bruno Windels
d022608a1a
it's entry.entryIndex, not eventIndex, but use helper method instead.
2019-06-02 15:24:27 +02:00
Bruno Windels
1ed3babfec
fragment boundary is a gap if backwards(started) & previousToken
2019-06-02 15:01:14 +02:00
Bruno Windels
e339cb7321
more fixes, timeline is showing again
2019-06-02 14:59:30 +02:00