New onboarding (#241)
* delete old onboarding files and code * add custom FollowButton component to Post, FeedItem, & ProfileCard * move building suggested feed into helper lib * show suggested posts/feed if follower list is empty * Update tsconfig.json * add pagination to getting new onboarding * remove unnecessary console log * fix naming, add better null check for combinedCursor * In locally-combined feeds, correctly produce an undefined cursor when out of data * Minor refactors of the suggested posts lib functions * Show 'follow button' style of post meta in certain conditions only * Only show follow btn in posts on the main feed and the discovery feed * Add a welcome notice to the home feed * Tune the timing of when the welcome banner shows or hides * Make the follow button an observer (closes #244) * Update postmeta to keep the follow btn after press until next render * A couple of fixes that ensure consistent welcome screen * Fix lint * Rework the welcome banner * Fix cache invalidation of follows model on user switch * Show welcome banner while loading * Update the home onboarding feed to get top posts from hardcode recommends * Drop unused helper function * Update happy path tests --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
parent
9b46b2e6a9
commit
bd9386d81c
31 changed files with 426 additions and 866 deletions
|
@ -4,26 +4,12 @@ import shuffle from 'lodash.shuffle'
|
|||
import {RootStoreModel} from './root-store'
|
||||
import {cleanError} from 'lib/strings/errors'
|
||||
import {bundleAsync} from 'lib/async/bundle'
|
||||
import {
|
||||
DEV_SUGGESTED_FOLLOWS,
|
||||
PROD_SUGGESTED_FOLLOWS,
|
||||
STAGING_SUGGESTED_FOLLOWS,
|
||||
} from 'lib/constants'
|
||||
import {SUGGESTED_FOLLOWS} from 'lib/constants'
|
||||
|
||||
const PAGE_SIZE = 30
|
||||
|
||||
export type SuggestedActor = Profile.ViewBasic | Profile.View
|
||||
|
||||
const getSuggestionList = ({serviceUrl}: {serviceUrl: string}) => {
|
||||
if (serviceUrl.includes('localhost')) {
|
||||
return DEV_SUGGESTED_FOLLOWS
|
||||
} else if (serviceUrl.includes('staging')) {
|
||||
return STAGING_SUGGESTED_FOLLOWS
|
||||
} else {
|
||||
return PROD_SUGGESTED_FOLLOWS
|
||||
}
|
||||
}
|
||||
|
||||
export class SuggestedActorsViewModel {
|
||||
// state
|
||||
pageSize = PAGE_SIZE
|
||||
|
@ -126,9 +112,9 @@ export class SuggestedActorsViewModel {
|
|||
try {
|
||||
// clone the array so we can mutate it
|
||||
const actors = [
|
||||
...getSuggestionList({
|
||||
serviceUrl: this.rootStore.session.currentSession?.service || '',
|
||||
}),
|
||||
...SUGGESTED_FOLLOWS(
|
||||
this.rootStore.session.currentSession?.service || '',
|
||||
),
|
||||
]
|
||||
|
||||
// fetch the profiles in chunks of 25 (the limit allowed by `getProfiles`)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue