An ATproto social media client -- with an independent Appview.
6
fork

Configure Feed

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

Merge branch 'main' of github.com:bluesky-social/social-app into main

+6 -13
+2 -2
README.md
··· 12 12 13 13 This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also on open source, but in [a different git repository](https://github.com/bluesky-social/atproto). 14 14 15 - There is a small about of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application. 15 + There is a small amount of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application. 16 16 17 - The [Build Instructions](./docs/builds.md) are a good place to get started with the app itself. 17 + The [Build Instructions](./docs/build.md) are a good place to get started with the app itself. 18 18 19 19 The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't *need* to understand AT Protocol to work with this application, but it can help. Learn more at: 20 20
+1 -1
src/state/models/media/image.ts
··· 166 166 async crop() { 167 167 try { 168 168 // NOTE 169 - // on ios, react-native-image-cropper gives really bad quality 169 + // on ios, react-native-image-crop-picker gives really bad quality 170 170 // without specifying width and height. on android, however, the 171 171 // crop stretches incorrectly if you do specify it. these are 172 172 // both separate bugs in the library. we deal with that by
+3 -10
src/view/com/lightbox/ImageViewing/index.tsx
··· 71 71 const imageList = useRef<VirtualizedList<ImageSource>>(null) 72 72 const [isScaled, setIsScaled] = useState(false) 73 73 const [isDragging, setIsDragging] = useState(false) 74 - const [opacity, setOpacity] = useState(1) 75 74 const [currentImageIndex, setImageIndex] = useState(imageIndex) 76 75 const [headerTranslate] = useState( 77 76 () => new Animated.ValueXY(INITIAL_POSITION), ··· 98 97 }), 99 98 ]).start() 100 99 } 101 - } 102 - 103 - const onRequestCloseEnhanced = () => { 104 - setOpacity(0) 105 - onRequestClose() 106 - setTimeout(() => setOpacity(1), 0) 107 100 } 108 101 109 102 const onScroll = (event: NativeSyntheticEvent<NativeScrollEvent>) => { ··· 162 155 aria-modal 163 156 accessibilityViewIsModal> 164 157 <ModalsContainer /> 165 - <View style={[styles.container, {opacity, backgroundColor}]}> 158 + <View style={[styles.container, {backgroundColor}]}> 166 159 <Animated.View style={[styles.header, {transform: headerTransform}]}> 167 160 {typeof HeaderComponent !== 'undefined' ? ( 168 161 React.createElement(HeaderComponent, { 169 162 imageIndex: currentImageIndex, 170 163 }) 171 164 ) : ( 172 - <ImageDefaultHeader onRequestClose={onRequestCloseEnhanced} /> 165 + <ImageDefaultHeader onRequestClose={onRequestClose} /> 173 166 )} 174 167 </Animated.View> 175 168 <VirtualizedList ··· 191 184 <ImageItem 192 185 onZoom={onZoom} 193 186 imageSrc={imageSrc} 194 - onRequestClose={onRequestCloseEnhanced} 187 + onRequestClose={onRequestClose} 195 188 pinchGestureRef={pinchGestureRefs.get(imageSrc)} 196 189 isScrollViewBeingDragged={isDragging} 197 190 />