Merge remote-tracking branch 'origin/main' into starter-packs

This commit is contained in:
Hailey
2024-06-17 16:41:05 -07:00
8 changed files with 49 additions and 30 deletions
+8 -1
View File
@@ -14,7 +14,11 @@ import * as SplashScreen from 'expo-splash-screen'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {Provider as StatsigProvider} from '#/lib/statsig/statsig'
import {
initialize,
Provider as StatsigProvider,
tryFetchGates,
} from '#/lib/statsig/statsig'
import {logger} from '#/logger'
import {MessagesProvider} from '#/state/messages'
import {init as initPersistedState} from '#/state/persisted'
@@ -71,6 +75,9 @@ function InnerApp() {
try {
if (account) {
await resumeSession(account)
} else {
await initialize()
await tryFetchGates(undefined, 'prefer-fresh-gates')
}
} catch (e) {
logger.error(`session: resume failed`, {message: e})
+1
View File
@@ -1,5 +1,6 @@
export type Gate =
// Keep this alphabetic please.
| 'native_pwi_disabled'
| 'request_notifications_permission_after_onboarding_v2'
| 'show_avi_follow_button'
| 'show_follow_back_label_v2'
+8 -2
View File
@@ -14,6 +14,8 @@ import {useNonReactiveCallback} from '../hooks/useNonReactiveCallback'
import {LogEvents} from './events'
import {Gate} from './gates'
const SDK_KEY = 'client-SXJakO39w9vIhl3D44u8UupyzFl4oZ2qPIkjwcvuPsV'
type StatsigUser = {
userID: string | undefined
// TODO: Remove when enough users have custom.platform:
@@ -251,7 +253,7 @@ AppState.addEventListener('change', (state: AppStateStatus) => {
})
export async function tryFetchGates(
did: string,
did: string | undefined,
strategy: 'prefer-low-latency' | 'prefer-fresh-gates',
) {
try {
@@ -275,6 +277,10 @@ export async function tryFetchGates(
}
}
export function initialize() {
return Statsig.initialize(SDK_KEY, null, createStatsigOptions([]))
}
export function Provider({children}: {children: React.ReactNode}) {
const {currentAccount, accounts} = useSession()
const did = currentAccount?.did
@@ -320,7 +326,7 @@ export function Provider({children}: {children: React.ReactNode}) {
<GateCache.Provider value={gateCache}>
<StatsigProvider
key={did}
sdkKey="client-SXJakO39w9vIhl3D44u8UupyzFl4oZ2qPIkjwcvuPsV"
sdkKey={SDK_KEY}
mountKey={currentStatsigUser.userID}
user={currentStatsigUser}
// This isn't really blocking due to short initTimeoutMs above.
+1 -1
View File
@@ -152,7 +152,7 @@ export function Layout({children}: React.PropsWithChildren<{}>) {
{children}
</View>
<View style={{height: 200}} />
<View style={{height: 400}} />
</View>
</View>
</ScrollView>
@@ -5,7 +5,7 @@ import ViewShot from 'react-native-view-shot'
import {useAvatar} from '#/screens/Onboarding/StepProfile/index'
import {atoms as a} from '#/alf'
const SIZE_MULTIPLIER = 1.5
const SIZE_MULTIPLIER = 5
export interface PlaceholderCanvasRef {
capture: () => Promise<string>
+10 -13
View File
@@ -16,18 +16,17 @@ import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useGetPopularFeedsQuery} from '#/state/queries/feed'
import {usePreferencesQuery} from '#/state/queries/preferences'
import {useSuggestedFollowsQuery} from '#/state/queries/suggested-follows'
import {useSession} from '#/state/session'
import {cleanError} from 'lib/strings/errors'
import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard'
import {List} from '#/view/com/util/List'
import {UserAvatar} from '#/view/com/util/UserAvatar'
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
import {
FeedFeedLoadingPlaceholder,
ProfileCardFeedLoadingPlaceholder,
} from 'view/com/util/LoadingPlaceholder'
import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
import {Button} from '#/components/Button'
import * as FeedCard from '#/components/FeedCard'
import {ArrowBottom_Stroke2_Corner0_Rounded as ArrowBottom} from '#/components/icons/Arrow'
import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
import {Props as SVGIconProps} from '#/components/icons/common'
@@ -271,7 +270,6 @@ type ExploreScreenItems =
export function Explore() {
const {_} = useLingui()
const t = useTheme()
const {hasSession} = useSession()
const {data: preferences, error: preferencesError} = usePreferencesQuery()
const moderationOpts = useModerationOpts()
const {
@@ -480,15 +478,14 @@ export function Explore() {
}
case 'feed': {
return (
<View style={[a.border_b, t.atoms.border_contrast_low]}>
<FeedSourceCard
feedUri={item.feed.uri}
showSaveBtn={hasSession}
showDescription
showLikes
pinOnSave
hideTopBorder
/>
<View
style={[
a.border_b,
t.atoms.border_contrast_low,
a.px_lg,
a.py_lg,
]}>
<FeedCard.Default feed={item.feed} />
</View>
)
}
@@ -538,7 +535,7 @@ export function Explore() {
}
}
},
[t, hasSession, moderationOpts],
[t, moderationOpts],
)
return (
+12 -10
View File
@@ -57,8 +57,8 @@ import {Text} from '#/view/com/util/text/Text'
import {CenteredView, ScrollView} from '#/view/com/util/Views'
import {Explore} from '#/view/screens/Search/Explore'
import {SearchLinkCard, SearchProfileCard} from '#/view/shell/desktop/Search'
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
import {atoms as a} from '#/alf'
import {atoms as a, useTheme as useThemeNew} from '#/alf'
import * as FeedCard from '#/components/FeedCard'
import {Menu_Stroke2_Corner0_Rounded as Menu} from '#/components/icons/Menu'
function Loader() {
@@ -285,8 +285,8 @@ let SearchScreenFeedsResults = ({
query: string
active: boolean
}): React.ReactNode => {
const t = useThemeNew()
const {_} = useLingui()
const {hasSession} = useSession()
const {data: results, isFetched} = usePopularFeedsSearch({
query,
@@ -299,13 +299,15 @@ let SearchScreenFeedsResults = ({
<List
data={results}
renderItem={({item}) => (
<FeedSourceCard
feedUri={item.uri}
showSaveBtn={hasSession}
showDescription
showLikes
pinOnSave
/>
<View
style={[
a.border_b,
t.atoms.border_contrast_low,
a.px_lg,
a.py_lg,
]}>
<FeedCard.Default feed={item} />
</View>
)}
keyExtractor={item => item.uri}
// @ts-ignore web only -prf
@@ -29,7 +29,8 @@ import {
useLoggedOutView,
useLoggedOutViewControls,
} from '#/state/shell/logged-out'
import {isWeb} from 'platform/detection'
import {useGate} from 'lib/statsig/statsig'
import {isNative, isWeb} from 'platform/detection'
import {Deactivated} from '#/screens/Deactivated'
import {Onboarding} from '#/screens/Onboarding'
import {SignupQueued} from '#/screens/SignupQueued'
@@ -50,6 +51,7 @@ function NativeStackNavigator({
screenOptions,
...rest
}: NativeStackNavigatorProps) {
const gate = useGate()
// --- this is copy and pasted from the original native stack navigator ---
const {state, descriptors, navigation, NavigationContent} =
useNavigationBuilder<
@@ -100,7 +102,11 @@ function NativeStackNavigator({
const {showLoggedOut} = useLoggedOutView()
const {setShowLoggedOut} = useLoggedOutViewControls()
const {isMobile, isTabletOrMobile} = useWebMediaQueries()
if ((!PWI_ENABLED || activeRouteRequiresAuth) && !hasSession) {
const isNativePWIDisabled = isNative && gate('native_pwi_disabled')
if (
(!PWI_ENABLED || isNativePWIDisabled || activeRouteRequiresAuth) &&
!hasSession
) {
return <LoggedOut />
}
if (hasSession && currentAccount?.signupQueued) {