Link headers in following/followers API should include follow_id as max_id/since_id.
However, these API use current_user's account_id instead of follow_id from #3167.
This causes irrelevant result on loading more users.
- Increase coverage to exercise all parts of each action
- Move into namespace to share common code
- Misc refactor of each action for smaller methods, simpler code
* Introduce recent scope to Status and StreamEntry
Introduce recent scope to Status and StreamEntry as Account has.
* Cover AccountsController more in AccountsController
* Only load Intl data for current language
* Extract common chunk only from application.js and public.js
* Generate locale packs, avoid caching on window object
* Persian translation update
* Persian translation update: new files
* Persian translation update
* activerecord.fa.yml language code
* Persian translation update
* fix indent
* refactor(components/status_list): Avoid quering scrollTop if not necessary
* refactor(components/dropdown_menu): Do not render items if not expanded
* refactor: Cherry-pick react-motion imports
* refactor(compose/privacy_dropdown): Do not render options if not open
* refactor(components/column_collapsable): Do not render children if collapsed
* Add buttons to block and unblock domain
* Relationship API now returns "domain_blocking" status for accounts,
rename "block entire domain" to "hide entire domain", fix unblocking domain,
do not block notifications from domain-blocked-but-followed people, do
not send Salmons to domain blocked users
* Add test
* Personal domain blocks shouldn't affect Salmon after all, since in this
direction of communication the control is very thin when it comes to
public stuff. Best stay consistent and not affect federation in this way
* Ignore followers and follow request from domain blocked folks,
ensure account domain blocks are not created for empty domain,
and avoid duplicates in validation
* Purge followers when blocking domain (without soft-blocks, since they
are useless here)
* Add tests, fix local timeline being empty when having any domain blocks
* feat(eslint): Set react/jsx-no-bind: error
* refactor(notifications/setting_toggle): Do not use bind
* refactor(components/dropdown_menu): Do not use bind
* refactor(components/autosuggest_textarea): Do not use bind
* refactor(compose/privacy_dropdown): Do not use bind
* refactor(compose/upload_form): Do not use bind
* refactor(components/status): Do not use bind
* refactor(components/onboarding_modal): Do not use bind
* refactor: PR feedback
* chore(notifications/setting_toggle): Lint
* refactor: PR feedback
The `params` variable here was quite overloaded.
It exists via the controller to hold the request params, and was sometimes being
used in this helper as that object, but other times was being used as a local
variable, or to pass to another method, and this was confusing.
This change renames the args for a method away from `params` for more clarity,
and extracts the actual usage of the controller-provided `params` to a
better-named method for clarity.
* Add <ostatus:conversation /> tag to Atom input/output
Only uses ref attribute (not href) because href would be
the alternate link that's always included also.
Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.
* Conversation muting - prevents notifications that reference a conversation
(including replies, favourites, reblogs) from being created. API endpoints
/api/v1/statuses/:id/mute and /api/v1/statuses/:id/unmute
Currently no way to tell when a status/conversation is muted, so the web UI
only has a "disable notifications" button, doesn't work as a toggle
* Display "Dismiss notifications" on all statuses in notifications column, not just own
* Add "muted" as a boolean attribute on statuses JSON
For now always false on contained reblogs, since it's only relevant for
statuses returned from the notifications endpoint, which are not nested
Remove "Disable notifications" from detailed status view, since it's
only relevant in the notifications column
* Up max class length
* Remove pending test for conversation mute
* Add tests, clean up
* Rename to "mute conversation" and "unmute conversation"
* Raise validation error when trying to mute/unmute status without conversation
* Adding account domain blocks that filter notifications and public timelines
* Add tests for domain blocks in notifications, public timelines
Filter reblogs of blocked domains from home
* Add API for listing and creating account domain blocks
* API for creating/deleting domain blocks, tests for Status#ancestors
and Status#descendants, filter domain blocks from them
* Filter domains in streaming API
* Update account_domain_block_spec.rb
- add translation "Bon Appetoot!"
- add whitelist what doesn't require translation
- replace exclamation mark full width
- add space after question mark
- remove blank between words
- run yarn manage:translations
* fix(polyfil): Catch error from promise
https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html
* fix(catch): Error
Make import promise catch a noop with commented out console.log for a debugging hint.
* fix(eslint): Disable eslint console rule
* fix(application): Use console error
* Always set `overflow: auto` to allow scroll just after opening
* Remove bounce animation which may cause unintended behavior due to max-height
* Use CSS transition instead of react-motion
* Some CSS refactoring including className changing
* Create common chunk rather than vendor chunk
vendor chunk is a set of modules provided by external vendors, but now we
can have a chunk as a set of modules shared by multiple entry points,
which could be more efficent than having vendor chunk.
* Start rails-ujs in common.js
This is used by /settings/two_factor_authentication.
* Add <ostatus:conversation /> tag to Atom input/output
Only uses ref attribute (not href) because href would be
the alternate link that's always included also.
Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.
* Conversation muting - prevents notifications that reference a conversation
(including replies, favourites, reblogs) from being created. API endpoints
/api/v1/statuses/:id/mute and /api/v1/statuses/:id/unmute
Currently no way to tell when a status/conversation is muted, so the web UI
only has a "disable notifications" button, doesn't work as a toggle
* Display "Dismiss notifications" on all statuses in notifications column, not just own
* Add "muted" as a boolean attribute on statuses JSON
For now always false on contained reblogs, since it's only relevant for
statuses returned from the notifications endpoint, which are not nested
Remove "Disable notifications" from detailed status view, since it's
only relevant in the notifications column
* Up max class length
* Remove pending test for conversation mute
* Add tests, clean up
* Rename to "mute conversation" and "unmute conversation"
* Raise validation error when trying to mute/unmute status without conversation
From #2327 - Elephant friend was overlapping with text, oversized in
single column layout
From #2021 - Centered layout goes against design principles, changes
UX for everybody who's already used to the current one
From #2271 - CPU/RAM overusage from keeping columns in DOM (fix#2648,
possibly also #2101)
* Do not cancel PuSH subscriptions after encountering "permanent" error response
After talking with MMN about it, turns out some servers/php setups do
return 4xx errors while rebooting, so this anti-feature that was meant
to take load off of the hub is doing more harm than good in terms of
breaking subscriptions
* Update delivery_worker.rb
* Fix color contrast some more in privacy warning
Latest master appears to have changed the <strong> to this unreadable grey color. If you want that to be white then it should be pure white. If someone would rather revert this to that strong dark blue color it was before that would be good too.
* Make domain dark blue again
* add missing ;
woops
* Add <ostatus:conversation /> tag to Atom input/output
Only uses ref attribute (not href) because href would be
the alternate link that's always included also.
Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.
* Fix conversation migration
* More spec coverage for status before_create
* Prevent n+1 query when generating Atom with the new conversations
* Improve code style
* Remove redundant local variable
The current text contrast on the privacy warning is a WCAG violation. I didn't notice this because my instance has a custom theme which is better. On default theme I am barely able to read the text with my impaired vision. This patch brings the contrast to Normal Text WCAG AA compliance, and Large Text WCAG AAA compliance.
Use ES Class Fields & Static Properties (currently stage 2) for improve class outlook.
Added babel-plugin-transform-class-properties as a Babel plugin.
* Fix#2027 - Accept own ID for remote follow with and without preceding @
Fix#2177 - Omit leading "acct:" in remote follow redirect template expansion
* Fix test
Receiving instances will then use their own missing image
Also, add <content /> to deleted statuses, since there was a reported
problem with the deletes and GNU social
* Fix regressions from #2683
Properly format spoiler text HTML, while keeping old logic for blankness intact
Process hashtags and mentions in spoiler text
Format spoiler text for Atom
Change "show more" toggle into a button instead of anchor
Fix style regression on dropdowns for detailed statuses
* Fix lint issue
* Convert spoiler text to plaintext in desktop notifications
* services: scan spoiler_text for hashtags (#699)
* views: link hashtags from spoiler_texts
This covers linking hashtags from within the spoiler
text on the server-generated pages.
* services: fix string concat going into hashtag RE
Cleaner Ruby syntax, may handle immutable strings better