Commit graph

30 commits

Author SHA1 Message Date
Eugen Rochko
b61ff36351 Change unauthenticated responses to be cached in REST API () 2023-04-25 15:41:34 +02:00
Nick Schonning
793f8c7dd5 Autofix Rubocop Style/IfUnlessModifier () 2023-02-18 12:37:47 +01:00
Eugen Rochko
d5de12d931 Fix performance of account timelines ()
* Fix performance of account timelines

* Various fixes and improvements

* Fix duplicate results being returned

Co-authored-by: Claire <claire.github-309c@sitedethib.com>

* Fix grouping for pinned statuses scope

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2022-03-08 09:14:39 +01:00
Claire
5aade2baac Add support for private pinned posts ()
* Add support for private pinned toots

* Allow local user to pin private toots

* Change wording to avoid "direct message"
2022-01-17 00:49:55 +01:00
abcang
dec6f34546 Further improve the media attached status query for accounts () 2021-04-26 18:57:46 +02:00
abcang
fa2d62e6e2 Improve media attached status query () 2021-04-25 06:34:48 +02:00
Eugen Rochko
7fa0da9e98 Change REST API to return empty data for suspended accounts () 2020-09-11 15:16:29 +02:00
Akihiko Odaki
1c70d8189c Introduce ApplicationController#cache_collection_paginated_by_id ()
* Replace incorrect use of distinct with group

Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
are incorrect for the current version of Rails.

ActiveRecord::QueryMethods#group provides the expected behavior and
benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.

* Introduce ApplicationController#cache_collection_paginated_by_id

ApplicationController#cache_collection_paginated_by_id fuses
ApplicationController#cache_collection and Paginable.paginate_by_id.

An advantage of this method is that it prevents from modifying scope which
Paginable.paginate_by_id may provide.
ApplicationController#cache_collection always return an array and there
is no possibility of the scope modification. It is also clear for a
programmer, considering the implication of "cache".

This method can also emit more efficient queries by using
Cacheable.cache_ids before calling Paginable.paginate_by_id.
2020-08-28 12:31:56 +02:00
Akihiko Odaki
81666b26a6 Replace incorrect use of distinct with group ()
Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
are incorrect for the current version of Rails.

ActiveRecord::QueryMethods#group provides the expected behavior and
benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.
2020-08-28 12:29:59 +02:00
Eugen Rochko
9619521459 Remove useless respond_to calls () 2020-03-06 01:29:38 +01:00
abcang
4c0da93bc7 Improve status pin query () 2019-09-27 15:23:30 +02:00
Eugen Rochko
73d8f314a9 Fix error in REST API for an account's statuses () 2019-08-30 02:49:44 +02:00
Eugen Rochko
24a5f99d10 Fix pinned statuses API returning pagination headers ()
Fix 
2019-08-08 23:04:04 +02:00
Eugen Rochko
c84c30c542 Improve blocked view of profiles ()
* Revert "Fix filtering of favourited_by, reblogged_by, followers and following ()"

This reverts commit 0317f37c6f.

* Revert "Hide blocking accounts from blocked users ()"

This reverts commit 4cd944d364.

* Improve blocked view of profiles

- Change "You are blocked" to "Profile unavailable"
- Hide following/followers in API when blocked
- Disable follow button and show "Profile unavailable" on public profile as well
2019-04-07 04:59:13 +02:00
ThibG
4cd944d364 Hide blocking accounts from blocked users ()
* Revert "Add indication that you have been blocked in web UI ()"

This reverts commit d31affe69b.

* Revert "Add `blocked_by` relationship to the REST API ()"

This reverts commit a8bb10633d.

* Hide blocking accounts from search results

* Filter blocking accouts from account followers

* Filter blocking accouts from account's following accounts

* Filter blocking accounts from “reblogged by” and “favourited by” lists

* Remove blocking account from URL search

* Return 410 on trying to fetch user data from a user who blocked us

* Return 410 in /api/v1/account/statuses for suspended or blocking accounts

* Fix status filtering when performing URL search

* Restore some React improvements

Restore some cleanup from d31affe69b

* Refactor by adding `without_blocking` scope
2019-04-01 20:06:13 +02:00
Eugen Rochko
5ff943716e Fix tagged param not being normalized before querying tags () 2019-03-13 13:02:13 +01:00
abcang
affb8b1de9 Improve account media query () 2019-02-26 15:23:24 +01:00
Eugen Rochko
d2d4d38f22 Add featured hashtags to profiles ()
* Add hashtag filter to profiles

GET /@:username/tagged/:hashtag
GET /api/v1/accounts/:id/statuses?tagged=:hashtag

* Display featured hashtags on public profile

* Use separate model for featured tags

* Update featured hashtag counters on-write

* Limit featured tags to 10
2019-02-04 04:25:59 +01:00
Eugen Rochko
d70d8321d3 Add exclude_reblogs option to account statuses API ()
Fix 
2018-12-27 03:42:35 +01:00
Eugen Rochko
ae8c6b892f Allow unauthenticated REST API access to GET /api/v1/accounts/:id/statuses ()
Fix 

The same data is available over the ActivityPub outbox, RSS, and Atom, so
there is little benefit to keeping it limited in this method.
2018-12-20 01:30:43 +01:00
Eugen Rochko
5ddcdf3753 Support min_id-based pagination in REST API ()
* Allow min_id pagination in Feed#get

* Add min_id pagination to home and list timeline APIs

* Add min_id pagination to account statuses, public and tag APIs

* Remove unused stub in reports API

* Use min_id pagination in notifications, favourites, and fix order

* Fix HomeFeed#from_database not using paginate_by_id
2018-09-28 02:23:45 +02:00
Eugen Rochko
34fdf77f48 Add more granular OAuth scopes ()
* Add more granular OAuth scopes

* Add human-readable descriptions of the new scopes

* Ensure new scopes look good on the app UI

* Add tests

* Group scopes in screen and color-code dangerous ones

* Fix wrong extra scope
2018-07-05 18:31:35 +02:00
Akihiko Odaki
a81b1e6f10 Do not use permitted_for scope when querying pinned statuses ()
permitted_for scope is slow when combined with pinned status scope.
Fortunately permitted_for scope can safely be removed because a pinned
status is always public.
2018-05-16 12:30:14 +02:00
Eugen Rochko
10fc551576 Fix unpermitted parameters warning when generating pagination URLs () 2018-04-02 02:09:50 +02:00
abcang
f25dfde752 Improve performance of account_media_status_ids () 2018-03-10 17:44:26 +01:00
Eugen Rochko
f410afe59e Ensure that boolean params in the API are parsed for truthiness ()
Use Rails smart boolean cast to account for values such as "f",
"0", "false", etc. Previously, if a param was present in the request,
it would count as true.
2018-03-01 02:47:59 +01:00
Eugen Rochko
3e20cb7025 Pinned statuses ()
* Pinned statuses

* yarn manage:translations
2017-08-25 01:41:18 +02:00
Eugen Rochko
20e15ecfb3 Refactor JSON templates to be generated with ActiveModelSerializers instead of Rabl () 2017-07-07 04:02:06 +02:00
Matt Jankowski
76f986d07b Clean up for api/base controller ()
* Move ApiController to Api/BaseController

* API controllers inherit from Api::BaseController

* Add coverage for various error cases in api/base controller
2017-06-07 20:09:25 +02:00
Matt Jankowski
1066fd1ab5 Spec coverage and refactor for the api/v1/accounts controllers () 2017-05-31 21:36:24 +02:00