* add testing lib * remove coverage folder from git * finished basic test setup * fix tests typescript and import paths * add first snapshot * testing utils * rename test files; update script flags; ++tests * testing utils functions * testing downloadAndResize wip * remove download test * specify unwanted coverage paths; remove update snapshots flag * fix strings tests * testing downloadAndResize method * increasing testing * fixing snapshots wip * fixed shell mobile snapshot * adding snapshots for the screens * fix onboard snapshot * fix typescript issues * fix TabsSelector snapshot * Account for testing device's locale in ago() tests * Remove platform detection on regex * mocking store state wip * mocking store state * increasing test coverage * increasing test coverage * increasing test coverage on src/screens * src/screens (except for profile) above 80% cov * testing profile screen wip * increase coverage on Menu and TabsSelector * mocking profile ui state wip * mocking profile ui state wip * fixing mobileshell tests wip * snapshots using testing-library * fixing profile tests wip * removing mobile shell tests * src/view/com tests wip * remove unnecessary patch-package * fixed profile test error * clear mocks after every test * fix base mocked store values (getters) * fix base mocked store values (hasLoaded, nonReplyFeed) * profile screen above 80% coverage * testing custom hooks * improving composer coverage * fix tests after merge * finishing composer coverage * improving src/com/discover coverage * improve src/view/com/login coverage fix SuggestedFollows tests adding some comments * fix SuggestedFollows tests * improve src/view/com/profile coverage extra minor fixes * improve src/view/com/notifications coverage * update coverage ignore patterns * rename errorMessageTryAgainButton increase SuggestedFollows converage * improve src/view/com/posts coverage * improve src/view/com/onboard coverage * update snapshot * improve src/view/com/post coverage * improve src/view/com/post-thread coverage rename ErrorMessage tests test Debug and Log components * init testing state * testing root-store * updating comments * small fixes * removed extra console logs * improve src/state/models coverage refactor rootStore rename some spies * adding cleanup method after tests * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * test setInterval in setupState * Clean up tests and update Home screen state management * Remove some tests we dont need * Remove snapshot tests * Remove any tests that dont demonstrate clear value * Cleanup Co-authored-by: Paul Frazee <pfrazee@gmail.com>
92 lines
2.2 KiB
TypeScript
92 lines
2.2 KiB
TypeScript
import React, {useCallback} from 'react'
|
|
import {Image, StyleSheet, TouchableOpacity, View} from 'react-native'
|
|
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
|
import {colors} from '../../lib/styles'
|
|
|
|
export const SelectedPhoto = ({
|
|
selectedPhotos,
|
|
onSelectPhotos,
|
|
}: {
|
|
selectedPhotos: string[]
|
|
onSelectPhotos: (v: string[]) => void
|
|
}) => {
|
|
const imageStyle =
|
|
selectedPhotos.length === 1
|
|
? styles.image250
|
|
: selectedPhotos.length === 2
|
|
? styles.image175
|
|
: styles.image85
|
|
|
|
const handleRemovePhoto = useCallback(
|
|
item => {
|
|
onSelectPhotos(selectedPhotos.filter(filterItem => filterItem !== item))
|
|
},
|
|
[selectedPhotos, onSelectPhotos],
|
|
)
|
|
|
|
return selectedPhotos.length !== 0 ? (
|
|
<View testID="selectedPhotosView" style={styles.imageContainer}>
|
|
{selectedPhotos.length !== 0 &&
|
|
selectedPhotos.map((item, index) => (
|
|
<View
|
|
key={`selected-image-${index}`}
|
|
style={[styles.image, imageStyle]}>
|
|
<TouchableOpacity
|
|
testID="removePhotoButton"
|
|
onPress={() => handleRemovePhoto(item)}
|
|
style={styles.removePhotoButton}>
|
|
<FontAwesomeIcon
|
|
icon="xmark"
|
|
size={16}
|
|
style={{color: colors.white}}
|
|
/>
|
|
</TouchableOpacity>
|
|
|
|
<Image
|
|
testID="selectedPhotoImage"
|
|
style={[styles.image, imageStyle]}
|
|
source={{uri: item}}
|
|
/>
|
|
</View>
|
|
))}
|
|
</View>
|
|
) : null
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
imageContainer: {
|
|
flex: 1,
|
|
flexDirection: 'row',
|
|
marginTop: 16,
|
|
},
|
|
image: {
|
|
resizeMode: 'contain',
|
|
borderRadius: 8,
|
|
margin: 2,
|
|
backgroundColor: colors.gray1,
|
|
},
|
|
image250: {
|
|
width: 250,
|
|
height: 250,
|
|
},
|
|
image175: {
|
|
width: 175,
|
|
height: 175,
|
|
},
|
|
image85: {
|
|
width: 85,
|
|
height: 85,
|
|
},
|
|
removePhotoButton: {
|
|
position: 'absolute',
|
|
top: 8,
|
|
right: 8,
|
|
width: 24,
|
|
height: 24,
|
|
borderRadius: 12,
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
backgroundColor: colors.black,
|
|
zIndex: 1,
|
|
},
|
|
})
|