Remove redundant component
parent
a2c89b47a1
commit
ed7293ea66
|
@ -1,66 +0,0 @@
|
||||||
import React, {useCallback} from 'react'
|
|
||||||
import {
|
|
||||||
View,
|
|
||||||
TouchableOpacity,
|
|
||||||
StyleSheet,
|
|
||||||
StyleProp,
|
|
||||||
ViewStyle,
|
|
||||||
} from 'react-native'
|
|
||||||
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
|
||||||
import {colors} from 'lib/styles'
|
|
||||||
import {observer} from 'mobx-react-lite'
|
|
||||||
import {CustomFeedModel} from 'state/models/feeds/custom-feed'
|
|
||||||
import {SavedFeedsModel} from 'state/models/ui/saved-feeds'
|
|
||||||
import {CustomFeed} from './CustomFeed'
|
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
|
||||||
|
|
||||||
export const SavedFeedItem = observer(
|
|
||||||
({
|
|
||||||
item,
|
|
||||||
savedFeeds,
|
|
||||||
showSaveBtn = false,
|
|
||||||
style,
|
|
||||||
}: {
|
|
||||||
item: CustomFeedModel
|
|
||||||
savedFeeds: SavedFeedsModel
|
|
||||||
showSaveBtn?: boolean
|
|
||||||
style?: StyleProp<ViewStyle>
|
|
||||||
}) => {
|
|
||||||
const pal = usePalette('default')
|
|
||||||
const isPinned = savedFeeds.isPinned(item)
|
|
||||||
const onTogglePinned = useCallback(
|
|
||||||
() => savedFeeds.togglePinnedFeed(item),
|
|
||||||
[savedFeeds, item],
|
|
||||||
)
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={[styles.itemContainer, style]}>
|
|
||||||
<CustomFeed
|
|
||||||
key={item.data.uri}
|
|
||||||
item={item}
|
|
||||||
showSaveBtn={showSaveBtn}
|
|
||||||
style={styles.noBorder}
|
|
||||||
/>
|
|
||||||
<TouchableOpacity accessibilityRole="button" onPress={onTogglePinned}>
|
|
||||||
<FontAwesomeIcon
|
|
||||||
icon="thumb-tack"
|
|
||||||
size={20}
|
|
||||||
color={isPinned ? colors.blue3 : pal.colors.icon}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
itemContainer: {
|
|
||||||
flex: 1,
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
marginRight: 18,
|
|
||||||
},
|
|
||||||
noBorder: {
|
|
||||||
borderTopWidth: 0,
|
|
||||||
},
|
|
||||||
})
|
|
|
@ -19,12 +19,12 @@ import {ViewHeader} from 'view/com/util/ViewHeader'
|
||||||
import {CenteredView} from 'view/com/util/Views'
|
import {CenteredView} from 'view/com/util/Views'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
import {Text} from 'view/com/util/text/Text'
|
||||||
import {isDesktopWeb, isWeb} from 'platform/detection'
|
import {isDesktopWeb, isWeb} from 'platform/detection'
|
||||||
import {s} from 'lib/styles'
|
import {s, colors} from 'lib/styles'
|
||||||
import DraggableFlatList, {
|
import DraggableFlatList, {
|
||||||
ShadowDecorator,
|
ShadowDecorator,
|
||||||
ScaleDecorator,
|
ScaleDecorator,
|
||||||
} from 'react-native-draggable-flatlist'
|
} from 'react-native-draggable-flatlist'
|
||||||
import {SavedFeedItem} from 'view/com/feeds/SavedFeedItem'
|
import {CustomFeed} from 'view/com/feeds/CustomFeed'
|
||||||
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
||||||
import {CustomFeedModel} from 'state/models/feeds/custom-feed'
|
import {CustomFeedModel} from 'state/models/feeds/custom-feed'
|
||||||
|
|
||||||
|
@ -106,6 +106,10 @@ const ListItem = observer(
|
||||||
const rootStore = useStores()
|
const rootStore = useStores()
|
||||||
const savedFeeds = useMemo(() => rootStore.me.savedFeeds, [rootStore])
|
const savedFeeds = useMemo(() => rootStore.me.savedFeeds, [rootStore])
|
||||||
const isPinned = savedFeeds.isPinned(item)
|
const isPinned = savedFeeds.isPinned(item)
|
||||||
|
const onTogglePinned = useCallback(
|
||||||
|
() => savedFeeds.togglePinnedFeed(item),
|
||||||
|
[savedFeeds, item],
|
||||||
|
)
|
||||||
return (
|
return (
|
||||||
<ScaleDecorator>
|
<ScaleDecorator>
|
||||||
<ShadowDecorator>
|
<ShadowDecorator>
|
||||||
|
@ -146,7 +150,21 @@ const ListItem = observer(
|
||||||
style={s.ml20}
|
style={s.ml20}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
<SavedFeedItem item={item} savedFeeds={savedFeeds} showSaveBtn />
|
<CustomFeed
|
||||||
|
key={item.data.uri}
|
||||||
|
item={item}
|
||||||
|
showSaveBtn
|
||||||
|
style={styles.noBorder}
|
||||||
|
/>
|
||||||
|
<TouchableOpacity
|
||||||
|
accessibilityRole="button"
|
||||||
|
onPress={onTogglePinned}>
|
||||||
|
<FontAwesomeIcon
|
||||||
|
icon="thumb-tack"
|
||||||
|
size={20}
|
||||||
|
color={isPinned ? colors.blue3 : pal.colors.icon}
|
||||||
|
/>
|
||||||
|
</TouchableOpacity>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
</ShadowDecorator>
|
</ShadowDecorator>
|
||||||
</ScaleDecorator>
|
</ScaleDecorator>
|
||||||
|
@ -170,10 +188,16 @@ const styles = StyleSheet.create({
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
borderTopWidth: 1,
|
borderTopWidth: 1,
|
||||||
|
paddingRight: 16,
|
||||||
},
|
},
|
||||||
webArrowButtonsContainer: {
|
webArrowButtonsContainer: {
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
justifyContent: 'space-around',
|
justifyContent: 'space-around',
|
||||||
},
|
},
|
||||||
webArrowUpButton: {marginBottom: 10},
|
webArrowUpButton: {
|
||||||
|
marginBottom: 10,
|
||||||
|
},
|
||||||
|
noBorder: {
|
||||||
|
borderTopWidth: 0,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue