Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client
122
fork

Configure Feed

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

Refer to upvotes as 'likes' in the UI (will change in the protocol soon)

+69 -21
+6 -6
src/view/com/notifications/FeedItem.tsx
··· 8 8 import {PostThreadViewModel} from '../../../state/models/post-thread-view' 9 9 import {s, colors} from '../../lib/styles' 10 10 import {ago, pluralize} from '../../../lib/strings' 11 - import {UpIconSolid} from '../../lib/icons' 11 + import {HeartIconSolid} from '../../lib/icons' 12 12 import {Text} from '../util/text/Text' 13 13 import {UserAvatar} from '../util/UserAvatar' 14 14 import {ImageHorzList} from '../util/images/ImageHorzList' ··· 72 72 } 73 73 74 74 let action = '' 75 - let icon: Props['icon'] | 'UpIconSolid' 75 + let icon: Props['icon'] | 'HeartIconSolid' 76 76 let iconStyle: Props['style'] = [] 77 77 if (item.isUpvote) { 78 - action = 'upvoted your post' 79 - icon = 'UpIconSolid' 78 + action = 'liked your post' 79 + icon = 'HeartIconSolid' 80 80 iconStyle = [s.red3, {position: 'relative', top: -4}] 81 81 } else if (item.isRepost) { 82 82 action = 'reposted your post' ··· 132 132 noFeedback> 133 133 <View style={styles.layout}> 134 134 <View style={styles.layoutIcon}> 135 - {icon === 'UpIconSolid' ? ( 136 - <UpIconSolid size={26} style={[styles.icon, ...iconStyle]} /> 135 + {icon === 'HeartIconSolid' ? ( 136 + <HeartIconSolid size={26} style={[styles.icon, ...iconStyle]} /> 137 137 ) : ( 138 138 <FontAwesomeIcon 139 139 icon={icon}
+2 -2
src/view/com/post-thread/PostThreadItem.tsx
··· 47 47 const urip = new AtUri(item.post.uri) 48 48 return `/profile/${item.post.author.handle}/post/${urip.rkey}/upvoted-by` 49 49 }, [item.post.uri, item.post.author.handle]) 50 - const upvotesTitle = 'Upvotes on this post' 50 + const upvotesTitle = 'Likes on this post' 51 51 const repostsHref = useMemo(() => { 52 52 const urip = new AtUri(item.post.uri) 53 53 return `/profile/${item.post.author.handle}/post/${urip.rkey}/reposted-by` ··· 209 209 <Text type="h5" style={pal.text}> 210 210 {item.post.upvoteCount} 211 211 </Text>{' '} 212 - {pluralize(item.post.upvoteCount, 'upvote')} 212 + {pluralize(item.post.upvoteCount, 'like')} 213 213 </Text> 214 214 </Link> 215 215 ) : (
+2 -2
src/view/com/util/LoadingPlaceholder.tsx
··· 1 1 import React from 'react' 2 2 import {StyleSheet, StyleProp, View, ViewStyle} from 'react-native' 3 3 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 4 - import {UpIcon} from '../../lib/icons' 4 + import {HeartIcon} from '../../lib/icons' 5 5 import {s} from '../../lib/styles' 6 6 import {useTheme} from '../../lib/ThemeContext' 7 7 import {usePalette} from '../../lib/hooks/usePalette' ··· 70 70 /> 71 71 </View> 72 72 <View style={s.flex1}> 73 - <UpIcon 73 + <HeartIcon 74 74 style={{color: theme.palette.default.icon}} 75 75 size={17} 76 76 strokeWidth={1.7}
+14 -8
src/view/com/util/PostCtrls.tsx
··· 11 11 import ReactNativeHapticFeedback from 'react-native-haptic-feedback' 12 12 import {Text} from './text/Text' 13 13 import {PostDropdownBtn} from './forms/DropdownButton' 14 - import {UpIcon, UpIconSolid, CommentBottomArrow} from '../../lib/icons' 14 + import {HeartIcon, HeartIconSolid, CommentBottomArrow} from '../../lib/icons' 15 15 import {s, colors} from '../../lib/styles' 16 16 import {useTheme} from '../../lib/ThemeContext' 17 17 import {useAnimatedValue} from '../../lib/hooks/useAnimatedValue' ··· 123 123 hitSlop={HITSLOP} 124 124 onPress={opts.onPressReply}> 125 125 <CommentBottomArrow 126 - style={defaultCtrlColor} 126 + style={[ 127 + defaultCtrlColor, 128 + opts.big ? {marginTop: 2} : {marginTop: 1}, 129 + ]} 127 130 strokeWidth={3} 128 131 size={opts.big ? 20 : 15} 129 132 /> ··· 167 170 onPress={onPressToggleUpvoteWrapper}> 168 171 <Animated.View style={anim2Style}> 169 172 {opts.isUpvoted ? ( 170 - <UpIconSolid 173 + <HeartIconSolid 171 174 style={[styles.ctrlIconUpvoted]} 172 - size={opts.big ? 22 : 19} 175 + size={opts.big ? 22 : 16} 173 176 /> 174 177 ) : ( 175 - <UpIcon 176 - style={defaultCtrlColor} 177 - size={opts.big ? 22 : 19} 178 - strokeWidth={1.5} 178 + <HeartIcon 179 + style={[ 180 + defaultCtrlColor, 181 + opts.big ? {marginTop: 1} : undefined, 182 + ]} 183 + strokeWidth={3} 184 + size={opts.big ? 20 : 16} 179 185 /> 180 186 )} 181 187 </Animated.View>
+42
src/view/lib/icons.tsx
··· 225 225 ) 226 226 } 227 227 228 + // Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. 229 + export function HeartIcon({ 230 + style, 231 + size = 24, 232 + strokeWidth = 1.5, 233 + }: { 234 + style?: StyleProp<ViewStyle> 235 + size?: string | number 236 + strokeWidth: number 237 + }) { 238 + return ( 239 + <Svg viewBox="0 0 24 24" width={size} height={size} style={style}> 240 + <Path 241 + strokeWidth={strokeWidth} 242 + stroke="currentColor" 243 + fill="none" 244 + d="M 3.859 13.537 L 10.918 20.127 C 11.211 20.4 11.598 20.552 12 20.552 C 12.402 20.552 12.789 20.4 13.082 20.127 L 20.141 13.537 C 21.328 12.431 22 10.88 22 9.259 L 22 9.033 C 22 6.302 20.027 3.974 17.336 3.525 C 15.555 3.228 13.742 3.81 12.469 5.084 L 12 5.552 L 11.531 5.084 C 10.258 3.81 8.445 3.228 6.664 3.525 C 3.973 3.974 2 6.302 2 9.033 L 2 9.259 C 2 10.88 2.672 12.431 3.859 13.537 Z" 245 + /> 246 + </Svg> 247 + ) 248 + } 249 + 250 + // Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. 251 + export function HeartIconSolid({ 252 + style, 253 + size = 24, 254 + }: { 255 + style?: StyleProp<ViewStyle> 256 + size?: string | number 257 + }) { 258 + return ( 259 + <Svg viewBox="0 0 24 24" width={size} height={size} style={style}> 260 + <Path 261 + fill="currentColor" 262 + stroke="currentColor" 263 + strokeWidth={1} 264 + d="M 3.859 13.537 L 10.918 20.127 C 11.211 20.4 11.598 20.552 12 20.552 C 12.402 20.552 12.789 20.4 13.082 20.127 L 20.141 13.537 C 21.328 12.431 22 10.88 22 9.259 L 22 9.033 C 22 6.302 20.027 3.974 17.336 3.525 C 15.555 3.228 13.742 3.81 12.469 5.084 L 12 5.552 L 11.531 5.084 C 10.258 3.81 8.445 3.228 6.664 3.525 C 3.973 3.974 2 6.302 2 9.033 L 2 9.259 C 2 10.88 2.672 12.431 3.859 13.537 Z" 265 + /> 266 + </Svg> 267 + ) 268 + } 269 + 228 270 export function UpIcon({ 229 271 style, 230 272 size,
+1 -1
src/view/routes.ts
··· 55 55 ], 56 56 [ 57 57 PostUpvotedBy, 58 - 'Upvoted by', 58 + 'Liked by', 59 59 'heart', 60 60 r('/profile/(?<name>[^/]+)/post/(?<rkey>[^/]+)/upvoted-by'), 61 61 ],
+2 -2
src/view/screens/PostUpvotedBy.tsx
··· 13 13 14 14 useEffect(() => { 15 15 if (visible) { 16 - store.nav.setTitle(navIdx, 'Upvoted by') 16 + store.nav.setTitle(navIdx, 'Liked by') 17 17 } 18 18 }, [store, visible]) 19 19 20 20 return ( 21 21 <View> 22 - <ViewHeader title="Upvoted by" /> 22 + <ViewHeader title="Liked by" /> 23 23 <PostLikedByComponent uri={uri} direction="up" /> 24 24 </View> 25 25 )