Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix rebase issues

+24 -9
+3 -2
src/state/session/index.tsx
··· 1 1 import { 2 2 createContext, 3 + type PropsWithChildren, 3 4 useCallback, 4 5 useContext, 5 6 useEffect, ··· 111 112 } 112 113 } 113 114 114 - export function Provider({children}: React.PropsWithChildren<{}>) { 115 + export function Provider({children}: PropsWithChildren<{}>) { 115 116 const ax = useAnalyticsBase() 116 117 const cancelPendingTask = useOneTaskAtATime() 117 118 // eslint-disable-next-line react/hook-use-state ··· 317 318 }) 318 319 }, [store, state, cancelPendingTask]) 319 320 320 - const createEphemeralAgent = React.useCallback< 321 + const createEphemeralAgent = useCallback< 321 322 SessionApiContext['createEphemeralAgent'] 322 323 >( 323 324 async storedAccount => {
+18 -4
src/view/com/composer/Composer.tsx
··· 1 1 import { 2 2 Fragment, 3 3 memo, 4 + type MutableRefObject, 5 + type ReactNode, 6 + type Ref, 7 + type RefObject, 4 8 useCallback, 5 9 useEffect, 6 10 useImperativeHandle, ··· 207 211 logContext, 208 212 cancelRef, 209 213 }: Props & { 210 - cancelRef?: React.RefObject<CancelRef | null> 214 + cancelRef?: RefObject<CancelRef | null> 211 215 }) => { 212 216 const {currentAccount, accounts} = useSession() 213 217 const t = useTheme() ··· 351 355 texts: splitPosts, 352 356 }) 353 357 }, [activePost.id, activePost.richtext.text, composerDispatch]) 354 - 355 358 const selectVideo = useCallback( 356 359 (postId: string, asset: ImagePickerAsset) => { 357 360 const abortController = new AbortController() ··· 1184 1187 } 1185 1188 } 1186 1189 1190 + const onEmojiButtonPress = useCallback(() => { 1191 + const rect = textInputRef.current?.getCursorPosition() 1192 + if (rect) { 1193 + openEmojiPicker?.({ 1194 + ...rect, 1195 + nextFocusRef: textInputRef as unknown as MutableRefObject<HTMLElement>, 1196 + }) 1197 + } 1198 + }, [openEmojiPicker]) 1199 + 1200 + 1187 1201 const scrollViewRef = useAnimatedRef<Animated.ScrollView>() 1188 1202 useEffect(() => { 1189 1203 if (composerState.mutableNeedsFocusActive) { ··· 1701 1715 canSaveDraft: boolean 1702 1716 textLength: number 1703 1717 topBarAnimatedStyle: StyleProp<ViewStyle> 1704 - children?: React.ReactNode 1718 + children?: ReactNode 1705 1719 }) { 1706 1720 const t = useTheme() 1707 1721 const {t: l} = useLingui() ··· 2807 2821 children, 2808 2822 }: { 2809 2823 style: StyleProp<ViewStyle> 2810 - children: React.ReactNode 2824 + children: ReactNode 2811 2825 }) { 2812 2826 if (IS_WEB) return children 2813 2827 return (
+3 -3
src/view/shell/desktop/LeftNav.tsx
··· 1 - import {type JSX, useCallback, useMemo, useState} from 'react' 1 + import {type JSX, type MouseEvent, useCallback, useMemo, useState} from 'react' 2 2 import {StyleSheet, View} from 'react-native' 3 3 import {type AppBskyActorDefs} from '@atproto/api' 4 4 import {msg, plural} from '@lingui/core/macro' ··· 310 310 currentAccount?.handle 311 311 : isTab(currentRouteInfo.name, pathName) 312 312 const onProfilePress = useCallback( 313 - (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => { 313 + (e: MouseEvent<HTMLAnchorElement>) => { 314 314 if (e.ctrlKey || e.metaKey || e.altKey) { 315 315 return 316 316 } ··· 420 420 : isTab(currentRouteInfo.name, pathName) 421 421 const navigation = useNavigation<NavigationProp>() 422 422 const onPressWrapped = useCallback( 423 - (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => { 423 + (e: MouseEvent<HTMLAnchorElement>) => { 424 424 if (e.ctrlKey || e.metaKey || e.altKey) { 425 425 return 426 426 }