Commit Graph

116 Commits (201d8f04c0a8923da4ece34a67a3a87364bc598d)

Author SHA1 Message Date
lukebarnard e1ea8f0a78 Copy state when initialisng, reset state when logging out 2017-12-13 10:57:47 +00:00
lukebarnard d5534a9ece Copyright 2017-12-13 10:17:38 +00:00
Luke Barnard 60d8ebb914 Refactor MatrixActions to something much easier to grok. 2017-12-12 16:05:18 +00:00
Luke Barnard 3e532e3722 Use consistent indentation and break;s in TagOrderStore switch 2017-12-12 14:10:39 +00:00
Luke Barnard a120335130 Handle groups being joined and left 2017-12-11 18:03:19 +00:00
Luke Barnard 0b38bf5e7b Do not allow ordering until TagOrderStore has loaded 2017-12-11 17:24:33 +00:00
Luke Barnard aa914098dc Return null if TagOrderStore is loading
The view should decide the default state.
2017-12-11 17:19:29 +00:00
Luke Barnard 991ea4ebe5 Fix a few bugs with TagOrderStore:
- Have TagOrderStore listen for MatrixSync actions so that it can initialise
   tag ordering state.
 - Expose an empty list until the client has done its first sync and has
   fetched list of joined groups
2017-12-11 17:17:05 +00:00
Luke Barnard 72550961e5 Move 'commit_tags' to action creator 2017-12-08 10:52:20 +00:00
Luke Barnard 12515441cd Handle accountData events from TagOrderStore
This introduces a generic way to register certain events emitted by
the js-sdk as those that should be propagated through as dispatched
actions.

This allows the store to treat the js-sdk as the "Server" in the
Flux data flow model. It also allows for stores to not be aware
specifically of the matrix client if they are only reading from it.
2017-12-08 10:05:18 +00:00
Luke Barnard ee6df105fe Introduce action creators
These can be used to dispatch actions immediately, or after some asynchronous
work has been done. Also, create GroupActions.fetchJoinedGroups as an example.

The concept of async action creators can be used in the following cases:
 - stores or views that do async work, dispatching based on the results
 - actions that have complicated payloads, would make more sense as functions
   with documentation that dispatch created actions.
2017-12-07 14:17:32 +00:00
Luke Barnard 8f88995b3d Add analytics to TagOrderStore 2017-12-06 14:22:11 +00:00
Luke Barnard 4af7def20e Use AccountData im.vector.web.tag_ordering
Also, make defaults sensible
2017-12-06 14:13:08 +00:00
Luke Barnard 82a95f0793 Simplify order_tag in TagOrderStore
such that:
 - it takes a targetTag to be replaced instead the previous tag to insert after
 - it optionally displaces the targetTag before or after the inserted tag
2017-12-06 11:22:06 +00:00
Luke Barnard 8178496457 Implement Store for ordering tags in the tag panel 2017-12-05 14:45:44 +00:00
Luke Barnard 3bcb3195c4 Implement shift-click and ctrl-click semantics for TP 2017-11-30 14:48:54 +00:00
Luke Barnard 45bcb6f2ed Implement TagPanel (or LeftLeftPanel) for group filtering
This allows for filtering of the RoomList by group. When a group is selected, the room list will show:
 - Rooms in the group
 - Direct messages with members in the group

A button at the bottom of the TagPanel allows for creating new groups, which will appear in the panel following creation.
2017-11-29 16:53:43 +00:00
Luke Barnard 7ec4010881 Make GroupStore use MatrixClientPeg
To avoid weirdness with using a cached matrix client
2017-11-28 11:54:05 +00:00
lukebarnard 2913d396ef Remove redundant super class EventEmitter for FlairStore
, which seemingly is not being used.
2017-11-20 11:34:20 +00:00
Richard van der Hoff c48994e981 Flairstore: Fix broken reference 2017-11-17 13:56:56 +00:00
Luke Barnard 31be27515c Modify the group room visibility API to reflect the js-sdk changes
See https://github.com/matrix-org/matrix-js-sdk/pull/569
2017-11-09 16:28:21 +00:00
Luke Barnard 65cea53f3d
Merge pull request #1592 from matrix-org/luke/groups-fix-accept-invite-refresh-members
Fetch group members after accepting an invite
2017-11-08 13:35:53 +00:00
Luke Barnard 3e3ebd6358 Fetch group members after accepting an invite 2017-11-08 11:52:52 +00:00
Luke Barnard 1c5e7f3048 Fix FlairStore getPublicisedGroupsCached to give the correct, existing promise 2017-11-08 11:31:04 +00:00
Luke Barnard edc744067f Add checkbox to GroupAddressPicker for determining visibility of group rooms 2017-11-07 18:51:41 +00:00
Luke Barnard febeb0429e Throw an error when trying to create a group store with falsey groupId 2017-11-06 10:18:10 +00:00
Luke Barnard da23afdec2 Better comment on FlairStore _usersInFlight 2017-11-03 18:48:15 +00:00
Luke Barnard 4d8f18742b Check against non-existant promise to resolve a user's groups 2017-11-03 18:43:43 +00:00
Luke Barnard d64fc4c842 Fix Flair not appearing due to missing this._usersInFlight 2017-11-03 18:19:10 +00:00
David Baker 8800081cb9
Merge pull request #1567 from matrix-org/luke/fix-flair-store
Fix multiple requests for publicised groups of given user
2017-11-02 16:09:07 +00:00
Luke Barnard 21e09840dc Fix multiple requests for publicised groups of given user
Previously, a single user could end up in multiple batches, which would have been fine if the logic didn't assume otherwise. If a request took longer than 200ms, multiple batches would occur with intersecting sets of users, deleting promises that were then assumed to exist.

The logic now takes all "in flight" users to also not be "pending". Pending now means that the user will be processed in the next batch. "In flight" means the user is part of an ongoing batch.
2017-11-02 15:59:26 +00:00
Luke Barnard bf77b51b5e Merge branch 'develop' into luke/groups-room-publicity 2017-11-02 13:39:33 +00:00
Luke Barnard 790db94fd7 Add toggle to alter the visibility of a room-group association 2017-11-02 13:31:11 +00:00
Matthew Hodgson 7d7cd30e46 turn NPE on flair resolution errors into a logged error 2017-11-01 22:10:03 +00:00
Luke Barnard 16dca08b77 Use constants instead of string literals 2017-10-31 16:13:13 +00:00
Luke Barnard 775468e71a Display whether the group summary/room list is loading
This uses a `ready` flag assigned to each fetching API used by the GroupServer. I've avoided making this generic for now for want of not doing so early.
2017-10-31 11:42:09 +00:00
Luke Barnard 175fadbb57 Add unregiseterListener to GroupStore 2017-10-27 15:08:38 +01:00
Luke Barnard 5d0aa8d7f7 Handle 403 when inspecting invited users as non-member 2017-10-27 11:38:10 +01:00
Luke Barnard e094c32c62 Simplify GroupStore listener registration 2017-10-27 11:38:10 +01:00
Luke Barnard 7b666af24c When dispatching view_[my_]group[s], reset RoomViewStore
so that RoomTiles are not highlighted when the user is looking at MyGroups or GroupView
2017-10-24 16:32:52 +01:00
Luke Barnard 3ae31dd426 Make GroupStoreCache global for cross-package access 2017-10-24 10:39:47 +01:00
Luke Barnard b9dc5cb5ed Merge branch 'develop' into luke/groups-update-on-invite 2017-10-23 16:05:52 +01:00
Luke Barnard 0799e5cde4 Refresh group member lists after inviting users 2017-10-23 16:04:26 +01:00
Luke Barnard 0ff5b9c6a7 Invalidate the user's public groups cache when changing group publicity
This will make the changes to their Flair "live", but only from the user's own perspective.
2017-10-23 15:28:38 +01:00
Luke Barnard b0f8619754 Improve MyGroups UI
as per design layed out by @tur2live!
2017-10-19 17:24:45 +01:00
Luke Barnard 25d14af616 Export a global.singletonFlairStore to allow cross-project singleton 2017-10-19 12:00:03 +01:00
Luke Barnard 71443e9b94 Remove logs comments 2017-10-19 10:34:24 +01:00
Luke Barnard 5f3c06b38a Factor out Flair cache into FlairStore
This will make invalidating the userGroups cache for the user architecturally more sound (the plan is to have GroupStore hit FlairStore as opposed to Flair itself in order to invalidate the cache).
2017-10-19 10:28:59 +01:00
Luke Barnard 0415869b8c Add useful functions to GroupView to inspect user flags 2017-10-17 16:08:19 +01:00
Luke Barnard 917957c1dc Modify the group store to include group rooms
and modify components to use this new part of the store such that feedback can be given
when adding or removing a room from the room list.
2017-10-05 14:30:04 +01:00