Commit graph

516 commits

Author SHA1 Message Date
Bruno Windels e8e9740521 Move timeout to fetch, as XHR has native timeout support 2020-08-05 18:56:06 +02:00
Bruno Windels 5c50a48eb5 Add build for IE 11 2020-08-05 16:47:48 +00:00
Bruno Windels 00a85697ab add license header in all source files 2020-08-05 18:38:55 +02:00
Bruno Windels 69142909d9 XHR request support for legacy browsers 2020-08-05 15:37:37 +00:00
Bruno Windels b26bc69042 Move timeout to fetch, as XHR has native timeout support 2020-08-05 15:36:44 +00:00
Bruno Windels f5d3092031 WIP 2020-06-26 23:26:24 +02:00
Bruno Windels e2c8b5e595 pass vm field to emitChange 2020-06-24 22:43:29 +02:00
Bruno Windels 9712b397ce add TODO comment 2020-05-26 10:31:23 +02:00
Bruno Windels 0e5ad9805a use intrinsic aspect-ratio supported by chrome and firefox (although not safari) 2020-05-13 10:20:28 +02:00
Bruno Windels 1ec2543467 fix image aspect ratio when scaling, again
also when image hasn't loaded yet to prevent scroll position jumps
2020-05-10 11:56:05 +02:00
Bruno Windels 174b0b7d52 disable pull to refresh on android 2020-05-10 10:00:13 +02:00
Bruno Windels d79e34e450 fix image height scaling when full width doesn't fit on screen 2020-05-10 09:59:51 +02:00
Bruno Windels df08ac216d prevent images from growing larger than container 2020-05-09 21:22:30 +02:00
Bruno Windels d6882f075a don't let long status messages create overflow 2020-05-09 21:22:09 +02:00
Bruno Windels 2b17d0f691 spell height correctly 2020-05-09 21:21:55 +02:00
Bruno Windels 7f221cda65 show images intimeline 2020-05-09 20:02:08 +02:00
Bruno Windels 426dd726e7 default to true 2020-05-08 09:31:41 +02:00
Bruno Windels 5aee3df7fe fix SessionPickerItemView not updating 2020-05-08 09:12:33 +02:00
Bruno Windels c55a197303 pass options to parent in LoginViewModel 2020-05-07 19:17:15 +02:00
Bruno Windels f56b96b0ff add some ideas for relations 2020-05-07 19:14:53 +02:00
Bruno Windels f9c0b4b53e add logging in case #45 would happen again 2020-05-07 19:14:30 +02:00
Bruno Windels 6b453c1ec4 we need to start when online actually, so invert 2020-05-07 18:46:45 +02:00
Bruno Windels 24cb9e3f5c only increment sent counter after successful send
otherwise the message doesn't get sent after coming back online
2020-05-07 18:46:16 +02:00
Bruno Windels b65da9b8a9 display sync errors in status bar 2020-05-07 00:05:21 +02:00
Bruno Windels 52e2d3203e also make filter request interruptable 2020-05-07 00:04:41 +02:00
Bruno Windels cc19063c79 set timeout on /sync request
as long running requests run higher risk of getting wedged
2020-05-06 23:50:12 +02:00
Bruno Windels 06fc3101e8 make login view enabled again if load view is not busy anymore 2020-05-06 23:44:52 +02:00
Bruno Windels e17fc57d9c fix c/p error in disposables 2020-05-06 23:31:36 +02:00
Bruno Windels abc99c2f0b fix svg error in spinner 2020-05-06 23:31:22 +02:00
Bruno Windels 2010704f14 fix only reconnecting the first time 2020-05-06 20:58:48 +02:00
Bruno Windels f8f13f54be fix timeouts not working
and also not being handled in the Reconnector
2020-05-06 19:38:33 +02:00
Bruno Windels 54502c906f make disposeTracked suitable to reassign member 2020-05-05 23:19:02 +02:00
Bruno Windels d0f09c5334 add status bar to view gallery for design 2020-05-05 23:18:44 +02:00
Bruno Windels 22821af346 css changes for status bar 2020-05-05 23:18:31 +02:00
Bruno Windels 0623c1c665 subViews is in TemplateView 2020-05-05 23:17:48 +02:00
Bruno Windels c4b17e4be6 cleanup SessionViewModel, use ViewModel dispose infrastructure 2020-05-05 23:17:27 +02:00
Bruno Windels 3adc609e07 implement session status bar, with feedback on connection status 2020-05-05 23:16:51 +02:00
Bruno Windels b0e59c30dd correctly pass options to ViewModel ctor 2020-05-05 23:14:58 +02:00
Bruno Windels 0eefc88fe3 waitForRetry doesn't reject when aborted 2020-05-05 23:13:41 +02:00
Bruno Windels 8e9c76c26b options is the 5th arg 2020-05-05 23:13:05 +02:00
Bruno Windels 4de29779c7 also abort timeout timer when response is rejected 2020-05-05 23:12:46 +02:00
Bruno Windels 4ffaa82435 add interval to clock 2020-05-05 23:12:14 +02:00
Bruno Windels f90b435362 No need for Offline state if we're always in Waiting really 2020-05-04 23:42:34 +02:00
Bruno Windels d70a57a7c9 remove support for observablevalues from templateview
it's not used, and so params haven't been standardized
trying to unify it, it messes up overriding update in RoomView
that extends it to set the timelineViewModel upon update.
2020-05-04 22:24:49 +02:00
Bruno Windels d6645cbba9 null guard if list was never set 2020-05-04 22:24:10 +02:00
Bruno Windels d7a8b1616a use t.view for room sub views
also move composer to own vm
2020-05-04 22:23:43 +02:00
Bruno Windels 28bed56b5a prevent closing more than once 2020-05-04 22:21:56 +02:00
Bruno Windels 1fa14a99e9 correctly wait for catchup sync 2020-05-04 19:38:23 +02:00
Bruno Windels 225fe873be show session load view when picking a session 2020-05-04 19:38:03 +02:00
Bruno Windels 3dde23fc4b dispose viewmodels from TemplateView 2020-05-04 19:24:27 +02:00
Bruno Windels 1ef564bdb0 cleanup 2020-05-04 19:24:20 +02:00
Bruno Windels cc87e35f23 use ViewModel super class for all view models that need binding 2020-05-04 19:23:11 +02:00
Bruno Windels d91ab5355c support svg namespace, fix spinner 2020-05-03 01:08:53 +02:00
Bruno Windels d69987b426 make view gallery of views in different states 2020-04-30 18:28:21 +02:00
Bruno Windels d3f7fb5089 prototype how i18n would look like 2020-04-30 18:27:59 +02:00
Bruno Windels ceec8937ef apply template view api changes 2020-04-30 18:27:21 +02:00
Bruno Windels cdf051f19b api changes 2020-04-29 19:16:52 +02:00
Bruno Windels 2c8c1eb767 move el with the publics 2020-04-29 19:12:48 +02:00
Bruno Windels 6a9315e70a do what we said in the comment 2020-04-29 19:12:12 +02:00
Bruno Windels f4bb609ab6 notes 2020-04-29 10:10:33 +02:00
Bruno Windels 8bde627cdb more WIP 2020-04-29 10:10:20 +02:00
Bruno Windels 37c602f7d2 rename Template to TemplateView, as it is a view now. 2020-04-29 10:04:40 +02:00
Bruno Windels 2008cf74f1 Template becomes a view 2020-04-29 10:01:08 +02:00
Bruno Windels 657ec9aa62 move loading view state to own view model, so we're more free how to show it, and we can better reuse it 2020-04-23 09:06:04 +02:00
Bruno Windels acc511e69f extract loading into a sub viewmodel
to show the loading in a separate view
2020-04-22 21:53:55 +02:00
Bruno Windels b2954fd774 extract loadLabel logic to reuse in SessionPickerViewModel 2020-04-22 21:53:37 +02:00
Bruno Windels 0424ffe231 disable this for now as sync is not an EventEmitter anymore 2020-04-22 20:53:57 +02:00
Bruno Windels e080bf28a7 expose root view model as global variable for console inspecting 2020-04-22 20:53:38 +02:00
Bruno Windels e0799181d9 show error when mount() fails in SwitchView 2020-04-22 20:53:18 +02:00
Bruno Windels 449262e3c1 adjust ctor of SessionViewModel to accept sessionContainer now 2020-04-22 20:52:56 +02:00
Bruno Windels e37101210c adjust LoginView(Model) further to showing loading status in place 2020-04-22 20:52:28 +02:00
Bruno Windels 96aa4f83b9 remove loading section in BrawlView 2020-04-22 20:49:49 +02:00
Bruno Windels a19e541e1e less http specific 2020-04-22 20:49:21 +02:00
Bruno Windels 3359c6950f typo (this made the loadStatus undefined :/) 2020-04-22 20:49:03 +02:00
Bruno Windels 08b1c02af7 remove start value, can be hardcoded for now
also fix params in wrong order this way
2020-04-22 20:48:49 +02:00
Bruno Windels f826258c75 null doesn't set queryParams to {} here, so revert explicitly 2020-04-22 20:47:53 +02:00
Bruno Windels 174fd3ea4a don't assume options 2020-04-22 20:47:46 +02:00
Bruno Windels 3f840d9d33 simple unit test for hsApi 2020-04-22 20:47:31 +02:00
Bruno Windels 277c8af628 Headers is a DOM specific class, use Map instead in HomeServerApi 2020-04-22 20:46:47 +02:00
Bruno Windels c95981a35d remove unused code 2020-04-20 23:10:33 +02:00
Bruno Windels b32f5711bf port BrawlViewModel to SessionContainer 2020-04-20 23:10:13 +02:00
Bruno Windels f4983b5ba6 port SessionPickerViewModel to SessionContainer 2020-04-20 22:49:14 +02:00
Bruno Windels a5965ad378 port LoginViewModel over to SessionContainer 2020-04-20 22:48:56 +02:00
Bruno Windels bb7fca0592 support deleting the session from the container 2020-04-20 22:29:25 +02:00
Bruno Windels de7dcf6a40 adjust main.js to use SessionContainer 2020-04-20 21:56:10 +02:00
Bruno Windels a097929dbd rename lowercase filenames of classes to camelcase like class 2020-04-20 21:41:10 +02:00
Bruno Windels 31f3886eba move EventEmitter to utils 2020-04-20 21:35:53 +02:00
Bruno Windels c379caf4c0 remove obsolete ifdef comments 2020-04-20 21:31:27 +02:00
Bruno Windels 0f29fdb24e some notes 2020-04-20 21:27:07 +02:00
Bruno Windels 001dbefbcf stop using default exports
because it becomes hard to remember where you used them and where not
2020-04-20 21:26:39 +02:00
Bruno Windels 0de5e899ea remove dead code 2020-04-20 21:25:17 +02:00
Bruno Windels 164d9d594f finish implemenation of SessionContainer 2020-04-20 19:48:21 +02:00
Bruno Windels 87b23d062c fix imports after reshuffleling 2020-04-20 19:47:45 +02:00
Bruno Windels 72b0eefccb replace isSyncing and emit with an Observable SyncStatus 2020-04-19 19:52:26 +02:00
Bruno Windels 80f7caadbe rename SessionsStore to SessionInfoStorage 2020-04-19 19:13:38 +02:00
Bruno Windels 8c56ac3e4f rename NetworkError to ConnectionError 2020-04-19 19:05:12 +02:00
Bruno Windels 8c5411cb7d moar WIP 2020-04-19 19:02:10 +02:00
Bruno Windels 1f15ca6498 more WIP 2020-04-18 19:16:16 +02:00
Bruno Windels 378b75c98a more WIP and breakage 2020-04-09 23:19:49 +02:00
Bruno Windels ef267ca331 WIP2 2020-04-05 15:11:15 +02:00
Bruno Windels c980f682c6 create DOMClock, abstraction of clock functionalities for DOM 2020-04-04 17:34:46 +02:00
Bruno Windels bc69e49cfb WIP2 2020-03-31 10:13:25 +02:00
Bruno Windels b6a5a02a33 WIP 2020-03-30 23:56:03 +02:00
Bruno Windels e4563135bf look at prev_content when handling member events 2020-03-30 21:59:44 +02:00
Bruno Windels c830f50325 catch errors while persisting a new message 2020-03-30 21:33:04 +02:00
Bruno Windels 234c260339 dont modify fragments in comparer until txn succeeds 2020-03-30 20:46:52 +02:00
Bruno Windels 73ea09f668 Handle sync ordering vs back-fill ordering (see synapse #7164) resulting in dupe events
Also extra robustness while filling a gap

ignore duplicate events from synapse instead considering them an
overlapping event with the adjacent fragment
2020-03-30 20:37:36 +02:00
Bruno Windels dc65274b8b
Merge pull request #38 from bwindels/bwindels/remote-echo-for-gaps
Look for remote echos in gap responses as well as sync responses
2020-03-23 22:00:45 +00:00
Bruno Windels 8354c58c07 also look for remote echos based on event_id 2020-03-23 23:00:33 +01:00
Bruno Windels eda4022692 show version before login and link to release 2020-03-23 22:46:31 +01:00
Bruno Windels f02641c808 look for transaction_id in /messages response to delete pending events 2020-03-22 00:07:37 +01:00
Bruno Windels 6d68ec1bac move fillGap to room 2020-03-21 23:40:40 +01:00
Bruno Windels f729108226 pass emit update fn through setter so we control when tile can update 2020-03-21 14:28:09 +01:00
Bruno Windels a3714f49cc group public methods for a tile together 2020-03-21 14:26:56 +01:00
Bruno Windels 4176af56ea add failing test for problem 2020-03-21 14:22:16 +01:00
Bruno Windels 44760a9f82 Revert "add logging related to fragments"
This reverts commit 2f355cabef.
2020-03-21 10:47:35 +01:00
Bruno Windels c4a5de20c0 update previous fragment in comparer when appending a new line fragment 2020-03-21 10:45:09 +01:00
Bruno Windels 2f355cabef add logging related to fragments
both when rebuilding and when sorting will be used
2020-03-20 20:23:07 +01:00
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
Bruno Windels b69efc3425 fix errors when replaying 2020-03-17 00:07:54 +01:00
Bruno Windels 06e43d9ee3 fix all tests 2020-03-14 21:38:37 +01:00
Bruno Windels 56c87b3966 better naming 2020-03-14 20:49:15 +01:00
Bruno Windels ac4a7f971b only apply sync changes in room summary once txn is committed
- also remove m.room.aliases support as they were wrongly implemented
   and now obsolete
 - don't count invited and joined members according to m.room.member
   events anymore as it was also wrongly implemented
   (only when prev!==new membership, but on initial sync we only get
   last member event, which might have been a nick change
2020-03-14 20:46:49 +01:00
Bruno Windels fc741272ba only apply sync changes in session once txn is committed 2020-03-14 20:45:36 +01:00
Bruno Windels 224d56698a only set new live key when creating a fragment after the txn succeeds
when doing a limited sync, and a new fragment is created,
this._lastLiveKey is updated immediately. If the transaction
would then fail, the fragmentId in this._lastLiveKey was incremented
but the fragment wasn't written to the store, so if sync is resumed
and would subsequently succeed, fragmentIds would be assigned to events
that don't have a corresponding fragment in the timelineFragment store.

This would throw errors when trying to load the timeline,
breaking the whole app.

This changes SyncWriter to only update this._lastLiveKey in
the emit phase, when the transactions has been committed already.
2020-01-04 20:06:49 +01:00
Bruno Windels bdc2c3d9ad cleanup: storage is not used in SyncWriter
as the transaction is now always passed as an argument, it never
creates one on its own.
2020-01-04 20:04:57 +01:00
Bruno Windels 29b531ae80 add (commented out) instructions how to use record/replay 2019-12-23 14:29:19 +01:00
Bruno Windels 1d9a5c490a add record/replay network layer 2019-12-23 14:28:42 +01:00
Bruno Windels aa86748cdd pull fetch code out of homeserverapi 2019-12-23 14:28:27 +01:00
Bruno Windels 35c090dcb4 add proper import/export functionality 2019-12-14 18:29:35 +01:00
Bruno Windels 9c42710f9b add github link to home screens 2019-11-22 09:46:19 +01:00
Bruno Windels 8a55778c32 make sure aliases and heroes aren't empty when picking name 2019-11-22 09:29:18 +01:00
Bruno Windels 325077bcb0 try more domexception fixes 2019-11-21 18:28:18 +01:00
Bruno Windels 5ecf0a6717 fix error path on transaction abort error 2019-11-21 18:23:48 +01:00
Bruno Windels d073f2825b show json in one line when clearing cache
also make naming consistent
2019-10-24 10:54:20 +02:00
Bruno Windels d34a0c73b5 show json in list instead of alert so we can copy it 2019-10-13 08:29:23 +02:00
Bruno Windels 6f73d3983f add export/import of session data 2019-10-13 08:16:08 +02:00
Bruno Windels e2b9e9dfdc add clear cache button for session 2019-10-13 07:48:49 +02:00
Bruno Windels ad7a150aaa use aliases and heroes to fall back room name to 2019-10-13 07:48:33 +02:00
Bruno Windels b16f21867c preserve value for storage errors on add and put 2019-10-12 22:19:16 +02:00
Bruno Windels 201b70ee4f fix failing to sync new rooms 2019-10-12 22:18:36 +02:00
Bruno Windels ac53b9099b only log error in sync loop 2019-10-12 22:18:19 +02:00
Bruno Windels 3ba20dece1 fixup for delete button changes 2019-10-12 22:18:08 +02:00
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 076582edc3 css fixes
- don't pronounce avatar initials
 - prevent room header growing wider than screen
 - ensure messages wrap their text
2019-09-28 09:46:09 +02:00
Bruno Windels e3719b2527 allow http (no sssl) homeservers 2019-09-28 09:44:39 +02:00
Bruno Windels d8696bea1d add offline availability with service worker and appcache 2019-09-15 14:32:12 +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 f7f9129b8b show send errors in UI 2019-09-15 12:23:26 +02:00
Bruno Windels 5a90b4673b fix CORS requests failing 2019-09-15 12:23:08 +02:00
Bruno Windels ed67689fdf some minimal styling for login and session picker 2019-09-08 10:40:05 +02:00
Bruno Windels 09b9eff7c1 fix remaining errors to make login work 2019-09-08 10:19:16 +02:00
Bruno Windels a7194e0c7a implement missing views 2019-09-08 10:18:59 +02:00
Bruno Windels 1082233de4 start of session picker view 2019-07-31 00:07:12 +02:00
Bruno Windels c27172fc4e adjust main to new view 2019-07-31 00:07:04 +02:00
Bruno Windels 49a577991b login and session picker view models, sessions store 2019-07-31 00:06:53 +02:00
Bruno Windels 378eea8ceb
Merge pull request #5 from bwindels/bwindels/sending
Send text messages
2019-07-29 18:28:29 +00:00
Bruno Windels 5b4d984645 height of app should always fill screen (not more or less) 2019-07-29 20:11:15 +02:00
Bruno Windels de35df10d8 fix test + bug in ConcatList update 2019-07-29 20:03:22 +02:00
Bruno Windels b723ab4cef add failing test for ConcatList update 2019-07-29 20:03:06 +02:00
Bruno Windels 3b7ab8f1c8 fix MappedList test after passing params as well to updater 2019-07-29 20:02:42 +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 7218595c17 only send message if it's non-empty 2019-07-29 19:54:21 +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 e23abe209f fixup: leftover from removing access to events 2019-07-29 19:53:07 +02:00
Bruno Windels bfdff353b0 pass params in map operator update fn 2019-07-29 19:52:28 +02:00
Bruno Windels 7a6e91de84 concat operator for observable lists 2019-07-29 19:18:11 +02:00
Bruno Windels 6f650d19b1 map operator for observable lists 2019-07-29 19:17:55 +02:00
Bruno Windels 0b5c2f9273 better naming 2019-07-29 10:59:49 +02:00
Bruno Windels b53b60e142 use correct handler and make test succeed 2019-07-29 10:59:07 +02:00
Bruno Windels 0cf7cb36c4 add failing test for unsubscribe using wrong handler 2019-07-29 10:58:27 +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 e09d2963df fix timeline scrolling 2019-06-28 00:44:49 +02:00
Bruno Windels fc873fbfa5 more css fixes, and make back button work for compact layout 2019-06-26 23:14:39 +02:00
Bruno Windels 38a8132397 fix narrow layout 2019-06-26 22:43:59 +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 59a303daa0 make user config available from phone on local wlan 2019-06-26 22:19:40 +02:00
Bruno Windels 72c193cce5 page to debug app on mobile phones without remote access to tools 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 c12300bfa5 make loadList not private when we're going to override it 2019-06-16 17:28:51 +02:00