* Fix web home feed sizing (close #432) * Fix lint * Fix positioning of profile not found error * Fix load latest on mobile * Fix overflow issues on mobile web (visible in postthread) * Fix bottom pad on mobile web * Remove old comment
This commit is contained in:
		
							parent
							
								
									a79dcd3d38
								
							
						
					
					
						commit
						91fadadb58
					
				
					 10 changed files with 109 additions and 24 deletions
				
			
		
							
								
								
									
										1
									
								
								src/view/com/util/load-latest/LoadLatestBtn.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/view/com/util/load-latest/LoadLatestBtn.tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| export * from './LoadLatestBtnMobile' | ||||
							
								
								
									
										58
									
								
								src/view/com/util/load-latest/LoadLatestBtn.web.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/view/com/util/load-latest/LoadLatestBtn.web.tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | |||
| import React from 'react' | ||||
| import {StyleSheet, TouchableOpacity} from 'react-native' | ||||
| import {Text} from '../text/Text' | ||||
| import {usePalette} from 'lib/hooks/usePalette' | ||||
| import {UpIcon} from 'lib/icons' | ||||
| import {LoadLatestBtn as LoadLatestBtnMobile} from './LoadLatestBtnMobile' | ||||
| import {isMobileWeb} from 'platform/detection' | ||||
| 
 | ||||
| const HITSLOP = {left: 20, top: 20, right: 20, bottom: 20} | ||||
| 
 | ||||
| export const LoadLatestBtn = ({ | ||||
|   onPress, | ||||
|   label, | ||||
| }: { | ||||
|   onPress: () => void | ||||
|   label: string | ||||
| }) => { | ||||
|   const pal = usePalette('default') | ||||
|   if (isMobileWeb) { | ||||
|     return <LoadLatestBtnMobile onPress={onPress} label={label} /> | ||||
|   } | ||||
|   return ( | ||||
|     <TouchableOpacity | ||||
|       style={[pal.view, pal.borderDark, styles.loadLatest]} | ||||
|       onPress={onPress} | ||||
|       hitSlop={HITSLOP}> | ||||
|       <Text type="md-bold" style={pal.text}> | ||||
|         <UpIcon size={16} strokeWidth={1} style={[pal.text, styles.icon]} /> | ||||
|         Load new {label} | ||||
|       </Text> | ||||
|     </TouchableOpacity> | ||||
|   ) | ||||
| } | ||||
| 
 | ||||
| const styles = StyleSheet.create({ | ||||
|   loadLatest: { | ||||
|     flexDirection: 'row', | ||||
|     position: 'absolute', | ||||
|     left: '50vw', | ||||
|     // @ts-ignore web only -prf
 | ||||
|     transform: 'translateX(-50%)', | ||||
|     top: 30, | ||||
|     shadowColor: '#000', | ||||
|     shadowOpacity: 0.2, | ||||
|     shadowOffset: {width: 0, height: 2}, | ||||
|     shadowRadius: 4, | ||||
|     paddingLeft: 20, | ||||
|     paddingRight: 24, | ||||
|     paddingVertical: 10, | ||||
|     borderRadius: 30, | ||||
|     borderWidth: 1, | ||||
|   }, | ||||
|   icon: { | ||||
|     position: 'relative', | ||||
|     top: 2, | ||||
|     marginRight: 5, | ||||
|   }, | ||||
| }) | ||||
							
								
								
									
										59
									
								
								src/view/com/util/load-latest/LoadLatestBtnMobile.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								src/view/com/util/load-latest/LoadLatestBtnMobile.tsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| import React from 'react' | ||||
| import {StyleSheet, TouchableOpacity} from 'react-native' | ||||
| import {observer} from 'mobx-react-lite' | ||||
| import LinearGradient from 'react-native-linear-gradient' | ||||
| import {useSafeAreaInsets} from 'react-native-safe-area-context' | ||||
| import {Text} from '../text/Text' | ||||
| import {colors, gradients} from 'lib/styles' | ||||
| import {clamp} from 'lodash' | ||||
| import {useStores} from 'state/index' | ||||
| 
 | ||||
| const HITSLOP = {left: 20, top: 20, right: 20, bottom: 20} | ||||
| 
 | ||||
| export const LoadLatestBtn = observer( | ||||
|   ({onPress, label}: {onPress: () => void; label: string}) => { | ||||
|     const store = useStores() | ||||
|     const safeAreaInsets = useSafeAreaInsets() | ||||
|     return ( | ||||
|       <TouchableOpacity | ||||
|         style={[ | ||||
|           styles.loadLatest, | ||||
|           !store.shell.minimalShellMode && { | ||||
|             bottom: 60 + clamp(safeAreaInsets.bottom, 15, 30), | ||||
|           }, | ||||
|         ]} | ||||
|         onPress={onPress} | ||||
|         hitSlop={HITSLOP}> | ||||
|         <LinearGradient | ||||
|           colors={[gradients.blueLight.start, gradients.blueLight.end]} | ||||
|           start={{x: 0, y: 0}} | ||||
|           end={{x: 1, y: 1}} | ||||
|           style={styles.loadLatestInner}> | ||||
|           <Text type="md-bold" style={styles.loadLatestText}> | ||||
|             Load new {label} | ||||
|           </Text> | ||||
|         </LinearGradient> | ||||
|       </TouchableOpacity> | ||||
|     ) | ||||
|   }, | ||||
| ) | ||||
| 
 | ||||
| const styles = StyleSheet.create({ | ||||
|   loadLatest: { | ||||
|     position: 'absolute', | ||||
|     left: 20, | ||||
|     bottom: 35, | ||||
|     shadowColor: '#000', | ||||
|     shadowOpacity: 0.3, | ||||
|     shadowOffset: {width: 0, height: 1}, | ||||
|   }, | ||||
|   loadLatestInner: { | ||||
|     flexDirection: 'row', | ||||
|     paddingHorizontal: 14, | ||||
|     paddingVertical: 10, | ||||
|     borderRadius: 30, | ||||
|   }, | ||||
|   loadLatestText: { | ||||
|     color: colors.white, | ||||
|   }, | ||||
| }) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue