diff options
Diffstat (limited to 'src/view/shell')
-rw-r--r-- | src/view/shell/Drawer.tsx | 13 | ||||
-rw-r--r-- | src/view/shell/desktop/RightNav.tsx | 33 | ||||
-rw-r--r-- | src/view/shell/desktop/Search.tsx | 32 |
3 files changed, 47 insertions, 31 deletions
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx index 8145fa408..d8e604ec3 100644 --- a/src/view/shell/Drawer.tsx +++ b/src/view/shell/Drawer.tsx @@ -18,6 +18,7 @@ import {useLingui} from '@lingui/react' import {StackActions, useNavigation} from '@react-navigation/native' import {emitSoftReset} from '#/state/events' +import {useKawaiiMode} from '#/state/preferences/kawaii' import {useUnreadNotifications} from '#/state/queries/notifications/unread' import {useProfileQuery} from '#/state/queries/profile' import {SessionAccount, useSession} from '#/state/session' @@ -117,6 +118,7 @@ let DrawerContent = ({}: {}): React.ReactNode => { const {isAtHome, isAtSearch, isAtFeeds, isAtNotifications, isAtMyProfile} = useNavigationTabState() const {hasSession, currentAccount} = useSession() + const kawaii = useKawaiiMode() // events // = @@ -262,6 +264,17 @@ let DrawerContent = ({}: {}): React.ReactNode => { href="https://bsky.social/about/support/privacy-policy" text={_(msg`Privacy Policy`)} /> + {kawaii && ( + <Text type="md" style={pal.textLight}> + Logo by{' '} + <TextLink + type="md" + href="/profile/sawaratsuki.bsky.social" + text="@sawaratsuki.bsky.social" + style={pal.link} + /> + </Text> + )} </View> <View style={styles.smallSpacer} /> diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx index c1f498724..f0cd4f59a 100644 --- a/src/view/shell/desktop/RightNav.tsx +++ b/src/view/shell/desktop/RightNav.tsx @@ -1,22 +1,26 @@ import React from 'react' import {StyleSheet, View} from 'react-native' -import {usePalette} from 'lib/hooks/usePalette' -import {DesktopSearch} from './Search' -import {DesktopFeeds} from './Feeds' -import {Text} from 'view/com/util/text/Text' -import {TextLink} from 'view/com/util/Link' -import {FEEDBACK_FORM_URL, HELP_DESK_URL} from 'lib/constants' -import {s} from 'lib/styles' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {useLingui} from '@lingui/react' import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {useKawaiiMode} from '#/state/preferences/kawaii' import {useSession} from '#/state/session' +import {FEEDBACK_FORM_URL, HELP_DESK_URL} from 'lib/constants' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {s} from 'lib/styles' +import {TextLink} from 'view/com/util/Link' +import {Text} from 'view/com/util/text/Text' +import {DesktopFeeds} from './Feeds' +import {DesktopSearch} from './Search' export function DesktopRightNav({routeName}: {routeName: string}) { const pal = usePalette('default') const {_} = useLingui() const {hasSession, currentAccount} = useSession() + const kawaii = useKawaiiMode() + const {isTablet} = useWebMediaQueries() if (isTablet) { return null @@ -90,6 +94,17 @@ export function DesktopRightNav({routeName}: {routeName: string}) { text={_(msg`Help`)} /> </View> + {kawaii && ( + <Text type="md" style={[pal.textLight, {marginTop: 12}]}> + Logo by{' '} + <TextLink + type="md" + href="/profile/sawaratsuki.bsky.social" + text="@sawaratsuki.bsky.social" + style={pal.link} + /> + </Text> + )} </View> </View> </View> diff --git a/src/view/shell/desktop/Search.tsx b/src/view/shell/desktop/Search.tsx index 52f28cc63..3829a6c0b 100644 --- a/src/view/shell/desktop/Search.tsx +++ b/src/view/shell/desktop/Search.tsx @@ -21,8 +21,8 @@ import {makeProfileLink} from '#/lib/routes/links' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {s} from '#/lib/styles' +import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete' -import {useModerationOpts} from '#/state/queries/preferences' import {usePalette} from 'lib/hooks/usePalette' import {MagnifyingGlassIcon2} from 'lib/icons' import {NavigationProp} from 'lib/routes/types' @@ -31,10 +31,7 @@ import {Link} from '#/view/com/util/Link' import {UserAvatar} from '#/view/com/util/UserAvatar' import {Text} from 'view/com/util/text/Text' -export const MATCH_HANDLE = - /@?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,}))/ - -export function SearchLinkCard({ +let SearchLinkCard = ({ label, to, onPress, @@ -44,7 +41,7 @@ export function SearchLinkCard({ to?: string onPress?: () => void style?: ViewStyle -}) { +}): React.ReactNode => { const pal = usePalette('default') const inner = ( @@ -82,8 +79,10 @@ export function SearchLinkCard({ </Link> ) } +SearchLinkCard = React.memo(SearchLinkCard) +export {SearchLinkCard} -export function SearchProfileCard({ +let SearchProfileCard = ({ profile, moderation, onPress: onPressInner, @@ -91,7 +90,7 @@ export function SearchProfileCard({ profile: AppBskyActorDefs.ProfileViewBasic moderation: ModerationDecision onPress: () => void -}) { +}): React.ReactNode => { const pal = usePalette('default') const queryClient = useQueryClient() @@ -144,6 +143,8 @@ export function SearchProfileCard({ </Link> ) } +SearchProfileCard = React.memo(SearchProfileCard) +export {SearchProfileCard} export function DesktopSearch() { const {_} = useLingui() @@ -179,11 +180,6 @@ export function DesktopSearch() { setIsActive(false) }, []) - const queryMaybeHandle = React.useMemo(() => { - const match = MATCH_HANDLE.exec(query) - return match && match[1] - }, [query]) - return ( <View style={[styles.container, pal.view]}> <View @@ -239,19 +235,11 @@ export function DesktopSearch() { label={_(msg`Search for "${query}"`)} to={`/search?q=${encodeURIComponent(query)}`} style={ - queryMaybeHandle || (autocompleteData?.length ?? 0) > 0 + (autocompleteData?.length ?? 0) > 0 ? {borderBottomWidth: 1} : undefined } /> - - {queryMaybeHandle ? ( - <SearchLinkCard - label={_(msg`Go to @${queryMaybeHandle}`)} - to={`/profile/${queryMaybeHandle}`} - /> - ) : null} - {autocompleteData?.map(item => ( <SearchProfileCard key={item.did} |