Unfortunately, the database query could turn out very inefficient and I did not
manage to find a way to improve that. Furthermore, there were still behavior
inconsistencies between fetching the timeline from Redis and fetching it from
Postgres.
* Rework tests
* Add tests
* Fix HomeFeed#get with min_id fetching from database
* Minor code cleanup and optimizations
* Add tests
* Take DMs into account when fetching home TL from database
* Fix not listing own DMs in Home timeline
* Add tests
* Please CodeClimate
* Implement infinity home timeline
* Fix test for infinite home timeline
* Fix infinity home timeline with min_id
* Fix infinite home timeline duplicated statuses
* Codeclimate for infinite home timeline
* Refactor code as reviewed
* Fix redis sufficient check
* Fix typo on variable name
Fetching statuses from all followed accounts at once takes too long
within Postgres. Fetching them one by one and merging in Ruby
could be a lot less resource-intensive
Because the query for dynamically fetching the home timeline is so
heavy, we can no longer offer it when the home timeline is missing
* Add structure for lists
* Add list timeline streaming API
* Add list APIs, bind list-account relation to follow relation
* Add API for adding/removing accounts from lists
* Add pagination to lists API
* Add pagination to list accounts API
* Adjust scopes for new APIs
- Creating and modifying lists merely requires "write" scope
- Fetching information about lists merely requires "read" scope
* Add test for wrong user context on list timeline
* Clean up tests