0ed99b840d
* Add the animated checkmark svg * Add progress guide list and task components * Add ProgressGuide Toast component * Implement progress-guide controller * Add 7 follows to the progress guide * Wire up action captures * Wire up progress-guide persistence * Trigger progress guide on account creation * Clear the progress guide from storage on complete * Add progress guide interstitial, put behind gate * Fix: read progress guide state from prefs * Some defensive type checks * Create separate toast for completion * List tweaks * Only show on Discover * Spacing and progress tweaks * Completely hide when complete * Capture the progress guide in local state, and only render toasts while guide is active * Fix: ensure persisted hydrates into local state * Gate --------- Co-authored-by: Eric Bailey <git@esb.lol> Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import React from 'react'
|
|
import {StyleProp, View, ViewStyle} from 'react-native'
|
|
import {msg, Trans} from '@lingui/macro'
|
|
import {useLingui} from '@lingui/react'
|
|
|
|
import {
|
|
useProgressGuide,
|
|
useProgressGuideControls,
|
|
} from '#/state/shell/progress-guide'
|
|
import {atoms as a, useTheme} from '#/alf'
|
|
import {Button, ButtonIcon} from '#/components/Button'
|
|
import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
|
|
import {Text} from '#/components/Typography'
|
|
import {ProgressGuideTask} from './Task'
|
|
|
|
export function ProgressGuideList({style}: {style?: StyleProp<ViewStyle>}) {
|
|
const t = useTheme()
|
|
const {_} = useLingui()
|
|
const guide = useProgressGuide('like-10-and-follow-7')
|
|
const {endProgressGuide} = useProgressGuideControls()
|
|
|
|
if (guide) {
|
|
return (
|
|
<View style={[a.flex_col, a.gap_md, style]}>
|
|
<View style={[a.flex_row, a.align_center, a.justify_between]}>
|
|
<Text
|
|
style={[
|
|
t.atoms.text_contrast_medium,
|
|
a.font_semibold,
|
|
a.text_sm,
|
|
{textTransform: 'uppercase'},
|
|
]}>
|
|
<Trans>Getting started</Trans>
|
|
</Text>
|
|
<Button
|
|
variant="ghost"
|
|
size="tiny"
|
|
color="secondary"
|
|
shape="round"
|
|
label={_(msg`Dismiss getting started guide`)}
|
|
onPress={endProgressGuide}>
|
|
<ButtonIcon icon={Times} size="sm" />
|
|
</Button>
|
|
</View>
|
|
<ProgressGuideTask
|
|
current={guide.numLikes + 1}
|
|
total={10 + 1}
|
|
title={_(msg`Like 10 posts`)}
|
|
subtitle={_(msg`Teach our algorithm what you like`)}
|
|
/>
|
|
<ProgressGuideTask
|
|
current={guide.numFollows + 1}
|
|
total={7 + 1}
|
|
title={_(msg`Follow 7 accounts`)}
|
|
subtitle={_(msg`Bluesky is better with friends!`)}
|
|
/>
|
|
</View>
|
|
)
|
|
}
|
|
return null
|
|
}
|