1
0
mirror of https://github.com/flarum/core.git synced 2025-07-23 09:41:26 +02:00
Commit Graph

121 Commits

Author SHA1 Message Date
Toby Zerner
e272ae77e1 Force redraw of composer component when switching in a new one 2015-05-21 13:08:33 +09:30
Toby Zerner
c95b8838ac Maintain scroll position relative to bottom of hero when switching categories 2015-05-21 08:15:58 +09:30
Toby Zerner
8f7e563036 Performance improvements 2015-05-21 06:49:07 +09:30
Toby Zerner
500c279fb3 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
8edb684ea9 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
8095809c3f Prevent moment deprecation warning 2015-05-19 10:12:18 +09:30
Toby Zerner
9fd5995703 Actually implement persistent avatar removal in the front-end 2015-05-19 09:27:04 +09:30
Toby Zerner
9fdafcc014 Disable composer textarea before it has fully slid up
Prevents early focusing of the textarea while it is still off the edge
of the viewport, which was causing scroll position to jump
2015-05-19 09:17:48 +09:30
Toby Zerner
9befc68ea3 GitHub for Mac sucks, why does it leave out a file sometimes? 2015-05-18 18:50:43 +09:30
Toby Zerner
58adcfa3c4 Rename JS sub-components so that descriptors are before the noun, not after
To be consistent with the naming in PHP world.

e.g. ReplyComposer instead of ComposerReply
2015-05-18 18:50:24 +09:30
Toby Zerner
00be36ad16 Better API error handling 2015-05-18 18:13:16 +09:30
Toby Zerner
96c3c2cc25 Show composer after discussion is reloaded following login 2015-05-18 15:38:19 +09:30
Toby Zerner
8b7e7c0afd Clicking on an index nav item should always refresh the discussion list 2015-05-18 15:27:39 +09:30
Toby Zerner
b11595de06 Refresh discussion after logging in. Fixes #68 2015-05-18 15:07:04 +09:30
Toby Zerner
a7ff92cbff Only allow user profile to be edited if user has permission. Fixes #72 2015-05-18 14:58:59 +09:30
Toby Zerner
3fcf8f3da5 Make avatar edit menu extensible 2015-05-18 14:58:23 +09:30
Toby Zerner
82dc0cdd7b Fix broken login/signup links
They’re still broken, hoping that
https://github.com/babel/babel/issues/1150#issuecomment-102881157 will
fix
2015-05-18 14:58:08 +09:30
Toby Zerner
c9b971bdf8 Don't affix the sidebar if it is taller than the viewport. fixes #79 2015-05-18 14:47:08 +09:30
Toby Zerner
d7facbd90a Set document.title on every page 2015-05-18 14:28:15 +09:30
Toby Zerner
39dd2f9b9b Actually fade out post when it is being edited 2015-05-18 14:27:29 +09:30
Toby Zerner
9004aff630 Make discussion edit permission specific to renaming 2015-05-18 12:34:03 +09:30
Toby Zerner
d9e97bc149 Fix broken composer extensibility 2015-05-18 10:55:07 +09:30
Toby Zerner
0037383d9f Oops duplicate method name 2015-05-18 10:48:48 +09:30
Toby Zerner
b1cbfe0186 Drastically improve how the composer looks and behaves
- New, cleaner, more prominent look
- Make it statically positioned down the bottom on mobile, so you can
still scroll up to look at posts
- Fix some bugs with animation, jumping between views
2015-05-18 10:40:14 +09:30
Toby Zerner
c0bf5f81fe Fix sometimes trying to jump to NaN in the stream 2015-05-18 10:37:47 +09:30
Toby Zerner
e77d0e0786 Add a space between avatar/username for better display on mobile 2015-05-18 10:37:24 +09:30
Toby Zerner
a80ae5c400 Minimise composer when exiting a page, rather than entering it 2015-05-18 10:37:07 +09:30
Toby Zerner
72e9205b50 Properly initialise subtree retainers 2015-05-18 10:35:12 +09:30
Toby Zerner
a5f4e10f79 Make discussion list includes extensible 2015-05-14 23:10:11 +09:30
Toby Zerner
6aa0765bb4 Note for the future 2015-05-14 22:41:08 +09:30
Toby Zerner
614a75a497 New look for notifications 2015-05-14 22:41:08 +09:30
Toby Zerner
a77303a473 Add pulsate/flash animations for drawing attention to posts 2015-05-14 22:41:07 +09:30
Toby Zerner
106f5df771 Transform post time into a date 2015-05-14 22:41:06 +09:30
Toby Zerner
8156f23968 Add helper function for punctuating a list
e.g. [1,2,3] ⇒ [1, ‘, ‘, 2, ‘, and’, 3]
2015-05-14 22:41:06 +09:30
Toby Zerner
a8ad5a1ac8 Add methods for doing stuff in text editor
Used by the mentions extension
2015-05-14 22:41:06 +09:30
Toby Zerner
a2049feddf Only give dropdown menu items padding if they have an icon 2015-05-14 22:41:06 +09:30
Toby Zerner
d85ae8745e Automatically hook up onload/config functions
So that every component's DOM can be config'd by extensions
2015-05-14 22:41:06 +09:30
Toby Zerner
f2c07218b0 Add convenience route generation functions
Many instances throughout the app need to be updated to use these :)
2015-05-14 22:41:06 +09:30
Toby Zerner
a1c21797fc Make discussion actions public; use existing reply composer if it's already set up 2015-05-14 22:41:06 +09:30
Toby Zerner
49749a65a3 Fix up post stream jumping to index 2015-05-14 22:41:06 +09:30
Toby Zerner
4a7bd67199 New component for post excerpts, which will be shown in search results
Perhaps also in user activity stream. They are used in the mentions
extension.

In order to generate the excerpt, each formatter can implement a
“strip” method which basically converts block formatting into inline
formatting.
2015-05-14 22:41:05 +09:30
Toby Zerner
5c6eaefb1f Don't be so picky about the slug 2015-05-14 22:41:05 +09:30
Toby Zerner
bdf07aee50 Only add initial posts to the post stream if they have content 2015-05-14 22:41:05 +09:30
Toby Zerner
5115b6fb09 Prevent JS error for now 2015-05-14 22:41:05 +09:30
Toby Zerner
7a7ed695e2 Nicer API for changing discussion request includes (array instead of string) 2015-05-14 22:41:05 +09:30
Toby Zerner
df3d205132 Don't bother confirming exit if there's no content 2015-05-14 22:41:05 +09:30
Toby Zerner
fb834675b9 Focus at the end of the textarea when showing composer 2015-05-14 22:41:05 +09:30
Toby Zerner
222b81e917 Make text editor's controller accessible 2015-05-14 22:41:05 +09:30
Toby Zerner
41d2d0b1c6 Tweak composer anchoring/animation 2015-05-14 22:41:04 +09:30
Toby Zerner
87d505499b Prevent re-showing the composer when it's already showing 2015-05-14 22:41:04 +09:30