Commit Graph

638 Commits

Author SHA1 Message Date
Toby Zerner
44a4e31fe1 Simplify active discussion detection 2015-05-31 13:53:02 +09:30
Toby Zerner
a1da95962d Move theme config to database 2015-05-31 11:18:19 +09:30
Toby Zerner
8e7634e36d Fix post scrubber closing on mobile 2015-05-31 11:17:41 +09:30
Toby Zerner
1603c10ae9 Padding tweak 2015-05-30 14:58:47 +09:30
Toby Zerner
e1f8fbdc32 Prevent error when trying to get relationship and no links have been loaded 2015-05-30 13:58:21 +09:30
Toby Zerner
78e10ec541 Eager load notification relationships 2015-05-30 13:57:39 +09:30
Toby Zerner
8e4f4a549c Re-add event after a discussion has loaded
replyAction uses it
2015-05-30 12:06:48 +09:30
Toby Zerner
5db1751660 Add helper to format number with commas 2015-05-30 08:40:29 +09:30
Toby Zerner
ba1ddc0a14 Implement abbreviate-number helper. closes flarum/core#96 2015-05-30 08:08:57 +09:30
Toby Zerner
4edb95e9e2 Sync the discussion model/post stream when posts are added/removed 2015-05-29 18:56:29 +09:30
Toby Zerner
0d1b67274d Fix edge cases where posts would not be added/removed 2015-05-29 18:55:53 +09:30
Toby Zerner
102a9e498e Fix incorrect class name 2015-05-29 18:55:29 +09:30
Toby Zerner
456af4273b Sort included posts
They can be out of order in the payload due to relationship loading,
e.g. post #1 includes post #14 that has mentioned it, therefore #14
will be the first post in the payload. The new post stream doesn’t take
kindly to out of order posts.
2015-05-29 18:55:19 +09:30
Toby Zerner
2e82fb4015 Refactor discussion list styles, fix loading indicator height in pane 2015-05-29 18:31:17 +09:30
Toby Zerner
cafa6c7b5d New and improved post stream. 2015-05-29 18:17:50 +09:30
Toby Zerner
2741923714 Improvements to change/forgot password 2015-05-27 16:25:44 +09:30
Toby Zerner
696bfe5a07 Improve email changing/confirmation stuff 2015-05-27 16:24:54 +09:30
Toby Zerner
8f0989fb80 Various appearance tweaks 2015-05-27 16:22:02 +09:30
Toby Zerner
6fed357605 Allow ActionButtons to be disabled 2015-05-27 16:21:15 +09:30
Toby Zerner
c5d820a92d Hide "mark all as read" button from guests 2015-05-27 16:19:40 +09:30
Toby Zerner
796c2590a2 Add unread indicator to scrubber. closes #94 2015-05-27 16:18:21 +09:30
Toby Zerner
1ec2a4c742 Update email address confirmation subject 2015-05-26 18:07:27 +09:30
Toby Zerner
dee9bb1c6d Tweak post-signup welcome appearance 2015-05-26 18:05:20 +09:30
Toby Zerner
20dfc6c341 Retain relevant data when switching between login/signup modals 2015-05-26 18:05:07 +09:30
Toby Zerner
e5532d9618 Roughly implement change password/email, delete account modals 2015-05-26 18:03:02 +09:30
Toby Zerner
a4a0092513 Fix error when rendering deleted user 2015-05-26 18:02:04 +09:30
Toby Zerner
4849e423eb Redraw discussion list items if user marks all as read 2015-05-26 18:01:05 +09:30
Toby Zerner
61e110b245 Don't show load more button unnecessarily 2015-05-26 18:00:41 +09:30
Toby Zerner
85ba97ed5c Improve appearance/behaviour of login/signup/forgot modals 2015-05-26 16:25:25 +09:30
Toby Zerner
5fc2f3aeee Better handling of API server errors 2015-05-26 11:43:20 +09:30
Toby Zerner
feb4676aa0 Very rough implementation of forgot password 2015-05-26 11:14:06 +09:30
Toby Zerner
d481a38029 Old code, don't need these! 2015-05-23 08:36:14 +09:30
Toby Zerner
d1dfa92d6b Prevent composer from accidentally redrawing when reply button is clicked 2015-05-23 08:36:00 +09:30
Toby Zerner
1dc036da65 Only do double redraw if there is a component we need to get rid of 2015-05-23 08:35:12 +09:30
Toby Zerner
c4614788c6 Make the invoker responsible for positioning the composer cursor 2015-05-23 08:34:54 +09:30
Toby Zerner
9d7be35837 Fix notification grid row/column not toggling when first cell is disabled 2015-05-21 15:59:35 +09:30
Toby Zerner
7a1ae67192 Make loading indicators stand out less when using a custom primary color 2015-05-21 15:58:56 +09:30
Toby Zerner
f54acebaf0 Fix bad logic in edit permission that was allowing guests to edit posts. Closes #88 2015-05-21 15:53:59 +09:30
Toby Zerner
d69e481037 Make hero light 2015-05-21 13:10:25 +09:30
Toby Zerner
ca343edf00 Bump up discussion list title size again 2015-05-21 13:09:26 +09:30
Toby Zerner
935e2d272a Force redraw of composer component when switching in a new one 2015-05-21 13:08:33 +09:30
Toby Zerner
e1201c968b Maintain scroll position relative to bottom of hero when switching categories 2015-05-21 08:15:58 +09:30
Toby Zerner
41ecfa348d Performance improvements 2015-05-21 06:49:07 +09:30
Toby Zerner
edc59f37e3 PSR-2: Remove empty lines 2015-05-20 12:33:26 +09:30
Toby Zerner
3c7078b423 New user activity feed API.
Originally the user activity feed was implemented using UNIONs. I was
looking at make an API to add activity “sources”, or extra UNION
queries (select from posts, mentions, etc.) but quickly realised that
this is too slow and there’s no way to make it scale.

So I’ve implemented an API which is very similar to how notifications
work (see previous commit). The `activity` table is an aggregation of
stuff that happens, and it’s kept in sync by an ActivitySyncer which is
used whenever a post it created/edited/deleted, a user is
mentioned/unmentioned, etc.

Again, the API is very simple (see Core\Activity\PostedActivity +
Core\Handlers\Events\UserActivitySyncer)
2015-05-20 12:30:27 +09:30
Toby Zerner
98b3d0f89e Simplify and improve notifications API.
It turns out that the idea of “sending” a notification is flawed. (What
happens if the notification subject is deleted shortly after? The
notified user would end up with a dud notification which would be
confusing. What about if a post is edited to mention an extra user? If
you sent out notifications, the users who’ve already been mentioned
would get a duplicate notification.)

Instead, I’ve introduced the idea of notification “syncing”. Whenever a
change is made to a piece of data (e.g. a post is created, edited, or
deleted), you make a common notification and “sync” it to a set of
users. The users who’ve received this notification before won’t get it
again. It will be sent out to new users, and hidden from users who’ve
received it before but are no longer recipients (e.g. users who’ve been
“unmentioned” in a post).

To keep track of this, we use the existing notifications database
table, with an added `is_deleted` column. The syncing/diffing is
handled all behind the scenes; the API is extremely simple (see
Core\Notifications\DiscussionRenamedNotification +
Core\Events\Handlers\DiscussionRenamedNotifier)
2015-05-20 12:24:01 +09:30
Toby Zerner
f2d1100ec3 Fix broken DeleteAction 2015-05-20 11:13:32 +09:30
Toby Zerner
80c0900388 Just being picky 2015-05-20 11:12:48 +09:30
Toby Zerner
5fede6fe6d Limit notifications to one per user when dispatching events 2015-05-19 11:24:43 +09:30
Toby Zerner
248c19de73 Experimenting with some new ways to handle config
For now I’ve chucked it on Flarum\Core as a static method, but
ultimately I think we will need a ConfigRepository abstraction (whether
it replaces or sits underneath the Flarum\Core static method I’m not
sure).

Also starting to think about multisite scenarios, I think this is
important. The Forum model could actually end up with a database table
behind it, and each forum would have its own config settings? Haven’t
really thought about it too hard yet…
2015-05-19 10:59:57 +09:30