Replace our existing onboarding suggested channels with top feeds based on the selected hashtags
https://www.evernote.com/l/AGvHKp_LCVVCh4FB5GyBgPPC5jBKFlXj43QB/image.png
Make our onboarding process apply the user selected hashtags here
And supply them to the top feeds algorithm and use the returned channels to populate the next step
https://www.evernote.com/l/AGsJ2LB7CfdKdYcJZXrKvpMoUijvgL0fr94B/image.png
- Save the hashtags to the user
- Use the selected hashtags to call the top feed
- Populate the subscribe to some popular channels with those results
- Unit tests
- E2E tests
It should not include any NSFW channels
added scoped labels
changed weight to 4
added scoped label
added to epic &111
marked this issue as related to #2290
added scoped label
added scoped label and automatically removed label
changed weight to 6
changed time estimate to 6h
added 6h of time spent at 2019-12-19
- Developer
Due to the way Top Feeds work (only the first 12 results are hydrated) and Entities Service using a RxJS Behavior, the scope of this task changed.
I implemented a Suggestions Service that allows using 2 different mechanisms:
- Graph: it uses
/v2/suggestions/user
, fetches 100 users - Top: it uses
/v2/feeds/top/channels
(30 days), fetches 500 activities then aggregates by user
Results from both endpoints are normalized and stored onto an array in the service. Then they can be paginated. When an array fragment is sliced, the service maps through it and either wraps the existing
entity
onto a resolved promise or references to athis.entitiesService.get()
Behavior to be used with the| async
pipe at template level.Edited by Emiliano Balbuena - Graph: it uses
- Developer
Copying the mobile team cards on this so they are aware of the change as well
mentioned in issue mobile-native#1635
- Owner
EMI = SMART
- Developer
One of the SMARTest
- Developer
What do you recommend to avoid showing channels that the user already subscribed?
-
- Front-end would call (once) to gather the list of channels GUIDS the user has subscribed. This would need a new endpoint on the server which will return an un-paginated collection of GUIDS.
-
- We'll add an extra post-processing to feeds.php, based on a query string (
?exclude_existing_subscriptions=1
), that will filter out FeedSyncEntity instances whoseownerGuid
is part of the user's subscriptions.
- We'll add an extra post-processing to feeds.php, based on a query string (
-
- (A little more difficult to implement) Based on a query string (
?exclude_existing_subscriptions=1
),feeds.php
will pass an extra option toElastic\Repository
to run a sub-query againstminds-kite
index to exclude certainowner_guids
.
- (A little more difficult to implement) Based on a query string (
My only concern with the (2) and (3) solutions is that
feeds.php
endpoint andElastic\Repository
class are getting complex to a point that is difficult maintain.Thanks!
cc/ @juanmsolaro to be on the same page
Edited by Emiliano Balbuena -
- Developer
I am in favor of #2. Those feeds are super powerful and the more we unify our data, the easier it will be to fix feeds issues across the board.
mentioned in issue #2362 (closed)
added scoped label and automatically removed label
- Developer
Moved to blocked until getting an answer. #2 is easier but will require us that we fetch the whole subscription list, which is up to 5000 entries, to filter out.
cc/ @brianhatchet