-
Notifications
You must be signed in to change notification settings - Fork 376
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: new member ui, member list in conversation settings
Signed-off-by: clegirar <clemntgirard@gmail.com>
- Loading branch information
Showing
14 changed files
with
368 additions
and
34 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
js/packages/assets/custom-icons/transport-icons/transport-wifi.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
js/packages/components/dropdowns/members/AddConversationBoosterButton.priv.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import { Icon } from '@ui-kitten/components' | ||
import React from 'react' | ||
import { StyleSheet, TouchableOpacity, View } from 'react-native' | ||
|
||
import { UnifiedText } from '@berty/components/shared-components/UnifiedText' | ||
import { useStyles } from '@berty/contexts/styles' | ||
import { useThemeColor } from '@berty/hooks' | ||
|
||
import { MemberTransport } from './MemberTransport.priv' | ||
|
||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
export const AddConversationBoosterButton: React.FC = () => { | ||
const colors = useThemeColor() | ||
const { padding, margin } = useStyles() | ||
return ( | ||
<TouchableOpacity style={[padding.medium, styles.container]}> | ||
<View style={[styles.content]}> | ||
<MemberTransport memberStatus='connected' memberTransport='node' /> | ||
<UnifiedText style={[margin.left.medium]}>Add a conversation booster</UnifiedText> | ||
</View> | ||
<Icon name='arrow-ios-forward' width={20} height={20} fill={colors['main-text']} /> | ||
</TouchableOpacity> | ||
) | ||
} | ||
|
||
const styles = StyleSheet.create({ | ||
container: { | ||
flex: 1, | ||
flexDirection: 'row', | ||
justifyContent: 'space-between', | ||
alignItems: 'center', | ||
}, | ||
content: { | ||
flexDirection: 'row', | ||
alignItems: 'center', | ||
}, | ||
}) |
67 changes: 67 additions & 0 deletions
67
js/packages/components/dropdowns/members/MemberAvatarWithStatus.priv.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import React from 'react' | ||
import { View, StyleSheet } from 'react-native' | ||
|
||
import { MemberAvatar } from '@berty/components/avatars' | ||
import { Maybe } from '@berty/utils/type/maybe' | ||
|
||
import { IMemberStatus } from './interfaces' | ||
|
||
interface MemberAvatarWithStatusProps extends IMemberStatus { | ||
publicKey: Maybe<string> | ||
convPK: Maybe<string> | ||
} | ||
|
||
const MemberStatus: React.FC<IMemberStatus> = ({ memberStatus }) => { | ||
let backgroundColor | ||
switch (memberStatus) { | ||
case 'connected': | ||
backgroundColor = '#4CD31D' | ||
break | ||
case 'reconnecting': | ||
backgroundColor = '#FF9900' | ||
break | ||
case 'disconnected': | ||
backgroundColor = '#AFAFAF' | ||
break | ||
} | ||
|
||
return ( | ||
<View style={[styles.container]}> | ||
<View style={[styles.status, { backgroundColor }]} /> | ||
</View> | ||
) | ||
} | ||
|
||
export const MemberAvatarWithStatus: React.FC<MemberAvatarWithStatusProps> = ({ | ||
publicKey, | ||
convPK, | ||
memberStatus, | ||
}) => { | ||
return ( | ||
<> | ||
<MemberAvatar publicKey={publicKey} conversationPublicKey={convPK} size={32} /> | ||
<MemberStatus memberStatus={memberStatus} /> | ||
</> | ||
) | ||
} | ||
|
||
const size = 8 | ||
const containerSize = size + 4 | ||
const styles = StyleSheet.create({ | ||
container: { | ||
position: 'relative', | ||
borderRadius: containerSize, | ||
width: containerSize, | ||
height: containerSize, | ||
top: 10, | ||
right: 10, | ||
backgroundColor: '#FFFFFF', | ||
justifyContent: 'center', | ||
}, | ||
status: { | ||
borderRadius: size, | ||
width: size, | ||
height: size, | ||
alignSelf: 'center', | ||
}, | ||
}) |
54 changes: 54 additions & 0 deletions
54
js/packages/components/dropdowns/members/MemberName.priv.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
import { Icon } from '@ui-kitten/components' | ||
import React from 'react' | ||
import { StyleSheet, View } from 'react-native' | ||
|
||
import { UnifiedText } from '@berty/components/shared-components/UnifiedText' | ||
import { useStyles } from '@berty/contexts/styles' | ||
|
||
import { IMemberUserTypes } from './interfaces' | ||
|
||
interface MemberNameProps extends IMemberUserTypes { | ||
displayName: string | null | undefined | ||
} | ||
|
||
const MemberUserTypes: React.FC<IMemberUserTypes> = ({ memberUserType }) => { | ||
const { margin, text } = useStyles() | ||
|
||
let value, icon | ||
switch (memberUserType) { | ||
case 'replication': | ||
value = 'Replication node' | ||
icon = 'server' | ||
break | ||
case 'user': | ||
value = 'User device' | ||
icon = 'message-circle' | ||
break | ||
} | ||
|
||
return ( | ||
<View style={[styles.container]}> | ||
<Icon name={icon} pack='feather' width={11} fill='#A8A8AA' /> | ||
<UnifiedText style={[margin.left.scale(4), text.size.small, styles.text]}> | ||
{value} | ||
</UnifiedText> | ||
</View> | ||
) | ||
} | ||
|
||
export const MemberName: React.FC<MemberNameProps> = ({ displayName, memberUserType }) => { | ||
return ( | ||
<View> | ||
<UnifiedText>{displayName ?? ''}</UnifiedText> | ||
<MemberUserTypes memberUserType={memberUserType} /> | ||
</View> | ||
) | ||
} | ||
|
||
const styles = StyleSheet.create({ | ||
container: { | ||
flexDirection: 'row', | ||
alignItems: 'center', | ||
}, | ||
text: { color: '#A8A8AA', fontFamily: 'Regular Open Sans' }, | ||
}) |
50 changes: 50 additions & 0 deletions
50
js/packages/components/dropdowns/members/MemberTransport.priv.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
import { Icon } from '@ui-kitten/components' | ||
import React from 'react' | ||
import { StyleSheet, View } from 'react-native' | ||
|
||
import { useThemeColor } from '@berty/hooks' | ||
|
||
import { IMemberStatus, IMemberTransports } from './interfaces' | ||
|
||
export const MemberTransport: React.FC<IMemberStatus & IMemberTransports> = ({ | ||
memberStatus, | ||
memberTransport, | ||
}) => { | ||
const colors = useThemeColor() | ||
|
||
const iconSize = 16 | ||
let iconColor | ||
switch (memberStatus) { | ||
case 'connected': | ||
iconColor = colors['background-header'] | ||
break | ||
case 'disconnected': | ||
iconColor = '#9E9FA8' | ||
break | ||
case 'reconnecting': | ||
iconColor = '#FF9900' | ||
break | ||
} | ||
return ( | ||
<View style={[styles.container]}> | ||
<Icon | ||
pack='custom' | ||
name={`transport-${memberTransport}`} | ||
width={iconSize} | ||
height={iconSize} | ||
fill={iconColor} | ||
/> | ||
</View> | ||
) | ||
} | ||
const containerSize = 28 | ||
const styles = StyleSheet.create({ | ||
container: { | ||
width: containerSize, | ||
height: containerSize, | ||
borderRadius: containerSize, | ||
backgroundColor: '#E9EAF1', | ||
justifyContent: 'center', | ||
alignItems: 'center', | ||
}, | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
js/packages/components/dropdowns/members/MembersDropdownHeader.priv.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import React from 'react' | ||
import { View } from 'react-native' | ||
|
||
import { SmallClearableInput } from '@berty/components/inputs' | ||
import { useStyles } from '@berty/contexts/styles' | ||
|
||
interface MembersDropdownHeaderProps { | ||
inputValue: string | ||
setInputValue: (value: string) => void | ||
} | ||
|
||
export const MembersDropdownHeader: React.FC<MembersDropdownHeaderProps> = ({ | ||
inputValue, | ||
setInputValue, | ||
}) => { | ||
const { margin } = useStyles() | ||
|
||
return ( | ||
<View style={[margin.horizontal.medium]}> | ||
<SmallClearableInput | ||
value={inputValue} | ||
onChangeText={setInputValue} | ||
placeholder='Search member' | ||
iconName='search-outline' | ||
/> | ||
</View> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
export interface IMemberUserTypes { | ||
memberUserType: 'replication' | 'user' | ||
} | ||
export interface IMemberTransports { | ||
memberTransport: 'wifi' | '4g' | 'node' | 'ble' // TODO replace by proto GroupDevicesStatus.Transport enum | ||
} | ||
export interface IMemberStatus { | ||
memberStatus: 'connected' | 'disconnected' | 'reconnecting' // TODO replace by proto GroupDevicesStatus.Type enum | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.