New user constants (#260)

* update users

* update

* With constructed intro feed, only grab 20 random suggested users to avoid perf issues

* Don't 'check for latest' in the feed with the suggestions feed

* Show/hide the welcome banner on account change (close #257)

---------

Co-authored-by: Jay Graber <arcalinea@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
zio/stable
arcalinea 2023-03-03 13:37:17 -08:00 committed by GitHub
parent 69d6774277
commit d74ff9c219
5 changed files with 89 additions and 4 deletions

View File

@ -45,6 +45,7 @@
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0", "lodash.isequal": "^4.5.0",
"lodash.omit": "^4.5.0", "lodash.omit": "^4.5.0",
"lodash.samplesize": "^4.2.0",
"lodash.shuffle": "^4.2.0", "lodash.shuffle": "^4.2.0",
"lru_map": "^0.4.1", "lru_map": "^0.4.1",
"mobx": "^6.6.1", "mobx": "^6.6.1",
@ -102,6 +103,7 @@
"@types/lodash.clonedeep": "^4.5.7", "@types/lodash.clonedeep": "^4.5.7",
"@types/lodash.isequal": "^4.5.6", "@types/lodash.isequal": "^4.5.6",
"@types/lodash.omit": "^4.5.7", "@types/lodash.omit": "^4.5.7",
"@types/lodash.samplesize": "^4.2.7",
"@types/lodash.shuffle": "^4.2.7", "@types/lodash.shuffle": "^4.2.7",
"@types/react-avatar-editor": "^13.0.0", "@types/react-avatar-editor": "^13.0.0",
"@types/react-native": "^0.67.3", "@types/react-native": "^0.67.3",

View File

@ -30,7 +30,68 @@ export function TEAM_HANDLES(serviceUrl: string) {
} }
export const PROD_SUGGESTED_FOLLOWS = [ export const PROD_SUGGESTED_FOLLOWS = [
'christina',
'wesam',
'jim',
'ab',
'karalabe',
'clun',
'staltz',
'gillian',
'karpathy',
'zoink',
'john', 'john',
'round',
'vex',
'umang',
'atroyn',
'poisonivy',
'wongmjane',
'lari',
'arunwadhwa',
'trav',
'fred',
'offscript',
'satnam',
'ella',
'caspian',
'spencer',
'nickgrossman',
'koji',
'avy',
'seymourstein',
'joelg',
'stig',
'rabble',
'hunterwalk',
'evan',
'aviral',
'tami',
'generativist',
'gord',
'ninjapleasedj',
'robotics',
'noahjnelson',
'vijay',
'scottbeale',
'daybreakjung',
'shelby',
'joel',
'space',
'rish',
'simon',
'kelly',
'maxbittker',
'sylphrenetic',
'caleb',
'jik',
'james',
'neil',
'tippenein',
'mandel',
'sharding',
'tyler',
'raymond',
'visakanv', 'visakanv',
'saz', 'saz',
'steph', 'steph',
@ -39,12 +100,17 @@ export const PROD_SUGGESTED_FOLLOWS = [
'weisser', 'weisser',
'katherine', 'katherine',
'annagat', 'annagat',
'an',
'kunal',
'josh', 'josh',
'lurkshark', 'lurkshark',
'amir', 'amir',
'amyxzh', 'amyxzh',
'danielle', 'danielle',
'jack-frazee', 'jack-frazee',
'daniellefong',
'dystopiabreaker',
'morgan',
'vibes', 'vibes',
'cat', 'cat',
'yuriy', 'yuriy',
@ -63,6 +129,7 @@ export const PROD_SUGGESTED_FOLLOWS = [
'jennijuju', 'jennijuju',
'ian5v', 'ian5v',
'bnewbold', 'bnewbold',
'jasmine',
'chris', 'chris',
'mtclai', 'mtclai',
'willscott', 'willscott',

View File

@ -7,6 +7,7 @@ import {
} from '@atproto/api' } from '@atproto/api'
import AwaitLock from 'await-lock' import AwaitLock from 'await-lock'
import {bundleAsync} from 'lib/async/bundle' import {bundleAsync} from 'lib/async/bundle'
import sampleSize from 'lodash.samplesize'
type FeedViewPost = AppBskyFeedFeedViewPost.Main type FeedViewPost = AppBskyFeedFeedViewPost.Main
type ReasonRepost = AppBskyFeedFeedViewPost.ReasonRepost type ReasonRepost = AppBskyFeedFeedViewPost.ReasonRepost
type PostView = AppBskyFeedPost.View type PostView = AppBskyFeedPost.View
@ -425,7 +426,7 @@ export class FeedModel {
* Check if new posts are available * Check if new posts are available
*/ */
async checkForLatest() { async checkForLatest() {
if (this.hasNewLatest) { if (this.hasNewLatest || this.rootStore.me.follows.isEmpty) {
return return
} }
const res = await this._getFeed({limit: 1}) const res = await this._getFeed({limit: 1})
@ -565,7 +566,10 @@ export class FeedModel {
if (this.rootStore.me.follows.isEmpty) { if (this.rootStore.me.follows.isEmpty) {
const responses = await getMultipleAuthorsPosts( const responses = await getMultipleAuthorsPosts(
this.rootStore, this.rootStore,
sampleSize(
SUGGESTED_FOLLOWS(String(this.rootStore.agent.service)), SUGGESTED_FOLLOWS(String(this.rootStore.agent.service)),
20,
),
params.before, params.before,
20, 20,
) )

View File

@ -78,11 +78,11 @@ export const Feed = observer(function Feed({
// = // =
const checkWelcome = React.useCallback(async () => { const checkWelcome = React.useCallback(async () => {
if (showWelcomeBanner) { if (showWelcomeBanner && store.me.did) {
await store.me.follows.fetchIfNeeded() await store.me.follows.fetchIfNeeded()
setIsNewUser(store.me.follows.isEmpty) setIsNewUser(store.me.follows.isEmpty)
} }
}, [showWelcomeBanner, store.me.follows]) }, [showWelcomeBanner, store.me.follows, store.me.did])
React.useEffect(() => { React.useEffect(() => {
checkWelcome() checkWelcome()
}, [checkWelcome]) }, [checkWelcome])

View File

@ -2833,6 +2833,13 @@
dependencies: dependencies:
"@types/lodash" "*" "@types/lodash" "*"
"@types/lodash.samplesize@^4.2.7":
version "4.2.7"
resolved "https://registry.yarnpkg.com/@types/lodash.samplesize/-/lodash.samplesize-4.2.7.tgz#15784dd9e54aa1bf043552bdb533b83fcf50b82f"
integrity sha512-l4nPeq7tew/T/4zKvVvjR0r4XyDaeTGGSGrdXsjH64LbWsosZBo9/zGpAIBjAH2nKZwZ8fHZ5alhaIZu5LLwmg==
dependencies:
"@types/lodash" "*"
"@types/lodash.shuffle@^4.2.7": "@types/lodash.shuffle@^4.2.7":
version "4.2.7" version "4.2.7"
resolved "https://registry.yarnpkg.com/@types/lodash.shuffle/-/lodash.shuffle-4.2.7.tgz#b714d829af948a266b0df1477d629c70de2f4c72" resolved "https://registry.yarnpkg.com/@types/lodash.shuffle/-/lodash.shuffle-4.2.7.tgz#b714d829af948a266b0df1477d629c70de2f4c72"
@ -8999,6 +9006,11 @@ lodash.once@^4.0.0:
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
lodash.samplesize@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.samplesize/-/lodash.samplesize-4.2.0.tgz#460762fbb2b342290517499e90d51586db465ff9"
integrity sha512-1ZhKV7/nuISuaQdxfCqrs4HHxXIYN+0Z4f7NMQn2PHkxFZJGavJQ1j/paxyJnLJmN2ZamNN6SMepneV+dCgQTA==
lodash.shuffle@^4.2.0: lodash.shuffle@^4.2.0:
version "4.2.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b" resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b"