diff options
author | Logan Rosen <loganrosen@gmail.com> | 2023-06-22 12:40:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-22 12:40:32 -0400 |
commit | 9b19a95e638b2a5379560b5ffb27c423ad9a2e4e (patch) | |
tree | 90f35e751116815beffd587901415a9a94ca7eb7 /src | |
parent | 180697b66b038459236a023c712709651cba48c1 (diff) | |
download | voidsky-9b19a95e638b2a5379560b5ffb27c423ad9a2e4e.tar.zst |
Bump @types/react to ^18 and adjust types (#889)
Diffstat (limited to 'src')
-rw-r--r-- | src/Navigation.tsx | 13 | ||||
-rw-r--r-- | src/lib/ThemeContext.tsx | 3 | ||||
-rw-r--r-- | src/state/models/feeds/posts.ts | 26 | ||||
-rw-r--r-- | src/view/com/composer/Composer.tsx | 4 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThreadItem.tsx | 4 | ||||
-rw-r--r-- | src/view/com/post/Post.tsx | 3 | ||||
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 4 | ||||
-rw-r--r-- | src/view/com/profile/ProfileCard.tsx | 2 | ||||
-rw-r--r-- | src/view/com/util/ViewSelector.tsx | 2 | ||||
-rw-r--r-- | src/view/com/util/forms/Button.tsx | 11 | ||||
-rw-r--r-- | src/view/screens/DiscoverFeeds.tsx | 3 | ||||
-rw-r--r-- | src/view/screens/SavedFeeds.tsx | 2 |
12 files changed, 55 insertions, 22 deletions
diff --git a/src/Navigation.tsx b/src/Navigation.tsx index 77e7cfa0b..640b771d4 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -10,7 +10,10 @@ import { DarkTheme, } from '@react-navigation/native' import {createNativeStackNavigator} from '@react-navigation/native-stack' -import {createBottomTabNavigator} from '@react-navigation/bottom-tabs' +import { + BottomTabBarProps, + createBottomTabNavigator, +} from '@react-navigation/bottom-tabs' import { HomeTabNavigatorParams, SearchTabNavigatorParams, @@ -62,6 +65,7 @@ import {ModerationBlockedAccounts} from 'view/screens/ModerationBlockedAccounts' import {SavedFeeds} from 'view/screens/SavedFeeds' import {getRoutingInstrumentation} from 'lib/sentry' import {bskyTitle} from 'lib/strings/headings' +import {JSX} from 'react/jsx-runtime' const navigationRef = createNavigationContainerRef<AllNavigatorParams>() @@ -220,7 +224,12 @@ function commonScreens(Stack: typeof HomeTab, unreadCountLabel?: string) { * in 3 distinct tab-stacks with a different root screen on each. */ function TabsNavigator() { - const tabBar = React.useCallback(props => <BottomBar {...props} />, []) + const tabBar = React.useCallback( + (props: JSX.IntrinsicAttributes & BottomTabBarProps) => ( + <BottomBar {...props} /> + ), + [], + ) return ( <Tab.Navigator initialRouteName="HomeTab" diff --git a/src/lib/ThemeContext.tsx b/src/lib/ThemeContext.tsx index e68ba5246..2f2f268da 100644 --- a/src/lib/ThemeContext.tsx +++ b/src/lib/ThemeContext.tsx @@ -1,4 +1,4 @@ -import React, {createContext, useContext, useMemo} from 'react' +import React, {ReactNode, createContext, useContext, useMemo} from 'react' import {TextStyle, useColorScheme, ViewStyle} from 'react-native' import {darkTheme, defaultTheme} from './themes' @@ -78,6 +78,7 @@ export interface Theme { } export interface ThemeProviderProps { + children?: ReactNode theme?: 'light' | 'dark' | 'system' } diff --git a/src/state/models/feeds/posts.ts b/src/state/models/feeds/posts.ts index 594143bf2..2c6f89c35 100644 --- a/src/state/models/feeds/posts.ts +++ b/src/state/models/feeds/posts.ts @@ -130,13 +130,25 @@ export class PostsFeedModel { ] } if (this.feedType === 'home') { - return [ - areRepostsEnabled && FeedTuner.dedupReposts, - !areRepostsEnabled && FeedTuner.removeReposts, - areRepliesEnabled && FeedTuner.likedRepliesOnly({repliesThreshold}), - !areRepliesEnabled && FeedTuner.removeReplies, - !areQuotePostsEnabled && FeedTuner.removeQuotePosts, - ].filter(Boolean) + const feedTuners = [] + + if (areRepostsEnabled) { + feedTuners.push(FeedTuner.dedupReposts) + } else { + feedTuners.push(FeedTuner.removeReposts) + } + + if (areRepliesEnabled) { + feedTuners.push(FeedTuner.likedRepliesOnly({repliesThreshold})) + } else { + feedTuners.push(FeedTuner.removeReplies) + } + + if (!areQuotePostsEnabled) { + feedTuners.push(FeedTuner.removeQuotePosts) + } + + return feedTuners } return [] } diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index 37569fbec..f88cf4bf0 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -133,8 +133,8 @@ export const ComposePost = observer(function ComposePost({ ) const onPressPublish = useCallback( - async rt => { - if (isProcessing || rt.graphemeLength_ > MAX_GRAPHEME_LENGTH) { + async (rt: RichText) => { + if (isProcessing || rt.graphemeLength > MAX_GRAPHEME_LENGTH) { return } diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index 8ccdfdb06..647468401 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -1,6 +1,6 @@ import React, {useCallback, useMemo} from 'react' import {observer} from 'mobx-react-lite' -import {Linking, StyleSheet, View} from 'react-native' +import {AccessibilityActionEvent, Linking, StyleSheet, View} from 'react-native' import Clipboard from '@react-native-clipboard/clipboard' import {AtUri} from '@atproto/api' import { @@ -152,7 +152,7 @@ export const PostThreadItem = observer(function PostThreadItem({ ) const onAccessibilityAction = useCallback( - event => { + (event: AccessibilityActionEvent) => { switch (event.nativeEvent.actionName) { case 'like': onPressToggleLike() diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index d37c43a3d..b9d146dee 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -1,5 +1,6 @@ import React, {useCallback, useEffect, useMemo, useState} from 'react' import { + AccessibilityActionEvent, ActivityIndicator, Linking, StyleProp, @@ -223,7 +224,7 @@ const PostLoaded = observer( ) const onAccessibilityAction = useCallback( - event => { + (event: AccessibilityActionEvent) => { switch (event.nativeEvent.actionName) { case 'like': onPressToggleLike() diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 18c32b899..d83e64073 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -1,6 +1,6 @@ import React, {useCallback, useMemo, useState} from 'react' import {observer} from 'mobx-react-lite' -import {Linking, StyleSheet, View} from 'react-native' +import {AccessibilityActionEvent, Linking, StyleSheet, View} from 'react-native' import Clipboard from '@react-native-clipboard/clipboard' import {AtUri} from '@atproto/api' import { @@ -173,7 +173,7 @@ export const FeedItem = observer(function ({ ) const onAccessibilityAction = useCallback( - event => { + (event: AccessibilityActionEvent) => { switch (event.nativeEvent.actionName) { case 'like': onPressToggleLike() diff --git a/src/view/com/profile/ProfileCard.tsx b/src/view/com/profile/ProfileCard.tsx index 50b9f199c..2dfc7ad30 100644 --- a/src/view/com/profile/ProfileCard.tsx +++ b/src/view/com/profile/ProfileCard.tsx @@ -100,7 +100,7 @@ export const ProfileCard = observer( {profile.description ? ( <View style={styles.details}> <Text style={pal.text} numberOfLines={4}> - {profile.description} + {profile.description as string} </Text> </View> ) : undefined} diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index 705178a8a..e2f47ba89 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -59,7 +59,7 @@ export const ViewSelector = React.forwardRef< // events // = - const keyExtractor = React.useCallback(item => item._reactKey, []) + const keyExtractor = React.useCallback((item: any) => item._reactKey, []) const onPressSelection = React.useCallback( (index: number) => setSelectedIndex(clamp(index, 0, sections.length)), diff --git a/src/view/com/util/forms/Button.tsx b/src/view/com/util/forms/Button.tsx index 6a5f19f99..8049d2243 100644 --- a/src/view/com/util/forms/Button.tsx +++ b/src/view/com/util/forms/Button.tsx @@ -6,6 +6,7 @@ import { TextStyle, Pressable, ViewStyle, + PressableStateCallbackType, } from 'react-native' import {Text} from '../text/Text' import {useTheme} from 'lib/ThemeContext' @@ -26,6 +27,14 @@ export type ButtonType = | 'secondary-light' | 'default-light' +// Augment type for react-native-web (see https://github.com/necolas/react-native-web/issues/1684#issuecomment-766451866) +declare module 'react-native' { + interface PressableStateCallbackType { + hovered?: boolean + focused?: boolean + } +} + // TODO: Enforce that button always has a label export function Button({ type = 'primary', @@ -139,7 +148,7 @@ export function Button({ ) const getStyle = React.useCallback( - state => { + (state: PressableStateCallbackType) => { const arr = [typeOuterStyle, styles.outer, style] if (state.pressed) { arr.push({opacity: 0.6}) diff --git a/src/view/screens/DiscoverFeeds.tsx b/src/view/screens/DiscoverFeeds.tsx index 98f164a61..6b0f6b7fe 100644 --- a/src/view/screens/DiscoverFeeds.tsx +++ b/src/view/screens/DiscoverFeeds.tsx @@ -13,6 +13,7 @@ import {Text} from 'view/com/util/text/Text' import {isDesktopWeb} from 'platform/detection' import {usePalette} from 'lib/hooks/usePalette' import {s} from 'lib/styles' +import {CustomFeedModel} from 'state/models/feeds/custom-feed' type Props = NativeStackScreenProps<CommonNavigatorParams, 'DiscoverFeeds'> export const DiscoverFeedsScreen = withAuthRequired( @@ -51,7 +52,7 @@ export const DiscoverFeedsScreen = withAuthRequired( }, [pal, feeds.isLoading]) const renderItem = React.useCallback( - ({item}) => ( + ({item}: {item: CustomFeedModel}) => ( <CustomFeed key={item.data.uri} item={item} diff --git a/src/view/screens/SavedFeeds.tsx b/src/view/screens/SavedFeeds.tsx index ac38a760b..0b9e55e0c 100644 --- a/src/view/screens/SavedFeeds.tsx +++ b/src/view/screens/SavedFeeds.tsx @@ -100,7 +100,7 @@ export const SavedFeeds = withAuthRequired( const onRefresh = useCallback(() => savedFeeds.refresh(), [savedFeeds]) const onDragEnd = useCallback( - async ({data}) => { + async ({data}: {data: CustomFeedModel[]}) => { try { await savedFeeds.reorderPinnedFeeds(data) } catch (e) { |