1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import React from 'react';
import {View, Text, StyleSheet, ViewProps} from 'react-native';
import {TouchableOpacity} from 'react-native-gesture-handler';
import {useNavigation} from '@react-navigation/native';
interface FollowCountProps extends ViewProps {
mode: 'followers' | 'following';
count: number;
isProfileView: boolean;
}
const FollowCount: React.FC<FollowCountProps> = ({
style,
mode,
count,
isProfileView,
}) => {
const navigation = useNavigation();
const displayed: string =
count < 5e3
? `${count}`
: count < 1e5
? `${(count / 1e3).toFixed(1)}k`
: count < 1e6
? `${(count / 1e3).toFixed(0)}k`
: `${count / 1e6}m`;
return (
<TouchableOpacity
onPress={() =>
navigation.push('FollowersListScreen', {
isProfileView: isProfileView,
isFollowers: mode === 'followers',
})
}>
<View style={[styles.container, style]}>
<Text style={styles.count}>{displayed}</Text>
<Text style={styles.label}>
{mode === 'followers' ? 'Followers' : 'Following'}
</Text>
</View>
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
container: {
alignItems: 'center',
},
count: {
fontWeight: '700',
fontSize: 18,
},
label: {
fontWeight: '400',
fontSize: 16,
},
});
export default FollowCount;
|