diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-07-03 19:05:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-04 03:05:19 +0100 |
commit | 0ed99b840d8de13465f010a6434dea50c72b3f62 (patch) | |
tree | 75ebec28653a081793ca0cbca0c428a816980c6a /src/components/ProgressGuide/List.tsx | |
parent | aa7117edb60711a67464f7559118334185f01680 (diff) | |
download | voidsky-0ed99b840d8de13465f010a6434dea50c72b3f62.tar.zst |
New user progress guides (#4716)
* 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>
Diffstat (limited to 'src/components/ProgressGuide/List.tsx')
-rw-r--r-- | src/components/ProgressGuide/List.tsx | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/components/ProgressGuide/List.tsx b/src/components/ProgressGuide/List.tsx new file mode 100644 index 000000000..f68445d2b --- /dev/null +++ b/src/components/ProgressGuide/List.tsx @@ -0,0 +1,61 @@ +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 +} |