Kegan Dougal
378c7fd6cb
Update docs
2015-06-23 12:15:41 +01:00
Kegan Dougal
7534f59af2
Hook up the callback fn for scrollback. Update CHANGELOG.
2015-06-23 12:04:43 +01:00
Kegan Dougal
6737388766
Implement pagination via the scrollback() function. Update CHANGELOG.
2015-06-23 11:36:30 +01:00
Kegan Dougal
b7ed78b432
Update CHANGELOG. Add StubStore.
...
Default to a no-op store class to prevent having to constantly check for
MatrixClient.store and other defensive checks which clutters the intent
of the code.
2015-06-23 11:03:08 +01:00
Kegan Dougal
9c2a2902eb
Fix bug where hibernating laptops fail to restart the event stream.
...
On some devices, the act of hibernating black holes the request so the
success/failure callbacks never fire. This prevents a re-poll as that is done
in the callbacks. To fix this, we add a local timer which, when it fires,
will forcibly do a re-poll. The local timer has a timeout value several
seconds more than the timeout= value (which should've returned by then).
2015-06-23 10:40:53 +01:00
Kegan Dougal
ef77c6f989
Sync room state when another device joins a room.
2015-06-23 10:18:13 +01:00
Kegan Dougal
bc0e2ad504
Sync room state when joining via client.joinRoom
...
Does not currently sync state when another device joins.
Update node example app to refresh room list.
2015-06-22 17:50:49 +01:00
Kegan Dougal
ad70b3d434
Don't set NOT_SENT in the scheduler; the MatrixClient is responsible for this.
2015-06-19 17:19:48 +01:00
Kegan Dougal
756fe4ddcb
Implement MatrixScheduler.
2015-06-19 16:53:28 +01:00
Kegan Dougal
18db0d8c02
Emit 'Room' event when the Room is fully populated rather than newly created.
2015-06-19 16:05:13 +01:00
Kegan Dougal
2f78ceb6fc
Design the API for the scheduler and hook MatrixClient up to it.
...
Scheduler itself still needs internal impl.
2015-06-19 15:50:05 +01:00
Kegan Dougal
8a9f84a4b2
Don't return something which doesn't exist.
2015-06-18 17:49:13 +01:00
Kegan Dougal
1e3162128a
Shelve scheduler queue work. Add processFn.
2015-06-18 13:56:46 +01:00
Kegan Dougal
7e12ea4273
Start gluing MatrixClient and MatrixScheduler.
2015-06-18 12:07:18 +01:00
Kegan Dougal
18a3ce415c
Add _queues to MatrixScheduler.
2015-06-18 11:49:34 +01:00
Kegan Dougal
ca414d1611
Implement rate limiting in the default retry algorithm.
2015-06-18 11:28:17 +01:00
Kegan Dougal
ba56f5f621
Implement MatrixScheduler.
...
Formed of two parts: the retry and queuing functions. Use sensible defaults.
2015-06-18 11:11:07 +01:00
Kegan Dougal
4810d04257
Add stub MatrixScheduler.
2015-06-18 10:07:44 +01:00
Kegan Dougal
9cb37fbe4f
Actually allow MatrixClient to not have a store. Update jsdoc.
2015-06-18 09:59:02 +01:00
Kegan Dougal
d151ac49f2
Mark events which fail to send.
2015-06-18 09:32:04 +01:00
Kegan Dougal
d74a71cc2d
linting and update README.
2015-06-17 17:47:57 +01:00
Kegan Dougal
8e6eb35dfe
Implement local echo.
...
Mark events being sent via the status property. Update CHANGELOG.
2015-06-17 17:42:12 +01:00
Kegan Dougal
f77e8e3bf7
Add User.events.presence property for storing the m.presence event for a user.
2015-06-15 10:20:04 +01:00
Kegan Dougal
94931cdc07
Remove broken function; add RoomMember.events.member property.
2015-06-15 09:49:54 +01:00
Kegan Dougal
c6b11fc382
Make Room.calculateRoomName private to avoid confusion with Room.name.
2015-06-15 09:31:46 +01:00
Kegan Dougal
7a02c5d167
Add concept of 'sentinel' RoomMembers which watch state at a particular point in time.
...
New sentinels are only created when the RoomMember state changes, so we don't
needlessly deep copy RoomMembers f.e. MatrixEvent. Sentinels co-exist with
RoomState.members which are single instances to which listeners can be attached.
This gets the best of both worlds (don't have to keep re-attaching listeners on
member changes, don't have needless memory consumption).
2015-06-12 15:38:02 +01:00
Kegan Dougal
8a844d59ec
Get historical display names working on messages.
...
Accessed via MatrixEvent.sender property. Deep copy the list of state events
from initial sync for old/current RoomState so updating the .sender property
doesn't affect both of them. Reverse the insertion of initial sync MatrixEvents
so state diverges to *earlier* points in time. Add a 'forwardLooking' property
to MatrixEvent to determine which out of 'content' and 'prev_content' entities
should take into account e.g. when determining display names. Finally, always
create new RoomMembers when they are updated in order to prevent corrupting
(read: sharing the same member object) the MatrixEvent.sender property of
existing events in the timeline.
2015-06-12 14:21:24 +01:00
Kegan Dougal
3061b95afe
Add getPrevContent function and mark it's situational presence.
2015-06-12 11:26:33 +01:00
Kegan Dougal
71dacb14b1
Add MatrixEvent.sender and .target to pull the right name per message.
2015-06-12 11:05:57 +01:00
Kegan Dougal
da7b31cb7e
Add Room.getJoinedMembers helper. UX tweaks to example.
2015-06-12 10:49:13 +01:00
Kegan Dougal
8aefad221a
Add client.getRooms. Add 'syncComplete' event. Display room invites.
2015-06-11 17:52:52 +01:00
Kegan Dougal
61f107f6f9
Hide the data store from the end-user. Proxy calls to getRoom.
2015-06-11 16:36:30 +01:00
Kegan Dougal
8e45d6b625
Bug fixes on initialSync and RoomMember.userId.
...
Don't assume that .state and .messages exist in /initialSync results.
Use state_key and not user_id when setting the userId of a RoomMember.
2015-06-11 16:29:36 +01:00
Kegan Dougal
19a5b99dea
Add RoomMember and RoomState event emissions with UTs. Hook everything up.
...
Distinguish between inserts and updates to the members dictionary to allow
listeners to add more hooks to the member before it has been given state.
2015-06-11 14:29:32 +01:00
Kegan Dougal
911ca1d5c5
Implement Room event emissions with UTs.
...
Shuffle test groupings into EventEmitter and startClient. Add more jsdoc.
2015-06-11 13:22:21 +01:00
Kegan Dougal
4c3e56ad4c
Add test for event emitting. Fix reEmit function.
2015-06-11 11:58:31 +01:00
Kegan Dougal
eaa02cd2ad
Add utils.inherits. Make User inherit EventEmitter.
...
utils.inherits is the Node.js impl but with the addition of a polyfill for
Object.create().
2015-06-11 11:37:43 +01:00
Kegan Dougal
c737068fe7
Don't fire events in the constructor; you can't listen for them.
2015-06-11 11:12:31 +01:00
Kegan Dougal
07f77c495b
Move event jsdoc to respective classes. Document which functions fire.
...
This tends to boil down into a setXEvent method which can fire if it updates
the model.
2015-06-11 10:54:25 +01:00
Kegan Dougal
58cbd3ab1b
Move RoomMember event jsdocs to the room-member module.
2015-06-10 17:25:34 +01:00
Kegan Dougal
5cf29ae1b1
Make RoomMember set its own properties, not RoomState.
...
Also make it clear which methods may fire events off using @fires. This
shifts a lot of RoomState logic to RoomMember.
2015-06-10 17:06:28 +01:00
Kegan Dougal
b2620507fa
Remove startClient(callback); Emit 'syncError' and 'event'.
...
'syncError' event is intended to be used to update the UI to say "connection
lost". Add UTs for 'event' emissions.
2015-06-10 16:19:38 +01:00
Kegan Dougal
583e71180b
Add JSDoc for all the events which the SDK will emit.
2015-06-10 14:42:40 +01:00
Kegan Dougal
d2fcdd4556
Add jsdoc for EventEmitter.
2015-06-10 13:02:32 +01:00
Kegan Dougal
35f269ea52
Make internal MatrixClient methods actually internal.
2015-06-10 11:14:34 +01:00
Kegan Dougal
d64382cd4f
Make MatrixClient inherit from EventEmitter. Add jsdoc to all functions.
2015-06-10 11:01:29 +01:00
Kegan Dougal
f9f8816b7d
Return '?' instead of 'Unknown' for rooms which names cannot be calculated.
...
This makes it easier to localise in the future (if name == '?'), whilst
still indicating an unknown name. Ideally we would be returning null, but
this would require null checks every time the room name was accessed, which
isn't ideal. This also makes the UT for this less brittle (rather than
comparing literal english strings which are prone to breakage when we
inevitably change 'Unknown' to 'unknown' or something else.
2015-06-10 09:44:53 +01:00
Kegan Dougal
4ff6ecd58c
Add room name UTs and add self-chat room name.
2015-06-09 17:05:56 +01:00
Kegan Dougal
a0bd25a6d2
Handle power levels and update RoomMember properties.
...
Add unit tests for RoomState.
2015-06-09 15:23:04 +01:00
Kegan Dougal
327a1674aa
Add missing user field to RoomMember.
2015-06-09 11:25:10 +01:00