Merge branch 'develop' into new.support-new-message-parser
This commit is contained in:
commit
3c7ad9a427
|
@ -20361,6 +20361,15 @@ exports[`Storyshots Message Colored attachments 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
<View
|
<View
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
|
@ -20562,6 +20571,15 @@ exports[`Storyshots Message Colored attachments 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
<View
|
<View
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
|
@ -20763,6 +20781,15 @@ exports[`Storyshots Message Colored attachments 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
<View
|
<View
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
|
@ -40307,6 +40334,268 @@ exports[`Storyshots Message Sequential thread messages following thread reply 1`
|
||||||
</RCTScrollView>
|
</RCTScrollView>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`Storyshots Message Show a button as attachment 1`] = `
|
||||||
|
<RCTScrollView
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": null,
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"flexDirection": "column",
|
||||||
|
"paddingHorizontal": 14,
|
||||||
|
"paddingVertical": 4,
|
||||||
|
"width": "100%",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"borderRadius": 4,
|
||||||
|
"height": 36,
|
||||||
|
"width": 36,
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"marginTop": 4,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"overflow": "hidden",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"borderRadius": 4,
|
||||||
|
"height": 36,
|
||||||
|
"width": 36,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<FastImageView
|
||||||
|
resizeMode="cover"
|
||||||
|
source={
|
||||||
|
Object {
|
||||||
|
"headers": undefined,
|
||||||
|
"priority": "high",
|
||||||
|
"uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"bottom": 0,
|
||||||
|
"left": 0,
|
||||||
|
"position": "absolute",
|
||||||
|
"right": 0,
|
||||||
|
"top": 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"flex": 1,
|
||||||
|
"marginLeft": 46,
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"marginLeft": 10,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
"justifyContent": "space-between",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flexDirection": "row",
|
||||||
|
"flexShrink": 1,
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
numberOfLines={1}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "500",
|
||||||
|
"lineHeight": 22,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
diego.mello
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 12,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"marginLeft": 8,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#9ca2a8",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
10:00 AM
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View />
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Test Button
|
||||||
|
</Text>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "#1d74f5",
|
||||||
|
"borderRadius": 2,
|
||||||
|
"height": 48,
|
||||||
|
"justifyContent": "center",
|
||||||
|
"marginBottom": 12,
|
||||||
|
"opacity": 1,
|
||||||
|
"paddingHorizontal": 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel="Text button"
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "500",
|
||||||
|
"textAlign": "center",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#ffffff",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Text button
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</RCTScrollView>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Storyshots Message Static avatar 1`] = `
|
exports[`Storyshots Message Static avatar 1`] = `
|
||||||
<RCTScrollView
|
<RCTScrollView
|
||||||
style={
|
style={
|
||||||
|
@ -43340,6 +43629,407 @@ exports[`Storyshots Message Temp 1`] = `
|
||||||
</RCTScrollView>
|
</RCTScrollView>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`Storyshots Message Thumbnail from server 1`] = `
|
||||||
|
<RCTScrollView
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"backgroundColor": null,
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"flexDirection": "column",
|
||||||
|
"paddingHorizontal": 14,
|
||||||
|
"paddingVertical": 4,
|
||||||
|
"width": "100%",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"borderRadius": 4,
|
||||||
|
"height": 36,
|
||||||
|
"width": 36,
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"marginTop": 4,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"overflow": "hidden",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"borderRadius": 4,
|
||||||
|
"height": 36,
|
||||||
|
"width": 36,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<FastImageView
|
||||||
|
resizeMode="cover"
|
||||||
|
source={
|
||||||
|
Object {
|
||||||
|
"headers": undefined,
|
||||||
|
"priority": "high",
|
||||||
|
"uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"bottom": 0,
|
||||||
|
"left": 0,
|
||||||
|
"position": "absolute",
|
||||||
|
"right": 0,
|
||||||
|
"top": 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"flex": 1,
|
||||||
|
"marginLeft": 46,
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"marginLeft": 10,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
"justifyContent": "space-between",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flexDirection": "row",
|
||||||
|
"flexShrink": 1,
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
numberOfLines={1}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "500",
|
||||||
|
"lineHeight": 22,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
diego.mello
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 12,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"marginLeft": 8,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#9ca2a8",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
10:00 AM
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View>
|
||||||
|
<Text
|
||||||
|
numberOfLines={0}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel="this is a thumbnail"
|
||||||
|
numberOfLines={0}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Array [
|
||||||
|
Object {},
|
||||||
|
Object {
|
||||||
|
"alignItems": "flex-start",
|
||||||
|
"flexDirection": "row",
|
||||||
|
"flexWrap": "wrap",
|
||||||
|
"justifyContent": "flex-start",
|
||||||
|
"marginBottom": 0,
|
||||||
|
"marginTop": 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
this is a thumbnail
|
||||||
|
</Text>
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View
|
||||||
|
accessible={true}
|
||||||
|
focusable={true}
|
||||||
|
onClick={[Function]}
|
||||||
|
onResponderGrant={[Function]}
|
||||||
|
onResponderMove={[Function]}
|
||||||
|
onResponderRelease={[Function]}
|
||||||
|
onResponderTerminate={[Function]}
|
||||||
|
onResponderTerminationRequest={[Function]}
|
||||||
|
onStartShouldSetResponder={[Function]}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"alignSelf": "flex-start",
|
||||||
|
"backgroundColor": "#f3f4f5",
|
||||||
|
"borderColor": "#e1e5e8",
|
||||||
|
"borderRadius": 4,
|
||||||
|
"borderWidth": 1,
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
"marginTop": 6,
|
||||||
|
"opacity": 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"borderRadius": 4,
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "column",
|
||||||
|
"padding": 15,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"flex": 1,
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "500",
|
||||||
|
"marginBottom": 3,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Title
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"overflow": "hidden",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"borderTopLeftRadius": 4,
|
||||||
|
"borderTopRightRadius": 4,
|
||||||
|
"flex": 1,
|
||||||
|
"height": 200,
|
||||||
|
"marginBottom": 1,
|
||||||
|
"width": null,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<FastImageView
|
||||||
|
resizeMode="cover"
|
||||||
|
source={
|
||||||
|
Object {
|
||||||
|
"uri": "https://images-na.ssl-images-amazon.com/images/I/71jKxPAMFbL._AC_SL1500_.jpg",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"bottom": 0,
|
||||||
|
"left": 0,
|
||||||
|
"position": "absolute",
|
||||||
|
"right": 0,
|
||||||
|
"top": 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel="Image text"
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Array [
|
||||||
|
Object {},
|
||||||
|
Object {
|
||||||
|
"alignItems": "flex-start",
|
||||||
|
"flexDirection": "row",
|
||||||
|
"flexWrap": "wrap",
|
||||||
|
"justifyContent": "flex-start",
|
||||||
|
"marginBottom": 0,
|
||||||
|
"marginTop": 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Image text
|
||||||
|
</Text>
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</RCTScrollView>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Storyshots Message Time format 1`] = `
|
exports[`Storyshots Message Time format 1`] = `
|
||||||
<RCTScrollView
|
<RCTScrollView
|
||||||
style={
|
style={
|
||||||
|
@ -47162,6 +47852,15 @@ exports[`Storyshots Message With file 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
<Text
|
<Text
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
@ -47380,6 +48079,15 @@ exports[`Storyshots Message With file 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"alignItems": "center",
|
||||||
|
"flex": 1,
|
||||||
|
"flexDirection": "row",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
<Text
|
<Text
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
@ -70722,6 +71430,189 @@ Array [
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`Storyshots Text Input Short and Long Text 1`] = `
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"paddingHorizontal": 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"marginBottom": 10,
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel={null}
|
||||||
|
contentDescription={null}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 14,
|
||||||
|
"fontWeight": "600",
|
||||||
|
"marginBottom": 10,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Short Text
|
||||||
|
</Text>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"position": "relative",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
accessibilityLabel="placeholder"
|
||||||
|
allowFontScaling={true}
|
||||||
|
autoCapitalize="none"
|
||||||
|
autoCorrect={false}
|
||||||
|
contentDescription="placeholder"
|
||||||
|
keyboardAppearance="light"
|
||||||
|
placeholder="placeholder"
|
||||||
|
placeholderTextColor="#9ca2a8"
|
||||||
|
rejectResponderTermination={true}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"borderRadius": 2,
|
||||||
|
"borderWidth": 0.5,
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"height": 48,
|
||||||
|
"padding": 14,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
"borderColor": "#cbcbcc",
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
],
|
||||||
|
Object {
|
||||||
|
"textAlign": "auto",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
underlineColorAndroid="transparent"
|
||||||
|
value="Rocket.Chat"
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"marginBottom": 10,
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel={null}
|
||||||
|
contentDescription={null}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 14,
|
||||||
|
"fontWeight": "600",
|
||||||
|
"marginBottom": 10,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Long Text
|
||||||
|
</Text>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"position": "relative",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
accessibilityLabel="placeholder"
|
||||||
|
allowFontScaling={true}
|
||||||
|
autoCapitalize="none"
|
||||||
|
autoCorrect={false}
|
||||||
|
contentDescription="placeholder"
|
||||||
|
keyboardAppearance="light"
|
||||||
|
placeholder="placeholder"
|
||||||
|
placeholderTextColor="#9ca2a8"
|
||||||
|
rejectResponderTermination={true}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"borderRadius": 2,
|
||||||
|
"borderWidth": 0.5,
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"height": 48,
|
||||||
|
"padding": 14,
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
"borderColor": "#cbcbcc",
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
],
|
||||||
|
Object {
|
||||||
|
"textAlign": "auto",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
underlineColorAndroid="transparent"
|
||||||
|
value="https://open.rocket.chat/images/logo/android-chrome-512x512.png"
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Storyshots Thread Messages.Item badge 1`] = `
|
exports[`Storyshots Thread Messages.Item badge 1`] = `
|
||||||
<RCTScrollView>
|
<RCTScrollView>
|
||||||
<View>
|
<View>
|
||||||
|
|
|
@ -144,7 +144,7 @@ android {
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode VERSIONCODE as Integer
|
versionCode VERSIONCODE as Integer
|
||||||
versionName "4.19.0"
|
versionName "4.20.0"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
if (!isFoss) {
|
if (!isFoss) {
|
||||||
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
|
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
|
||||||
|
|
|
@ -18,7 +18,7 @@ buildscript {
|
||||||
supportLibVersion = "28.0.0"
|
supportLibVersion = "28.0.0"
|
||||||
libre_build = !(isPlay.toBoolean())
|
libre_build = !(isPlay.toBoolean())
|
||||||
jitsi_url = isPlay ? "https://github.com/RocketChat/jitsi-maven-repository/raw/master/releases" : "https://github.com/RocketChat/jitsi-maven-repository/raw/libre/releases"
|
jitsi_url = isPlay ? "https://github.com/RocketChat/jitsi-maven-repository/raw/master/releases" : "https://github.com/RocketChat/jitsi-maven-repository/raw/libre/releases"
|
||||||
jitsi_version = isPlay ? "2.10.2" : "2.10.0-libre"
|
jitsi_version = isPlay ? "3.6.0" : "3.6.0-libre"
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
|
|
@ -53,8 +53,6 @@ export const LOGOUT = 'LOGOUT'; // logout is always success
|
||||||
export const SNIPPETED_MESSAGES = createRequestTypes('SNIPPETED_MESSAGES', ['OPEN', 'READY', 'CLOSE', 'MESSAGES_RECEIVED']);
|
export const SNIPPETED_MESSAGES = createRequestTypes('SNIPPETED_MESSAGES', ['OPEN', 'READY', 'CLOSE', 'MESSAGES_RECEIVED']);
|
||||||
export const DEEP_LINKING = createRequestTypes('DEEP_LINKING', ['OPEN']);
|
export const DEEP_LINKING = createRequestTypes('DEEP_LINKING', ['OPEN']);
|
||||||
export const SORT_PREFERENCES = createRequestTypes('SORT_PREFERENCES', ['SET_ALL', 'SET']);
|
export const SORT_PREFERENCES = createRequestTypes('SORT_PREFERENCES', ['SET_ALL', 'SET']);
|
||||||
export const TOGGLE_CRASH_REPORT = 'TOGGLE_CRASH_REPORT';
|
|
||||||
export const TOGGLE_ANALYTICS_EVENTS = 'TOGGLE_ANALYTICS_EVENTS';
|
|
||||||
export const SET_CUSTOM_EMOJIS = 'SET_CUSTOM_EMOJIS';
|
export const SET_CUSTOM_EMOJIS = 'SET_CUSTOM_EMOJIS';
|
||||||
export const SET_ACTIVE_USERS = 'SET_ACTIVE_USERS';
|
export const SET_ACTIVE_USERS = 'SET_ACTIVE_USERS';
|
||||||
export const USERS_TYPING = createRequestTypes('USERS_TYPING', ['ADD', 'REMOVE', 'CLEAR']);
|
export const USERS_TYPING = createRequestTypes('USERS_TYPING', ['ADD', 'REMOVE', 'CLEAR']);
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
import * as types from './actionsTypes';
|
|
||||||
|
|
||||||
export function toggleCrashReport(value) {
|
|
||||||
return {
|
|
||||||
type: types.TOGGLE_CRASH_REPORT,
|
|
||||||
payload: value
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toggleAnalyticsEvents(value) {
|
|
||||||
return {
|
|
||||||
type: types.TOGGLE_ANALYTICS_EVENTS,
|
|
||||||
payload: value
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -26,7 +26,7 @@ const styles = StyleSheet.create({
|
||||||
...sharedStyles.textRegular,
|
...sharedStyles.textRegular,
|
||||||
height: 48,
|
height: 48,
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
paddingHorizontal: 14,
|
padding: 14,
|
||||||
borderWidth: StyleSheet.hairlineWidth,
|
borderWidth: StyleSheet.hairlineWidth,
|
||||||
borderRadius: 2
|
borderRadius: 2
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions, react/prop-types */
|
||||||
|
import React from 'react';
|
||||||
|
import { storiesOf } from '@storybook/react-native';
|
||||||
|
|
||||||
|
import { View, StyleSheet } from 'react-native';
|
||||||
|
import TextInput from './TextInput';
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
paddingHorizontal: {
|
||||||
|
paddingHorizontal: 14
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const stories = storiesOf('Text Input', module);
|
||||||
|
|
||||||
|
const item = {
|
||||||
|
name: 'Rocket.Chat',
|
||||||
|
longText: 'https://open.rocket.chat/images/logo/android-chrome-512x512.png'
|
||||||
|
};
|
||||||
|
|
||||||
|
const theme = 'light';
|
||||||
|
|
||||||
|
|
||||||
|
stories.add('Short and Long Text', () => (
|
||||||
|
<>
|
||||||
|
<View style={styles.paddingHorizontal}>
|
||||||
|
<TextInput
|
||||||
|
label='Short Text'
|
||||||
|
placeholder='placeholder'
|
||||||
|
value={item.name}
|
||||||
|
theme={theme}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextInput
|
||||||
|
label='Long Text'
|
||||||
|
placeholder='placeholder'
|
||||||
|
value={item.longText}
|
||||||
|
theme={theme}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</>
|
||||||
|
));
|
||||||
|
|
|
@ -157,7 +157,7 @@ export const MultiSelect = React.memo(({
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
inputStyle={inputStyle}
|
inputStyle={inputStyle}
|
||||||
>
|
>
|
||||||
{items.length ? <Chips items={items} onSelect={onSelect} theme={theme} /> : <Text style={[styles.pickerText, { color: themes[theme].auxiliaryText }]}>{placeholder.text}</Text>}
|
{items.length ? <Chips items={items} onSelect={item => (disabled ? {} : onSelect(item))} theme={theme} /> : <Text style={[styles.pickerText, { color: themes[theme].auxiliaryText }]}>{placeholder.text}</Text>}
|
||||||
</Input>
|
</Input>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,35 @@
|
||||||
import React from 'react';
|
import React, { useContext } from 'react';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import { Text } from 'react-native';
|
||||||
|
|
||||||
import Image from './Image';
|
import Image from './Image';
|
||||||
import Audio from './Audio';
|
import Audio from './Audio';
|
||||||
import Video from './Video';
|
import Video from './Video';
|
||||||
import Reply from './Reply';
|
import Reply from './Reply';
|
||||||
|
import Button from '../Button';
|
||||||
|
import styles from './styles';
|
||||||
|
import MessageContext from './Context';
|
||||||
|
|
||||||
|
const AttachedActions = ({
|
||||||
|
attachment, theme
|
||||||
|
}) => {
|
||||||
|
const { onAnswerButtonPress } = useContext(MessageContext);
|
||||||
|
|
||||||
|
const attachedButtons = attachment.actions.map((element) => {
|
||||||
|
if (element.type === 'button') {
|
||||||
|
return <Button theme={theme} onPress={() => onAnswerButtonPress(element.msg)} title={element.text} />;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Text style={styles.text}>{attachment.text}</Text>
|
||||||
|
{attachedButtons}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const Attachments = React.memo(({
|
const Attachments = React.memo(({
|
||||||
attachments, timeFormat, showAttachment, getCustomEmoji, theme
|
attachments, timeFormat, showAttachment, getCustomEmoji, theme
|
||||||
|
@ -24,6 +48,9 @@ const Attachments = React.memo(({
|
||||||
if (file.video_url) {
|
if (file.video_url) {
|
||||||
return <Video key={file.video_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />;
|
return <Video key={file.video_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />;
|
||||||
}
|
}
|
||||||
|
if (file.actions && file.actions.length > 0) {
|
||||||
|
return <AttachedActions attachment={file} theme={theme} />;
|
||||||
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line react/no-array-index-key
|
// eslint-disable-next-line react/no-array-index-key
|
||||||
return <Reply key={index} index={index} attachment={file} timeFormat={timeFormat} getCustomEmoji={getCustomEmoji} theme={theme} />;
|
return <Reply key={index} index={index} attachment={file} timeFormat={timeFormat} getCustomEmoji={getCustomEmoji} theme={theme} />;
|
||||||
|
@ -38,5 +65,12 @@ Attachments.propTypes = {
|
||||||
theme: PropTypes.string
|
theme: PropTypes.string
|
||||||
};
|
};
|
||||||
Attachments.displayName = 'MessageAttachments';
|
Attachments.displayName = 'MessageAttachments';
|
||||||
|
AttachedActions.propTypes = {
|
||||||
|
attachment: PropTypes.shape({
|
||||||
|
actions: PropTypes.array,
|
||||||
|
text: PropTypes.string
|
||||||
|
}),
|
||||||
|
theme: PropTypes.string
|
||||||
|
};
|
||||||
|
|
||||||
export default Attachments;
|
export default Attachments;
|
||||||
|
|
|
@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { transparentize } from 'color2k';
|
import { transparentize } from 'color2k';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
|
import FastImage from '@rocket.chat/react-native-fast-image';
|
||||||
|
|
||||||
import Touchable from './Touchable';
|
import Touchable from './Touchable';
|
||||||
import Markdown from '../markdown';
|
import Markdown from '../markdown';
|
||||||
|
@ -66,17 +67,29 @@ const styles = StyleSheet.create({
|
||||||
},
|
},
|
||||||
marginBottom: {
|
marginBottom: {
|
||||||
marginBottom: 4
|
marginBottom: 4
|
||||||
|
},
|
||||||
|
image: {
|
||||||
|
width: null,
|
||||||
|
height: 200,
|
||||||
|
flex: 1,
|
||||||
|
borderTopLeftRadius: 4,
|
||||||
|
borderTopRightRadius: 4,
|
||||||
|
marginBottom: 1
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
flex: 1,
|
||||||
|
fontSize: 16,
|
||||||
|
marginBottom: 3,
|
||||||
|
...sharedStyles.textMedium
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const Title = React.memo(({ attachment, timeFormat, theme }) => {
|
const Title = React.memo(({ attachment, timeFormat, theme }) => {
|
||||||
if (!attachment.author_name) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const time = attachment.message_link && attachment.ts ? moment(attachment.ts).format(timeFormat) : null;
|
const time = attachment.message_link && attachment.ts ? moment(attachment.ts).format(timeFormat) : null;
|
||||||
return (
|
return (
|
||||||
<View style={styles.authorContainer}>
|
<View style={styles.authorContainer}>
|
||||||
{attachment.author_name ? <Text style={[styles.author, { color: themes[theme].bodyText }]}>{attachment.author_name}</Text> : null}
|
{attachment.author_name ? <Text style={[styles.author, { color: themes[theme].bodyText }]}>{attachment.author_name}</Text> : null}
|
||||||
|
{attachment.title ? <Text style={[styles.title, { color: themes[theme].bodyText }]}>{attachment.title}</Text> : null}
|
||||||
{time ? <Text style={[styles.time, { color: themes[theme].auxiliaryText }]}>{ time }</Text> : null}
|
{time ? <Text style={[styles.time, { color: themes[theme].auxiliaryText }]}>{ time }</Text> : null}
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
|
@ -112,6 +125,15 @@ const Description = React.memo(({
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const UrlImage = React.memo(({ image }) => {
|
||||||
|
if (!image) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const { baseUrl, user } = useContext(MessageContext);
|
||||||
|
image = image.includes('http') ? image : `${ baseUrl }/${ image }?rc_uid=${ user.id }&rc_token=${ user.token }`;
|
||||||
|
return <FastImage source={{ uri: image }} style={styles.image} resizeMode={FastImage.resizeMode.cover} />;
|
||||||
|
}, (prevProps, nextProps) => prevProps.image === nextProps.image);
|
||||||
|
|
||||||
const Fields = React.memo(({ attachment, theme, getCustomEmoji }) => {
|
const Fields = React.memo(({ attachment, theme, getCustomEmoji }) => {
|
||||||
if (!attachment.fields) {
|
if (!attachment.fields) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -191,6 +213,7 @@ const Reply = React.memo(({
|
||||||
timeFormat={timeFormat}
|
timeFormat={timeFormat}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
/>
|
/>
|
||||||
|
<UrlImage image={attachment.thumb_url} />
|
||||||
<Description
|
<Description
|
||||||
attachment={attachment}
|
attachment={attachment}
|
||||||
getCustomEmoji={getCustomEmoji}
|
getCustomEmoji={getCustomEmoji}
|
||||||
|
@ -223,6 +246,10 @@ Reply.propTypes = {
|
||||||
};
|
};
|
||||||
Reply.displayName = 'MessageReply';
|
Reply.displayName = 'MessageReply';
|
||||||
|
|
||||||
|
UrlImage.propTypes = {
|
||||||
|
image: PropTypes.string
|
||||||
|
};
|
||||||
|
|
||||||
Title.propTypes = {
|
Title.propTypes = {
|
||||||
attachment: PropTypes.object,
|
attachment: PropTypes.object,
|
||||||
timeFormat: PropTypes.string,
|
timeFormat: PropTypes.string,
|
||||||
|
|
|
@ -41,6 +41,7 @@ class MessageContainer extends React.Component {
|
||||||
onEncryptedPress: PropTypes.func,
|
onEncryptedPress: PropTypes.func,
|
||||||
onDiscussionPress: PropTypes.func,
|
onDiscussionPress: PropTypes.func,
|
||||||
onThreadPress: PropTypes.func,
|
onThreadPress: PropTypes.func,
|
||||||
|
onAnswerButtonPress: PropTypes.func,
|
||||||
errorActionsShow: PropTypes.func,
|
errorActionsShow: PropTypes.func,
|
||||||
replyBroadcast: PropTypes.func,
|
replyBroadcast: PropTypes.func,
|
||||||
reactionInit: PropTypes.func,
|
reactionInit: PropTypes.func,
|
||||||
|
@ -64,6 +65,7 @@ class MessageContainer extends React.Component {
|
||||||
onEncryptedPress: () => {},
|
onEncryptedPress: () => {},
|
||||||
onDiscussionPress: () => {},
|
onDiscussionPress: () => {},
|
||||||
onThreadPress: () => {},
|
onThreadPress: () => {},
|
||||||
|
onAnswerButtonPress: () => {},
|
||||||
errorActionsShow: () => {},
|
errorActionsShow: () => {},
|
||||||
replyBroadcast: () => {},
|
replyBroadcast: () => {},
|
||||||
reactionInit: () => {},
|
reactionInit: () => {},
|
||||||
|
@ -190,6 +192,13 @@ class MessageContainer extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onAnswerButtonPress = (msg) => {
|
||||||
|
const { onAnswerButtonPress } = this.props;
|
||||||
|
if (onAnswerButtonPress) {
|
||||||
|
onAnswerButtonPress(msg, undefined, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onIgnoredMessagePress = () => {
|
onIgnoredMessagePress = () => {
|
||||||
this.setState({ isManualUnignored: true });
|
this.setState({ isManualUnignored: true });
|
||||||
}
|
}
|
||||||
|
@ -367,6 +376,7 @@ class MessageContainer extends React.Component {
|
||||||
onDiscussionPress: this.onDiscussionPress,
|
onDiscussionPress: this.onDiscussionPress,
|
||||||
onReactionLongPress: this.onReactionLongPress,
|
onReactionLongPress: this.onReactionLongPress,
|
||||||
onLinkPress: this.onLinkPress,
|
onLinkPress: this.onLinkPress,
|
||||||
|
onAnswerButtonPress: this.onAnswerButtonPress,
|
||||||
jumpToMessage,
|
jumpToMessage,
|
||||||
threadBadgeColor,
|
threadBadgeColor,
|
||||||
toggleFollowThread,
|
toggleFollowThread,
|
||||||
|
|
|
@ -763,11 +763,15 @@
|
||||||
"Load_More": "Load More",
|
"Load_More": "Load More",
|
||||||
"Load_Newer": "Load Newer",
|
"Load_Newer": "Load Newer",
|
||||||
"Load_Older": "Load Older",
|
"Load_Older": "Load Older",
|
||||||
|
"room-name-already-exists": "Room name already exists",
|
||||||
|
"error-team-creation": "Error team creation",
|
||||||
|
"unauthorized": "Unauthorized",
|
||||||
"Left_The_Room_Successfully": "Left the room successfully",
|
"Left_The_Room_Successfully": "Left the room successfully",
|
||||||
"Deleted_The_Team_Successfully": "Team deleted successfully",
|
"Deleted_The_Team_Successfully": "Team deleted successfully",
|
||||||
"Deleted_The_Room_Successfully": "Room deleted successfully",
|
"Deleted_The_Room_Successfully": "Room deleted successfully",
|
||||||
"Convert_to_Channel": "Convert to Channel",
|
"Convert_to_Channel": "Convert to Channel",
|
||||||
"Converting_Team_To_Channel": "Converting Team to Channel",
|
"Converting_Team_To_Channel": "Converting Team to Channel",
|
||||||
"Select_Team_Channels_To_Delete": "Select the Team’s Channels you would like to delete, the ones you do not select will be moved to the Workspace. \n\nNotice that public Channels will be public and visible to everyone.",
|
"Select_Team_Channels_To_Delete": "Select the Team’s Channels you would like to delete, the ones you do not select will be moved to the Workspace. \n\nNotice that public Channels will be public and visible to everyone.",
|
||||||
"You_are_converting_the_team": "You are converting this Team to a Channel"
|
"You_are_converting_the_team": "You are converting this Team to a Channel",
|
||||||
|
"creating_discussion": "creating discussion"
|
||||||
}
|
}
|
|
@ -666,6 +666,9 @@
|
||||||
"Left_The_Team_Successfully": "Saiu do time com sucesso",
|
"Left_The_Team_Successfully": "Saiu do time com sucesso",
|
||||||
"Add_Existing_Channel": "Adicionar Canal Existente",
|
"Add_Existing_Channel": "Adicionar Canal Existente",
|
||||||
"invalid-room": "Sala inválida",
|
"invalid-room": "Sala inválida",
|
||||||
|
"room-name-already-exists": "Nome da sala já existe",
|
||||||
|
"error-team-creation": "Erro na criação do time",
|
||||||
|
"unauthorized": "Não autorizado",
|
||||||
"Left_The_Room_Successfully": "Saiu da sala com sucesso",
|
"Left_The_Room_Successfully": "Saiu da sala com sucesso",
|
||||||
"Deleted_The_Team_Successfully": "Time deletado com sucesso",
|
"Deleted_The_Team_Successfully": "Time deletado com sucesso",
|
||||||
"Deleted_The_Room_Successfully": "Sala deletada com sucesso",
|
"Deleted_The_Room_Successfully": "Sala deletada com sucesso",
|
||||||
|
|
12
app/index.js
12
app/index.js
|
@ -19,7 +19,7 @@ import { deepLinkingOpen } from './actions/deepLinking';
|
||||||
import parseQuery from './lib/methods/helpers/parseQuery';
|
import parseQuery from './lib/methods/helpers/parseQuery';
|
||||||
import { initializePushNotifications, onNotification } from './notifications/push';
|
import { initializePushNotifications, onNotification } from './notifications/push';
|
||||||
import store from './lib/createStore';
|
import store from './lib/createStore';
|
||||||
import { loggerConfig, analytics } from './utils/log';
|
import { toggleAnalyticsEventsReport, toggleCrashErrorsReport } from './utils/log';
|
||||||
import { ThemeContext } from './theme';
|
import { ThemeContext } from './theme';
|
||||||
import { DimensionsContext } from './dimensions';
|
import { DimensionsContext } from './dimensions';
|
||||||
import RocketChat, { THEME_PREFERENCES_KEY } from './lib/rocketchat';
|
import RocketChat, { THEME_PREFERENCES_KEY } from './lib/rocketchat';
|
||||||
|
@ -188,11 +188,11 @@ export default class Root extends React.Component {
|
||||||
initCrashReport = () => {
|
initCrashReport = () => {
|
||||||
RocketChat.getAllowCrashReport()
|
RocketChat.getAllowCrashReport()
|
||||||
.then((allowCrashReport) => {
|
.then((allowCrashReport) => {
|
||||||
if (!allowCrashReport) {
|
toggleCrashErrorsReport(allowCrashReport);
|
||||||
loggerConfig.autoNotify = false;
|
});
|
||||||
loggerConfig.registerBeforeSendCallback(() => false);
|
RocketChat.getAllowAnalyticsEvents()
|
||||||
analytics().setAnalyticsCollectionEnabled(false);
|
.then((allowAnalyticsEvents) => {
|
||||||
}
|
toggleAnalyticsEventsReport(allowAnalyticsEvents);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,9 @@ const PERMISSIONS = [
|
||||||
'view-user-administration',
|
'view-user-administration',
|
||||||
'view-all-teams',
|
'view-all-teams',
|
||||||
'view-all-team-channels',
|
'view-all-team-channels',
|
||||||
'convert-team'
|
'convert-team',
|
||||||
|
'edit-omnichannel-contact',
|
||||||
|
'edit-livechat-room-customfields'
|
||||||
];
|
];
|
||||||
|
|
||||||
export async function setPermissions() {
|
export async function setPermissions() {
|
||||||
|
|
|
@ -178,6 +178,7 @@ class Touchable extends React.Component {
|
||||||
|
|
||||||
toggleRead = () => {
|
toggleRead = () => {
|
||||||
const { toggleRead, rid, isRead } = this.props;
|
const { toggleRead, rid, isRead } = this.props;
|
||||||
|
|
||||||
if (toggleRead) {
|
if (toggleRead) {
|
||||||
toggleRead(rid, isRead);
|
toggleRead(rid, isRead);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ const styles = StyleSheet.create({
|
||||||
input: {
|
input: {
|
||||||
...I18nManager.isRTL
|
...I18nManager.isRTL
|
||||||
? { textAlign: 'right' }
|
? { textAlign: 'right' }
|
||||||
: { textAlign: 'left' }
|
: { textAlign: 'auto' }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { TOGGLE_CRASH_REPORT, TOGGLE_ANALYTICS_EVENTS } from '../actions/actionsTypes';
|
|
||||||
|
|
||||||
const initialState = {
|
|
||||||
allowCrashReport: false,
|
|
||||||
allowAnalyticsEvents: false
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
export default (state = initialState, action) => {
|
|
||||||
switch (action.type) {
|
|
||||||
case TOGGLE_CRASH_REPORT:
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
allowCrashReport: action.payload
|
|
||||||
};
|
|
||||||
|
|
||||||
case TOGGLE_ANALYTICS_EVENTS:
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
allowAnalyticsEvents: action.payload
|
|
||||||
};
|
|
||||||
default:
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -10,7 +10,6 @@ import createChannel from './createChannel';
|
||||||
import app from './app';
|
import app from './app';
|
||||||
import sortPreferences from './sortPreferences';
|
import sortPreferences from './sortPreferences';
|
||||||
import share from './share';
|
import share from './share';
|
||||||
import crashReport from './crashReport';
|
|
||||||
import customEmojis from './customEmojis';
|
import customEmojis from './customEmojis';
|
||||||
import activeUsers from './activeUsers';
|
import activeUsers from './activeUsers';
|
||||||
import usersTyping from './usersTyping';
|
import usersTyping from './usersTyping';
|
||||||
|
@ -35,7 +34,6 @@ export default combineReducers({
|
||||||
rooms,
|
rooms,
|
||||||
sortPreferences,
|
sortPreferences,
|
||||||
share,
|
share,
|
||||||
crashReport,
|
|
||||||
customEmojis,
|
customEmojis,
|
||||||
activeUsers,
|
activeUsers,
|
||||||
usersTyping,
|
usersTyping,
|
||||||
|
|
|
@ -109,8 +109,23 @@ const handleSuccess = function* handleSuccess({ data }) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleFailure = function handleFailure({ err, isTeam }) {
|
const handleFailure = function handleFailure({ err, isTeam }) {
|
||||||
|
const errorArray = [
|
||||||
|
'room-name-already-exists',
|
||||||
|
'error-team-creation',
|
||||||
|
'unauthorized',
|
||||||
|
'error-duplicate-channel-name',
|
||||||
|
'error-invalid-room-name',
|
||||||
|
'team-name-already-exists'
|
||||||
|
];
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const msg = err.data.errorType ? I18n.t(err.data.errorType, { room_name: err.data.details.channel_name }) : err.reason || I18n.t('There_was_an_error_while_action', { action: isTeam ? I18n.t('creating_team') : I18n.t('creating_channel') });
|
let msg = '';
|
||||||
|
const actionError = I18n.t('There_was_an_error_while_action', { action: isTeam ? I18n.t('creating_team') : I18n.t('creating_channel') });
|
||||||
|
if (err?.data?.errorType && err?.data?.details?.channel_name) {
|
||||||
|
msg = errorArray.includes(err.data.errorType) ? I18n.t(err.data.errorType, { room_name: err.data.details.channel_name }) : actionError;
|
||||||
|
} else {
|
||||||
|
msg = err?.reason || (errorArray.includes(err?.data?.error) ? I18n.t(err.data.error) : err.data.error || actionError);
|
||||||
|
}
|
||||||
showErrorAlert(msg, isTeam ? I18n.t('Create_Team') : I18n.t('Create_Channel'));
|
showErrorAlert(msg, isTeam ? I18n.t('Create_Team') : I18n.t('Create_Channel'));
|
||||||
}, 300);
|
}, 300);
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,7 +4,6 @@ import RNBootSplash from 'react-native-bootsplash';
|
||||||
import UserPreferences from '../lib/userPreferences';
|
import UserPreferences from '../lib/userPreferences';
|
||||||
import { selectServerRequest } from '../actions/server';
|
import { selectServerRequest } from '../actions/server';
|
||||||
import { setAllPreferences } from '../actions/sortPreferences';
|
import { setAllPreferences } from '../actions/sortPreferences';
|
||||||
import { toggleCrashReport, toggleAnalyticsEvents } from '../actions/crashReport';
|
|
||||||
import { APP } from '../actions/actionsTypes';
|
import { APP } from '../actions/actionsTypes';
|
||||||
import RocketChat from '../lib/rocketchat';
|
import RocketChat from '../lib/rocketchat';
|
||||||
import log from '../utils/log';
|
import log from '../utils/log';
|
||||||
|
@ -15,12 +14,6 @@ import { appStart, ROOT_OUTSIDE, appReady } from '../actions/app';
|
||||||
export const initLocalSettings = function* initLocalSettings() {
|
export const initLocalSettings = function* initLocalSettings() {
|
||||||
const sortPreferences = yield RocketChat.getSortPreferences();
|
const sortPreferences = yield RocketChat.getSortPreferences();
|
||||||
yield put(setAllPreferences(sortPreferences));
|
yield put(setAllPreferences(sortPreferences));
|
||||||
|
|
||||||
const allowCrashReport = yield RocketChat.getAllowCrashReport();
|
|
||||||
yield put(toggleCrashReport(allowCrashReport));
|
|
||||||
|
|
||||||
const allowAnalyticsEvents = yield RocketChat.getAllowAnalyticsEvents();
|
|
||||||
yield put(toggleAnalyticsEvents(allowAnalyticsEvents));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const restore = function* restore() {
|
const restore = function* restore() {
|
||||||
|
|
|
@ -5,10 +5,24 @@ import events from './events';
|
||||||
const analytics = firebaseAnalytics || '';
|
const analytics = firebaseAnalytics || '';
|
||||||
let bugsnag = '';
|
let bugsnag = '';
|
||||||
let crashlytics;
|
let crashlytics;
|
||||||
|
let reportCrashErrors = true;
|
||||||
|
let reportAnalyticsEvents = true;
|
||||||
|
|
||||||
|
export const getReportCrashErrorsValue = () => reportCrashErrors;
|
||||||
|
export const getReportAnalyticsEventsValue = () => reportAnalyticsEvents;
|
||||||
|
|
||||||
|
|
||||||
if (!isFDroidBuild) {
|
if (!isFDroidBuild) {
|
||||||
bugsnag = require('@bugsnag/react-native').default;
|
bugsnag = require('@bugsnag/react-native').default;
|
||||||
bugsnag.start();
|
bugsnag.start({
|
||||||
|
onBreadcrumb() {
|
||||||
|
return reportAnalyticsEvents;
|
||||||
|
},
|
||||||
|
onError(error) {
|
||||||
|
if (!reportAnalyticsEvents) { error.breadcrumbs = []; }
|
||||||
|
return reportCrashErrors;
|
||||||
|
}
|
||||||
|
});
|
||||||
crashlytics = require('@react-native-firebase/crashlytics').default;
|
crashlytics = require('@react-native-firebase/crashlytics').default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +56,16 @@ export const setCurrentScreen = (currentScreen) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const toggleCrashErrorsReport = (value) => {
|
||||||
|
crashlytics().setCrashlyticsCollectionEnabled(value);
|
||||||
|
return reportCrashErrors = value;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const toggleAnalyticsEventsReport = (value) => {
|
||||||
|
analytics().setAnalyticsCollectionEnabled(value);
|
||||||
|
return reportAnalyticsEvents = value;
|
||||||
|
};
|
||||||
|
|
||||||
export default (e) => {
|
export default (e) => {
|
||||||
if (e instanceof Error && bugsnag && e.message !== 'Aborted' && !__DEV__) {
|
if (e instanceof Error && bugsnag && e.message !== 'Aborted' && !__DEV__) {
|
||||||
bugsnag.notify(e, (event) => {
|
bugsnag.notify(e, (event) => {
|
||||||
|
|
|
@ -74,7 +74,7 @@ class CreateChannelView extends React.Component {
|
||||||
if (!loading && loading !== prevProps.loading) {
|
if (!loading && loading !== prevProps.loading) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (failure) {
|
if (failure) {
|
||||||
const msg = error.reason || I18n.t('There_was_an_error_while_action', { action: I18n.t('creating_channel') });
|
const msg = error.reason || I18n.t('There_was_an_error_while_action', { action: I18n.t('creating_discussion') });
|
||||||
showErrorAlert(msg);
|
showErrorAlert(msg);
|
||||||
} else {
|
} else {
|
||||||
const { rid, t, prid } = result;
|
const { rid, t, prid } = result;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { StyleSheet } from 'react-native';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import JitsiMeet, { JitsiMeetView as RNJitsiMeetView } from 'react-native-jitsi-meet';
|
import JitsiMeet, { JitsiMeetView as RNJitsiMeetView } from 'react-native-jitsi-meet';
|
||||||
import BackgroundTimer from 'react-native-background-timer';
|
import BackgroundTimer from 'react-native-background-timer';
|
||||||
|
@ -6,9 +7,10 @@ import { connect } from 'react-redux';
|
||||||
|
|
||||||
import RocketChat from '../lib/rocketchat';
|
import RocketChat from '../lib/rocketchat';
|
||||||
import { getUserSelector } from '../selectors/login';
|
import { getUserSelector } from '../selectors/login';
|
||||||
|
import ActivityIndicator from '../containers/ActivityIndicator';
|
||||||
import sharedStyles from './Styles';
|
|
||||||
import { logEvent, events } from '../utils/log';
|
import { logEvent, events } from '../utils/log';
|
||||||
|
import { isAndroid, isIOS } from '../utils/deviceInfo';
|
||||||
|
import { withTheme } from '../theme';
|
||||||
|
|
||||||
const formatUrl = (url, baseUrl, uriSize, avatarAuthURLFragment) => (
|
const formatUrl = (url, baseUrl, uriSize, avatarAuthURLFragment) => (
|
||||||
`${ baseUrl }/avatar/${ url }?format=png&width=${ uriSize }&height=${ uriSize }${ avatarAuthURLFragment }`
|
`${ baseUrl }/avatar/${ url }?format=png&width=${ uriSize }&height=${ uriSize }${ avatarAuthURLFragment }`
|
||||||
|
@ -19,6 +21,7 @@ class JitsiMeetView extends React.Component {
|
||||||
navigation: PropTypes.object,
|
navigation: PropTypes.object,
|
||||||
route: PropTypes.object,
|
route: PropTypes.object,
|
||||||
baseUrl: PropTypes.string,
|
baseUrl: PropTypes.string,
|
||||||
|
theme: PropTypes.string,
|
||||||
user: PropTypes.shape({
|
user: PropTypes.shape({
|
||||||
id: PropTypes.string,
|
id: PropTypes.string,
|
||||||
username: PropTypes.string,
|
username: PropTypes.string,
|
||||||
|
@ -30,43 +33,54 @@ class JitsiMeetView extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.rid = props.route.params?.rid;
|
this.rid = props.route.params?.rid;
|
||||||
this.onConferenceTerminated = this.onConferenceTerminated.bind(this);
|
this.url = props.route.params?.url;
|
||||||
this.onConferenceJoined = this.onConferenceJoined.bind(this);
|
|
||||||
this.jitsiTimeout = null;
|
this.jitsiTimeout = null;
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount() {
|
const { user, baseUrl } = props;
|
||||||
const { route, user, baseUrl } = this.props;
|
|
||||||
const {
|
const {
|
||||||
name: displayName, id: userId, token, username
|
name: displayName, id: userId, token, username
|
||||||
} = user;
|
} = user;
|
||||||
|
|
||||||
const avatarAuthURLFragment = `&rc_token=${ token }&rc_uid=${ userId }`;
|
const avatarAuthURLFragment = `&rc_token=${ token }&rc_uid=${ userId }`;
|
||||||
const avatar = formatUrl(username, baseUrl, 100, avatarAuthURLFragment);
|
const avatar = formatUrl(username, baseUrl, 100, avatarAuthURLFragment);
|
||||||
|
this.state = {
|
||||||
setTimeout(() => {
|
userInfo: {
|
||||||
const userInfo = {
|
|
||||||
displayName,
|
displayName,
|
||||||
avatar
|
avatar
|
||||||
};
|
},
|
||||||
const url = route.params?.url;
|
loading: true
|
||||||
const onlyAudio = route.params?.onlyAudio ?? false;
|
};
|
||||||
if (onlyAudio) {
|
}
|
||||||
JitsiMeet.audioCall(url, userInfo);
|
|
||||||
} else {
|
componentDidMount() {
|
||||||
JitsiMeet.call(url, userInfo);
|
const { route } = this.props;
|
||||||
}
|
const { userInfo } = this.state;
|
||||||
}, 1000);
|
|
||||||
|
if (isIOS) {
|
||||||
|
setTimeout(() => {
|
||||||
|
const onlyAudio = route.params?.onlyAudio ?? false;
|
||||||
|
if (onlyAudio) {
|
||||||
|
JitsiMeet.audioCall(this.url, userInfo);
|
||||||
|
} else {
|
||||||
|
JitsiMeet.call(this.url, userInfo);
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
logEvent(events.JM_CONFERENCE_TERMINATE);
|
logEvent(events.JM_CONFERENCE_TERMINATE);
|
||||||
if (this.jitsiTimeout) {
|
if (this.jitsiTimeout) {
|
||||||
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
||||||
|
this.jitsiTimeout = null;
|
||||||
|
BackgroundTimer.stopBackgroundTimer();
|
||||||
}
|
}
|
||||||
JitsiMeet.endCall();
|
JitsiMeet.endCall();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onConferenceWillJoin = () => {
|
||||||
|
this.setState({ loading: false });
|
||||||
|
}
|
||||||
|
|
||||||
// Jitsi Update Timeout needs to be called every 10 seconds to make sure
|
// Jitsi Update Timeout needs to be called every 10 seconds to make sure
|
||||||
// call is not ended and is available to web users.
|
// call is not ended and is available to web users.
|
||||||
onConferenceJoined = () => {
|
onConferenceJoined = () => {
|
||||||
|
@ -74,6 +88,8 @@ class JitsiMeetView extends React.Component {
|
||||||
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
||||||
if (this.jitsiTimeout) {
|
if (this.jitsiTimeout) {
|
||||||
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
||||||
|
BackgroundTimer.stopBackgroundTimer();
|
||||||
|
this.jitsiTimeout = null;
|
||||||
}
|
}
|
||||||
this.jitsiTimeout = BackgroundTimer.setInterval(() => {
|
this.jitsiTimeout = BackgroundTimer.setInterval(() => {
|
||||||
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
||||||
|
@ -83,19 +99,25 @@ class JitsiMeetView extends React.Component {
|
||||||
onConferenceTerminated = () => {
|
onConferenceTerminated = () => {
|
||||||
logEvent(events.JM_CONFERENCE_TERMINATE);
|
logEvent(events.JM_CONFERENCE_TERMINATE);
|
||||||
const { navigation } = this.props;
|
const { navigation } = this.props;
|
||||||
if (this.jitsiTimeout) {
|
|
||||||
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
|
||||||
}
|
|
||||||
navigation.pop();
|
navigation.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { userInfo, loading } = this.state;
|
||||||
|
const { route, theme } = this.props;
|
||||||
|
const onlyAudio = route.params?.onlyAudio ?? false;
|
||||||
|
const options = isAndroid ? { url: this.url, userInfo, audioOnly: onlyAudio } : null;
|
||||||
return (
|
return (
|
||||||
<RNJitsiMeetView
|
<>
|
||||||
onConferenceTerminated={this.onConferenceTerminated}
|
<RNJitsiMeetView
|
||||||
onConferenceJoined={this.onConferenceJoined}
|
onConferenceWillJoin={this.onConferenceWillJoin}
|
||||||
style={sharedStyles.container}
|
onConferenceTerminated={this.onConferenceTerminated}
|
||||||
/>
|
onConferenceJoined={this.onConferenceJoined}
|
||||||
|
style={StyleSheet.absoluteFill}
|
||||||
|
options={options}
|
||||||
|
/>
|
||||||
|
{loading ? <ActivityIndicator theme={theme} /> : null}
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,4 +127,4 @@ const mapStateToProps = state => ({
|
||||||
baseUrl: state.server.server
|
baseUrl: state.server.server
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapStateToProps)(JitsiMeetView);
|
export default connect(mapStateToProps)(withTheme(JitsiMeetView));
|
||||||
|
|
|
@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Text, StyleSheet, ScrollView } from 'react-native';
|
import { Text, StyleSheet, ScrollView } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit';
|
||||||
|
|
||||||
import { withTheme } from '../theme';
|
import { withTheme } from '../theme';
|
||||||
import { themes } from '../constants/colors';
|
import { themes } from '../constants/colors';
|
||||||
|
@ -15,9 +16,9 @@ import { LISTENER } from '../containers/Toast';
|
||||||
import EventEmitter from '../utils/events';
|
import EventEmitter from '../utils/events';
|
||||||
import scrollPersistTaps from '../utils/scrollPersistTaps';
|
import scrollPersistTaps from '../utils/scrollPersistTaps';
|
||||||
import { getUserSelector } from '../selectors/login';
|
import { getUserSelector } from '../selectors/login';
|
||||||
import Chips from '../containers/UIKit/MultiSelect/Chips';
|
|
||||||
import Button from '../containers/Button';
|
import Button from '../containers/Button';
|
||||||
import SafeAreaView from '../containers/SafeAreaView';
|
import SafeAreaView from '../containers/SafeAreaView';
|
||||||
|
import { MultiSelect } from '../containers/UIKit/MultiSelect';
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
|
@ -27,6 +28,14 @@ const styles = StyleSheet.create({
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
paddingVertical: 10,
|
paddingVertical: 10,
|
||||||
...sharedStyles.textMedium
|
...sharedStyles.textMedium
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
marginBottom: 10,
|
||||||
|
fontSize: 14,
|
||||||
|
...sharedStyles.textSemibold
|
||||||
|
},
|
||||||
|
multiSelect: {
|
||||||
|
marginBottom: 10
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -37,10 +46,11 @@ Title.propTypes = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const LivechatEditView = ({
|
const LivechatEditView = ({
|
||||||
user, navigation, route, theme
|
user, navigation, route, theme, editOmnichannelContact, editLivechatRoomCustomfields
|
||||||
}) => {
|
}) => {
|
||||||
const [customFields, setCustomFields] = useState({});
|
const [customFields, setCustomFields] = useState({});
|
||||||
const [availableUserTags, setAvailableUserTags] = useState([]);
|
const [availableUserTags, setAvailableUserTags] = useState([]);
|
||||||
|
const [permissions, setPermissions] = useState([]);
|
||||||
|
|
||||||
const params = {};
|
const params = {};
|
||||||
const inputs = {};
|
const inputs = {};
|
||||||
|
@ -54,21 +64,24 @@ const LivechatEditView = ({
|
||||||
const visitorCustomFields = result.customFields
|
const visitorCustomFields = result.customFields
|
||||||
.filter(field => field.visibility !== 'hidden' && field.scope === 'visitor')
|
.filter(field => field.visibility !== 'hidden' && field.scope === 'visitor')
|
||||||
.map(field => ({ [field._id]: (visitor.livechatData && visitor.livechatData[field._id]) || '' }))
|
.map(field => ({ [field._id]: (visitor.livechatData && visitor.livechatData[field._id]) || '' }))
|
||||||
.reduce((ret, field) => ({ [field]: field, ...ret }));
|
.reduce((ret, field) => ({ ...field, ...ret }));
|
||||||
|
|
||||||
const livechatCustomFields = result.customFields
|
const livechatCustomFields = result.customFields
|
||||||
.filter(field => field.visibility !== 'hidden' && field.scope === 'room')
|
.filter(field => field.visibility !== 'hidden' && field.scope === 'room')
|
||||||
.map(field => ({ [field._id]: (livechat.livechatData && livechat.livechatData[field._id]) || '' }))
|
.map(field => ({ [field._id]: (livechat.livechatData && livechat.livechatData[field._id]) || '' }))
|
||||||
.reduce((ret, field) => ({ [field]: field, ...ret }));
|
.reduce((ret, field) => ({ ...field, ...ret }));
|
||||||
|
|
||||||
return setCustomFields({ visitor: visitorCustomFields, livechat: livechatCustomFields });
|
return setCustomFields({ visitor: visitorCustomFields, livechat: livechatCustomFields });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const [tagParam, setTags] = useState(livechat?.tags || []);
|
const [tagParam, setTags] = useState(livechat?.tags || []);
|
||||||
|
const [tagParamSelected, setTagParamSelected] = useState(livechat?.tags || []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTags([...tagParam, ...availableUserTags]);
|
const arr = [...tagParam, ...availableUserTags];
|
||||||
|
const uniqueArray = arr.filter((val, i) => arr.indexOf(val) === i);
|
||||||
|
setTags(uniqueArray);
|
||||||
}, [availableUserTags]);
|
}, [availableUserTags]);
|
||||||
|
|
||||||
const getTagsList = async(agentDepartments) => {
|
const getTagsList = async(agentDepartments) => {
|
||||||
|
@ -115,7 +128,7 @@ const LivechatEditView = ({
|
||||||
roomData.topic = params.topic;
|
roomData.topic = params.topic;
|
||||||
}
|
}
|
||||||
|
|
||||||
roomData.tags = tagParam;
|
roomData.tags = tagParamSelected;
|
||||||
|
|
||||||
roomData.livechatData = {};
|
roomData.livechatData = {};
|
||||||
Object.entries(customFields?.livechat || {}).forEach(([key]) => {
|
Object.entries(customFields?.livechat || {}).forEach(([key]) => {
|
||||||
|
@ -139,9 +152,15 @@ const LivechatEditView = ({
|
||||||
|
|
||||||
const onChangeText = (key, text) => { params[key] = text; };
|
const onChangeText = (key, text) => { params[key] = text; };
|
||||||
|
|
||||||
|
const getPermissions = async() => {
|
||||||
|
const permissionsArray = await RocketChat.hasPermission([editOmnichannelContact, editLivechatRoomCustomfields], livechat.rid);
|
||||||
|
setPermissions(permissionsArray);
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getAgentDepartments();
|
getAgentDepartments();
|
||||||
getCustomFields();
|
getCustomFields();
|
||||||
|
getPermissions();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -162,6 +181,7 @@ const LivechatEditView = ({
|
||||||
onChangeText={text => onChangeText('name', text)}
|
onChangeText={text => onChangeText('name', text)}
|
||||||
onSubmitEditing={() => { inputs.name.focus(); }}
|
onSubmitEditing={() => { inputs.name.focus(); }}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[0]}
|
||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
label={I18n.t('Email')}
|
label={I18n.t('Email')}
|
||||||
|
@ -170,6 +190,7 @@ const LivechatEditView = ({
|
||||||
onChangeText={text => onChangeText('email', text)}
|
onChangeText={text => onChangeText('email', text)}
|
||||||
onSubmitEditing={() => { inputs.phone.focus(); }}
|
onSubmitEditing={() => { inputs.phone.focus(); }}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[0]}
|
||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
label={I18n.t('Phone')}
|
label={I18n.t('Phone')}
|
||||||
|
@ -179,13 +200,14 @@ const LivechatEditView = ({
|
||||||
onSubmitEditing={() => {
|
onSubmitEditing={() => {
|
||||||
const keys = Object.keys(customFields?.visitor || {});
|
const keys = Object.keys(customFields?.visitor || {});
|
||||||
if (keys.length > 0) {
|
if (keys.length > 0) {
|
||||||
const key = keys.pop();
|
const key = keys[0];
|
||||||
inputs[key].focus();
|
inputs[key].focus();
|
||||||
} else {
|
} else {
|
||||||
inputs.topic.focus();
|
inputs.topic.focus();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[0]}
|
||||||
/>
|
/>
|
||||||
{Object.entries(customFields?.visitor || {}).map(([key, value], index, array) => (
|
{Object.entries(customFields?.visitor || {}).map(([key, value], index, array) => (
|
||||||
<TextInput
|
<TextInput
|
||||||
|
@ -195,11 +217,12 @@ const LivechatEditView = ({
|
||||||
onChangeText={text => onChangeText(key, text)}
|
onChangeText={text => onChangeText(key, text)}
|
||||||
onSubmitEditing={() => {
|
onSubmitEditing={() => {
|
||||||
if (array.length - 1 > index) {
|
if (array.length - 1 > index) {
|
||||||
return inputs[array[index + 1]].focus();
|
return inputs[array[index + 1][0]].focus();
|
||||||
}
|
}
|
||||||
inputs.topic.focus();
|
inputs.topic.focus();
|
||||||
}}
|
}}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[0]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
<Title
|
<Title
|
||||||
|
@ -213,35 +236,29 @@ const LivechatEditView = ({
|
||||||
onChangeText={text => onChangeText('topic', text)}
|
onChangeText={text => onChangeText('topic', text)}
|
||||||
onSubmitEditing={() => inputs.tags.focus()}
|
onSubmitEditing={() => inputs.tags.focus()}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[1]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextInput
|
<Text
|
||||||
inputRef={(e) => { inputs.tags = e; }}
|
style={[
|
||||||
label={I18n.t('Tags')}
|
styles.label,
|
||||||
iconRight='add'
|
{ color: themes[theme].titleText }
|
||||||
onIconRightPress={() => {
|
]}
|
||||||
const lastText = inputs.tags._lastNativeText || '';
|
>
|
||||||
if (lastText.length) {
|
{ I18n.t('Tags') }
|
||||||
setTags([...tagParam.filter(t => t !== lastText), lastText]);
|
</Text>
|
||||||
inputs.tags.clear();
|
<MultiSelect
|
||||||
}
|
options={tagParam.map(tag => ({ text: { text: tag }, value: tag }))}
|
||||||
}}
|
onChange={({ value }) => {
|
||||||
onSubmitEditing={() => {
|
setTagParamSelected([...value]);
|
||||||
const keys = Object.keys(customFields?.livechat || {});
|
|
||||||
if (keys.length > 0) {
|
|
||||||
const key = keys.pop();
|
|
||||||
inputs[key].focus();
|
|
||||||
} else {
|
|
||||||
submit();
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
|
placeholder={{ text: I18n.t('Tags') }}
|
||||||
|
value={tagParamSelected}
|
||||||
|
context={BLOCK_CONTEXT.FORM}
|
||||||
|
multiselect
|
||||||
theme={theme}
|
theme={theme}
|
||||||
/>
|
disabled={!permissions[1]}
|
||||||
<Chips
|
inputStyle={styles.multiSelect}
|
||||||
items={tagParam.map(tag => ({ text: { text: tag }, value: tag }))}
|
|
||||||
onSelect={tag => setTags(tagParam.filter(t => t !== tag.value) || [])}
|
|
||||||
style={{ backgroundColor: themes[theme].backgroundColor }}
|
|
||||||
theme={theme}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{Object.entries(customFields?.livechat || {}).map(([key, value], index, array) => (
|
{Object.entries(customFields?.livechat || {}).map(([key, value], index, array) => (
|
||||||
|
@ -257,6 +274,7 @@ const LivechatEditView = ({
|
||||||
submit();
|
submit();
|
||||||
}}
|
}}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
editable={!!permissions[1]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
@ -274,15 +292,19 @@ LivechatEditView.propTypes = {
|
||||||
user: PropTypes.object,
|
user: PropTypes.object,
|
||||||
navigation: PropTypes.object,
|
navigation: PropTypes.object,
|
||||||
route: PropTypes.object,
|
route: PropTypes.object,
|
||||||
theme: PropTypes.string
|
theme: PropTypes.string,
|
||||||
|
editOmnichannelContact: PropTypes.array,
|
||||||
|
editLivechatRoomCustomfields: PropTypes.array
|
||||||
};
|
};
|
||||||
LivechatEditView.navigationOptions = ({
|
LivechatEditView.navigationOptions = ({
|
||||||
title: I18n.t('Livechat_edit')
|
title: I18n.t('Edit')
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
server: state.server.server,
|
server: state.server.server,
|
||||||
user: getUserSelector(state)
|
user: getUserSelector(state),
|
||||||
|
editOmnichannelContact: state.permissions['edit-omnichannel-contact'],
|
||||||
|
editLivechatRoomCustomfields: state.permissions['edit-livechat-room-customfields']
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapStateToProps)(withTheme(LivechatEditView));
|
export default connect(mapStateToProps)(withTheme(LivechatEditView));
|
||||||
|
|
|
@ -55,6 +55,8 @@ class RoomInfoView extends React.Component {
|
||||||
isMasterDetail: PropTypes.bool,
|
isMasterDetail: PropTypes.bool,
|
||||||
jitsiEnabled: PropTypes.bool,
|
jitsiEnabled: PropTypes.bool,
|
||||||
editRoomPermission: PropTypes.array,
|
editRoomPermission: PropTypes.array,
|
||||||
|
editOmnichannelContact: PropTypes.array,
|
||||||
|
editLivechatRoomCustomfields: PropTypes.array,
|
||||||
roles: PropTypes.array
|
roles: PropTypes.array
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +186,9 @@ class RoomInfoView extends React.Component {
|
||||||
|
|
||||||
loadRoom = async() => {
|
loadRoom = async() => {
|
||||||
const { room: roomState } = this.state;
|
const { room: roomState } = this.state;
|
||||||
const { route, editRoomPermission } = this.props;
|
const {
|
||||||
|
route, editRoomPermission, editOmnichannelContact, editLivechatRoomCustomfields
|
||||||
|
} = this.props;
|
||||||
let room = route.params?.room;
|
let room = route.params?.room;
|
||||||
if (room && room.observe) {
|
if (room && room.observe) {
|
||||||
this.roomObservable = room.observe();
|
this.roomObservable = room.observe();
|
||||||
|
@ -204,8 +208,10 @@ class RoomInfoView extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const permissions = await RocketChat.hasPermission([editRoomPermission], room.rid);
|
const permissionToEdit = this.isLivechat ? [editOmnichannelContact, editLivechatRoomCustomfields] : [editRoomPermission];
|
||||||
if (permissions[0]) {
|
|
||||||
|
const permissions = await RocketChat.hasPermission(permissionToEdit, room.rid);
|
||||||
|
if (permissions.some(Boolean)) {
|
||||||
this.setState({ showEdit: true }, () => this.setHeader());
|
this.setState({ showEdit: true }, () => this.setHeader());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -370,6 +376,8 @@ const mapStateToProps = state => ({
|
||||||
isMasterDetail: state.app.isMasterDetail,
|
isMasterDetail: state.app.isMasterDetail,
|
||||||
jitsiEnabled: state.settings.Jitsi_Enabled || false,
|
jitsiEnabled: state.settings.Jitsi_Enabled || false,
|
||||||
editRoomPermission: state.permissions['edit-room'],
|
editRoomPermission: state.permissions['edit-room'],
|
||||||
|
editOmnichannelContact: state.permissions['edit-omnichannel-contact'],
|
||||||
|
editLivechatRoomCustomfields: state.permissions['edit-livechat-room-customfields'],
|
||||||
roles: state.roles
|
roles: state.roles
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -739,7 +739,7 @@ class RoomView extends React.Component {
|
||||||
const { room } = this.state;
|
const { room } = this.state;
|
||||||
if (rid === this.rid) {
|
if (rid === this.rid) {
|
||||||
Navigation.navigate('RoomsListView');
|
Navigation.navigate('RoomsListView');
|
||||||
showErrorAlert(I18n.t('You_were_removed_from_channel', { channel: RocketChat.getRoomTitle(room) }), I18n.t('Oops'));
|
!this.isOmnichannel && showErrorAlert(I18n.t('You_were_removed_from_channel', { channel: RocketChat.getRoomTitle(room) }), I18n.t('Oops'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -786,6 +786,7 @@ class RoomView extends React.Component {
|
||||||
|
|
||||||
if (this.isOmnichannel) {
|
if (this.isOmnichannel) {
|
||||||
await takeInquiry(room._id);
|
await takeInquiry(room._id);
|
||||||
|
this.onJoin();
|
||||||
} else {
|
} else {
|
||||||
const { joinCodeRequired } = room;
|
const { joinCodeRequired } = room;
|
||||||
if (joinCodeRequired) {
|
if (joinCodeRequired) {
|
||||||
|
@ -973,6 +974,7 @@ class RoomView extends React.Component {
|
||||||
onEncryptedPress={this.onEncryptedPress}
|
onEncryptedPress={this.onEncryptedPress}
|
||||||
onDiscussionPress={this.onDiscussionPress}
|
onDiscussionPress={this.onDiscussionPress}
|
||||||
onThreadPress={this.onThreadPress}
|
onThreadPress={this.onThreadPress}
|
||||||
|
onAnswerButtonPress={this.sendMessage}
|
||||||
showAttachment={this.showAttachment}
|
showAttachment={this.showAttachment}
|
||||||
reactionInit={this.onReactionInit}
|
reactionInit={this.onReactionInit}
|
||||||
replyBroadcast={this.replyBroadcast}
|
replyBroadcast={this.replyBroadcast}
|
||||||
|
|
|
@ -637,6 +637,7 @@ class RoomsListView extends React.Component {
|
||||||
try {
|
try {
|
||||||
const db = database.active;
|
const db = database.active;
|
||||||
const result = await RocketChat.toggleRead(isRead, rid);
|
const result = await RocketChat.toggleRead(isRead, rid);
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
const subCollection = db.get('subscriptions');
|
const subCollection = db.get('subscriptions');
|
||||||
await db.action(async() => {
|
await db.action(async() => {
|
||||||
|
@ -644,6 +645,7 @@ class RoomsListView extends React.Component {
|
||||||
const subRecord = await subCollection.find(rid);
|
const subRecord = await subCollection.find(rid);
|
||||||
await subRecord.update((sub) => {
|
await subRecord.update((sub) => {
|
||||||
sub.alert = isRead;
|
sub.alert = isRead;
|
||||||
|
sub.unread = 0;
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log(e);
|
log(e);
|
||||||
|
|
|
@ -1,158 +1,119 @@
|
||||||
import React from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { Switch } from 'react-native';
|
import { Switch } from 'react-native';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { connect } from 'react-redux';
|
|
||||||
import AsyncStorage from '@react-native-community/async-storage';
|
import AsyncStorage from '@react-native-community/async-storage';
|
||||||
|
import { useSelector } from 'react-redux';
|
||||||
|
|
||||||
import { toggleCrashReport as toggleCrashReportAction, toggleAnalyticsEvents as toggleAnalyticsEventsAction } from '../actions/crashReport';
|
|
||||||
import { SWITCH_TRACK_COLOR } from '../constants/colors';
|
import { SWITCH_TRACK_COLOR } from '../constants/colors';
|
||||||
import StatusBar from '../containers/StatusBar';
|
import StatusBar from '../containers/StatusBar';
|
||||||
import * as List from '../containers/List';
|
import * as List from '../containers/List';
|
||||||
import I18n from '../i18n';
|
import I18n from '../i18n';
|
||||||
import { CRASH_REPORT_KEY, ANALYTICS_EVENTS_KEY } from '../lib/rocketchat';
|
import { CRASH_REPORT_KEY, ANALYTICS_EVENTS_KEY } from '../lib/rocketchat';
|
||||||
import {
|
import {
|
||||||
loggerConfig, analytics, logEvent, events
|
logEvent, events, toggleCrashErrorsReport, toggleAnalyticsEventsReport, getReportCrashErrorsValue, getReportAnalyticsEventsValue
|
||||||
} from '../utils/log';
|
} from '../utils/log';
|
||||||
import SafeAreaView from '../containers/SafeAreaView';
|
import SafeAreaView from '../containers/SafeAreaView';
|
||||||
import { isFDroidBuild } from '../constants/environment';
|
import { isFDroidBuild } from '../constants/environment';
|
||||||
import { getUserSelector } from '../selectors/login';
|
|
||||||
|
|
||||||
class SecurityPrivacyView extends React.Component {
|
const SecurityPrivacyView = ({ navigation }) => {
|
||||||
static navigationOptions = () => ({
|
const [crashReportState, setCrashReportState] = useState(getReportCrashErrorsValue());
|
||||||
title: I18n.t('Security_and_privacy')
|
const [analyticsEventsState, setAnalyticsEventsState] = useState(getReportAnalyticsEventsValue());
|
||||||
});
|
|
||||||
|
|
||||||
static propTypes = {
|
const e2eEnabled = useSelector(state => state.settings.E2E_Enable);
|
||||||
navigation: PropTypes.object,
|
|
||||||
allowCrashReport: PropTypes.bool,
|
|
||||||
allowAnalyticsEvents: PropTypes.bool,
|
|
||||||
e2eEnabled: PropTypes.bool,
|
|
||||||
toggleCrashReport: PropTypes.func,
|
|
||||||
toggleAnalyticsEvents: PropTypes.func,
|
|
||||||
user: PropTypes.shape({
|
|
||||||
roles: PropTypes.array,
|
|
||||||
id: PropTypes.string
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
toggleCrashReport = (value) => {
|
useEffect(() => {
|
||||||
|
navigation.setOptions({
|
||||||
|
title: I18n.t('Security_and_privacy')
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const toggleCrashReport = (value) => {
|
||||||
logEvent(events.SE_TOGGLE_CRASH_REPORT);
|
logEvent(events.SE_TOGGLE_CRASH_REPORT);
|
||||||
AsyncStorage.setItem(CRASH_REPORT_KEY, JSON.stringify(value));
|
AsyncStorage.setItem(CRASH_REPORT_KEY, JSON.stringify(value));
|
||||||
const { toggleCrashReport } = this.props;
|
setCrashReportState(value);
|
||||||
toggleCrashReport(value);
|
toggleCrashErrorsReport(value);
|
||||||
if (!isFDroidBuild) {
|
};
|
||||||
loggerConfig.autoNotify = value;
|
|
||||||
if (value) {
|
|
||||||
loggerConfig.clearBeforeSendCallbacks();
|
|
||||||
} else {
|
|
||||||
loggerConfig.registerBeforeSendCallback(() => false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
toggleAnalyticsEvents = (value) => {
|
const toggleAnalyticsEvents = (value) => {
|
||||||
logEvent(events.SE_TOGGLE_ANALYTICS_EVENTS);
|
logEvent(events.SE_TOGGLE_ANALYTICS_EVENTS);
|
||||||
const { toggleAnalyticsEvents } = this.props;
|
|
||||||
AsyncStorage.setItem(ANALYTICS_EVENTS_KEY, JSON.stringify(value));
|
AsyncStorage.setItem(ANALYTICS_EVENTS_KEY, JSON.stringify(value));
|
||||||
toggleAnalyticsEvents(value);
|
setAnalyticsEventsState(value);
|
||||||
analytics().setAnalyticsCollectionEnabled(value);
|
toggleAnalyticsEventsReport(value);
|
||||||
}
|
};
|
||||||
|
|
||||||
navigateToScreen = (screen) => {
|
const navigateToScreen = (screen) => {
|
||||||
logEvent(events[`SP_GO_${ screen.replace('View', '').toUpperCase() }`]);
|
logEvent(events[`SP_GO_${ screen.replace('View', '').toUpperCase() }`]);
|
||||||
const { navigation } = this.props;
|
|
||||||
navigation.navigate(screen);
|
navigation.navigate(screen);
|
||||||
}
|
};
|
||||||
|
|
||||||
renderCrashReportSwitch = () => {
|
return (
|
||||||
const { allowCrashReport } = this.props;
|
<SafeAreaView testID='security-privacy-view'>
|
||||||
return (
|
<StatusBar />
|
||||||
<Switch
|
<List.Container testID='security-privacy-view-list'>
|
||||||
value={allowCrashReport}
|
<List.Section>
|
||||||
trackColor={SWITCH_TRACK_COLOR}
|
<List.Separator />
|
||||||
onValueChange={this.toggleCrashReport}
|
{e2eEnabled
|
||||||
/>
|
? (
|
||||||
);
|
<>
|
||||||
}
|
<List.Item
|
||||||
|
title='E2E_Encryption'
|
||||||
|
showActionIndicator
|
||||||
|
onPress={() => navigateToScreen('E2EEncryptionSecurityView')}
|
||||||
|
testID='security-privacy-view-e2e-encryption'
|
||||||
|
/>
|
||||||
|
<List.Separator />
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
<List.Item
|
||||||
|
title='Screen_lock'
|
||||||
|
showActionIndicator
|
||||||
|
onPress={() => navigateToScreen('ScreenLockConfigView')}
|
||||||
|
testID='security-privacy-view-screen-lock'
|
||||||
|
/>
|
||||||
|
<List.Separator />
|
||||||
|
</List.Section>
|
||||||
|
|
||||||
renderAnalyticsEventsSwitch = () => {
|
{!isFDroidBuild ? (
|
||||||
const { allowAnalyticsEvents } = this.props;
|
<>
|
||||||
return (
|
<List.Section>
|
||||||
<Switch
|
<List.Separator />
|
||||||
value={allowAnalyticsEvents}
|
<List.Item
|
||||||
trackColor={SWITCH_TRACK_COLOR}
|
title='Log_analytics_events'
|
||||||
onValueChange={this.toggleAnalyticsEvents}
|
testID='security-privacy-view-analytics-events'
|
||||||
/>
|
right={() => (
|
||||||
);
|
<Switch
|
||||||
}
|
value={analyticsEventsState}
|
||||||
|
trackColor={SWITCH_TRACK_COLOR}
|
||||||
render() {
|
onValueChange={toggleAnalyticsEvents}
|
||||||
const { e2eEnabled } = this.props;
|
|
||||||
return (
|
|
||||||
<SafeAreaView testID='security-privacy-view'>
|
|
||||||
<StatusBar />
|
|
||||||
<List.Container testID='security-privacy-view-list'>
|
|
||||||
<List.Section>
|
|
||||||
<List.Separator />
|
|
||||||
{e2eEnabled
|
|
||||||
? (
|
|
||||||
<>
|
|
||||||
<List.Item
|
|
||||||
title='E2E_Encryption'
|
|
||||||
showActionIndicator
|
|
||||||
onPress={() => this.navigateToScreen('E2EEncryptionSecurityView')}
|
|
||||||
testID='security-privacy-view-e2e-encryption'
|
|
||||||
/>
|
/>
|
||||||
<List.Separator />
|
)}
|
||||||
</>
|
/>
|
||||||
)
|
<List.Separator />
|
||||||
: null
|
<List.Item
|
||||||
}
|
title='Send_crash_report'
|
||||||
<List.Item
|
testID='security-privacy-view-crash-report'
|
||||||
title='Screen_lock'
|
right={() => (
|
||||||
showActionIndicator
|
<Switch
|
||||||
onPress={() => this.navigateToScreen('ScreenLockConfigView')}
|
value={crashReportState}
|
||||||
testID='security-privacy-view-screen-lock'
|
trackColor={SWITCH_TRACK_COLOR}
|
||||||
/>
|
onValueChange={toggleCrashReport}
|
||||||
<List.Separator />
|
/>
|
||||||
</List.Section>
|
)}
|
||||||
|
/>
|
||||||
|
<List.Separator />
|
||||||
|
<List.Info info='Crash_report_disclaimer' />
|
||||||
|
</List.Section>
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
|
</List.Container>
|
||||||
|
</SafeAreaView>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
{!isFDroidBuild ? (
|
SecurityPrivacyView.propTypes = {
|
||||||
<>
|
navigation: PropTypes.object
|
||||||
<List.Section>
|
};
|
||||||
<List.Separator />
|
|
||||||
<List.Item
|
|
||||||
title='Log_analytics_events'
|
|
||||||
testID='security-privacy-view-analytics-events'
|
|
||||||
right={() => this.renderAnalyticsEventsSwitch()}
|
|
||||||
/>
|
|
||||||
<List.Separator />
|
|
||||||
<List.Item
|
|
||||||
title='Send_crash_report'
|
|
||||||
testID='security-privacy-view-crash-report'
|
|
||||||
right={() => this.renderCrashReportSwitch()}
|
|
||||||
/>
|
|
||||||
<List.Separator />
|
|
||||||
<List.Info info='Crash_report_disclaimer' />
|
|
||||||
</List.Section>
|
|
||||||
</>
|
|
||||||
) : null}
|
|
||||||
</List.Container>
|
|
||||||
</SafeAreaView>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
export default SecurityPrivacyView;
|
||||||
user: getUserSelector(state),
|
|
||||||
allowCrashReport: state.crashReport.allowCrashReport,
|
|
||||||
allowAnalyticsEvents: state.crashReport.allowAnalyticsEvents,
|
|
||||||
e2eEnabled: state.settings.E2E_Enable
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({
|
|
||||||
toggleCrashReport: params => dispatch(toggleCrashReportAction(params)),
|
|
||||||
toggleAnalyticsEvents: params => dispatch(toggleAnalyticsEventsAction(params))
|
|
||||||
});
|
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(SecurityPrivacyView);
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ PODS:
|
||||||
- GoogleUtilities/UserDefaults (6.7.1):
|
- GoogleUtilities/UserDefaults (6.7.1):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- hermes-engine (0.7.2)
|
- hermes-engine (0.7.2)
|
||||||
- JitsiMeetSDK (2.10.2)
|
- JitsiMeetSDK (3.6.0)
|
||||||
- KeyCommands (2.0.3):
|
- KeyCommands (2.0.3):
|
||||||
- React
|
- React
|
||||||
- libevent (2.1.12)
|
- libevent (2.1.12)
|
||||||
|
@ -403,8 +403,8 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-document-picker (5.2.0):
|
- react-native-document-picker (5.2.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-jitsi-meet (2.4.0):
|
- react-native-jitsi-meet (3.6.0):
|
||||||
- JitsiMeetSDK
|
- JitsiMeetSDK (= 3.6.0)
|
||||||
- React
|
- React
|
||||||
- react-native-mmkv-storage (0.3.5):
|
- react-native-mmkv-storage (0.3.5):
|
||||||
- MMKV (= 1.2.1)
|
- MMKV (= 1.2.1)
|
||||||
|
@ -413,8 +413,8 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-notifications (2.1.7):
|
- react-native-notifications (2.1.7):
|
||||||
- React
|
- React
|
||||||
- react-native-orientation-locker (1.3.1):
|
- react-native-orientation-locker (1.1.8):
|
||||||
- React-Core
|
- React
|
||||||
- react-native-restart (0.0.22):
|
- react-native-restart (0.0.22):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-safe-area-context (3.2.0):
|
- react-native-safe-area-context (3.2.0):
|
||||||
|
@ -920,7 +920,7 @@ EXTERNAL SOURCES:
|
||||||
|
|
||||||
CHECKOUT OPTIONS:
|
CHECKOUT OPTIONS:
|
||||||
JitsiMeetSDK:
|
JitsiMeetSDK:
|
||||||
:commit: 34660a3a34798fe28fcfd340f9ad30184b9fa0d1
|
:commit: 23797290da02324c09998a63781cd1fe0047211d
|
||||||
:git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git
|
:git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
|
@ -960,7 +960,7 @@ SPEC CHECKSUMS:
|
||||||
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
||||||
GoogleUtilities: e121a3867449ce16b0e35ddf1797ea7a389ffdf2
|
GoogleUtilities: e121a3867449ce16b0e35ddf1797ea7a389ffdf2
|
||||||
hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f
|
hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f
|
||||||
JitsiMeetSDK: ef6dd5cfa6d9badf009c7dba1a2c1365bfaae6b0
|
JitsiMeetSDK: 476329f72a866f714d2802bafe1729de6d644ccf
|
||||||
KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e
|
KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e
|
||||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||||
|
@ -986,11 +986,11 @@ SPEC CHECKSUMS:
|
||||||
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
|
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
|
||||||
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
|
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
|
||||||
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
|
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
|
||||||
react-native-jitsi-meet: f2407aca85566e031ee7b222e497ee5ecb6623de
|
react-native-jitsi-meet: 3e3ac5d0445091154119f94342efd55c8b1124ce
|
||||||
react-native-mmkv-storage: 48729fe90e850ef2fdc9d3714b7030c7c51d82b0
|
react-native-mmkv-storage: 48729fe90e850ef2fdc9d3714b7030c7c51d82b0
|
||||||
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
||||||
react-native-notifications: ee8fd739853e72694f3af8b374c8ccb106b7b227
|
react-native-notifications: ee8fd739853e72694f3af8b374c8ccb106b7b227
|
||||||
react-native-orientation-locker: 998c0744e26624407dac068c04c605b4af7304a2
|
react-native-orientation-locker: f0ca1a8e5031dab6b74bfb4ab33a17ed2c2fcb0d
|
||||||
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
|
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
|
||||||
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
||||||
react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876
|
react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "react-native-orientation-locker",
|
"name": "react-native-orientation-locker",
|
||||||
"version": "1.3.1",
|
"version": "1.1.8",
|
||||||
"summary": "A react-native module that can listen on orientation changing of device",
|
"summary": "A react-native module that can listen on orientation changing of device",
|
||||||
"description": "A react-native module that can listen on orientation changing of device, get current orientation, lock to preferred orientation.",
|
"description": "A react-native module that can listen on orientation changing of device, get current orientation, lock to preferred orientation.",
|
||||||
"authors": "Wonday",
|
"authors": "Wonday",
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
"homepage": "https://github.com/wonday/react-native-orientation-locker",
|
"homepage": "https://github.com/wonday/react-native-orientation-locker",
|
||||||
"source": {
|
"source": {
|
||||||
"git": "https://github.com/wonday/react-native-orientation-locker.git",
|
"git": "https://github.com/wonday/react-native-orientation-locker.git",
|
||||||
"tag": "v1.3.1"
|
"tag": "v1.1.8"
|
||||||
},
|
},
|
||||||
"requires_arc": true,
|
"requires_arc": true,
|
||||||
"platforms": {
|
"platforms": {
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
],
|
],
|
||||||
"source_files": "iOS/**/*.{h,m}",
|
"source_files": "iOS/**/*.{h,m}",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"React-Core": [
|
"React": [
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ PODS:
|
||||||
- GoogleUtilities/UserDefaults (6.7.1):
|
- GoogleUtilities/UserDefaults (6.7.1):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- hermes-engine (0.7.2)
|
- hermes-engine (0.7.2)
|
||||||
- JitsiMeetSDK (2.10.2)
|
- JitsiMeetSDK (3.6.0)
|
||||||
- KeyCommands (2.0.3):
|
- KeyCommands (2.0.3):
|
||||||
- React
|
- React
|
||||||
- libevent (2.1.12)
|
- libevent (2.1.12)
|
||||||
|
@ -403,8 +403,8 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-document-picker (5.2.0):
|
- react-native-document-picker (5.2.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-jitsi-meet (2.4.0):
|
- react-native-jitsi-meet (3.6.0):
|
||||||
- JitsiMeetSDK
|
- JitsiMeetSDK (= 3.6.0)
|
||||||
- React
|
- React
|
||||||
- react-native-mmkv-storage (0.3.5):
|
- react-native-mmkv-storage (0.3.5):
|
||||||
- MMKV (= 1.2.1)
|
- MMKV (= 1.2.1)
|
||||||
|
@ -413,8 +413,8 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-notifications (2.1.7):
|
- react-native-notifications (2.1.7):
|
||||||
- React
|
- React
|
||||||
- react-native-orientation-locker (1.3.1):
|
- react-native-orientation-locker (1.1.8):
|
||||||
- React-Core
|
- React
|
||||||
- react-native-restart (0.0.22):
|
- react-native-restart (0.0.22):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-safe-area-context (3.2.0):
|
- react-native-safe-area-context (3.2.0):
|
||||||
|
@ -920,7 +920,7 @@ EXTERNAL SOURCES:
|
||||||
|
|
||||||
CHECKOUT OPTIONS:
|
CHECKOUT OPTIONS:
|
||||||
JitsiMeetSDK:
|
JitsiMeetSDK:
|
||||||
:commit: 34660a3a34798fe28fcfd340f9ad30184b9fa0d1
|
:commit: 23797290da02324c09998a63781cd1fe0047211d
|
||||||
:git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git
|
:git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
|
@ -960,7 +960,7 @@ SPEC CHECKSUMS:
|
||||||
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
||||||
GoogleUtilities: e121a3867449ce16b0e35ddf1797ea7a389ffdf2
|
GoogleUtilities: e121a3867449ce16b0e35ddf1797ea7a389ffdf2
|
||||||
hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f
|
hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f
|
||||||
JitsiMeetSDK: ef6dd5cfa6d9badf009c7dba1a2c1365bfaae6b0
|
JitsiMeetSDK: 476329f72a866f714d2802bafe1729de6d644ccf
|
||||||
KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e
|
KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e
|
||||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||||
|
@ -986,11 +986,11 @@ SPEC CHECKSUMS:
|
||||||
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
|
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
|
||||||
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
|
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
|
||||||
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
|
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
|
||||||
react-native-jitsi-meet: f2407aca85566e031ee7b222e497ee5ecb6623de
|
react-native-jitsi-meet: 3e3ac5d0445091154119f94342efd55c8b1124ce
|
||||||
react-native-mmkv-storage: 48729fe90e850ef2fdc9d3714b7030c7c51d82b0
|
react-native-mmkv-storage: 48729fe90e850ef2fdc9d3714b7030c7c51d82b0
|
||||||
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
||||||
react-native-notifications: ee8fd739853e72694f3af8b374c8ccb106b7b227
|
react-native-notifications: ee8fd739853e72694f3af8b374c8ccb106b7b227
|
||||||
react-native-orientation-locker: 998c0744e26624407dac068c04c605b4af7304a2
|
react-native-orientation-locker: f0ca1a8e5031dab6b74bfb4ab33a17ed2c2fcb0d
|
||||||
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
|
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
|
||||||
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
||||||
react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876
|
react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,8 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES
|
APPLICATION_EXTENSION_API_ONLY = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JitsiMeetSDK
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JitsiMeetSDK
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks"
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES
|
APPLICATION_EXTENSION_API_ONLY = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JitsiMeetSDK
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JitsiMeetSDK
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks"
|
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||||
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|
|
@ -175,15 +175,15 @@ code_sign_if_enabled() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework"
|
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework"
|
|
||||||
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework"
|
||||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
||||||
fi
|
fi
|
||||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework"
|
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework"
|
|
||||||
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework"
|
||||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
||||||
fi
|
fi
|
||||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -175,15 +175,15 @@ code_sign_if_enabled() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework"
|
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework"
|
|
||||||
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework"
|
||||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
||||||
fi
|
fi
|
||||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework"
|
|
||||||
install_framework "${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework"
|
|
||||||
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
install_framework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework"
|
||||||
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework"
|
||||||
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework"
|
||||||
fi
|
fi
|
||||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES
|
APPLICATION_EXTENSION_API_ONLY = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet"
|
||||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES
|
APPLICATION_EXTENSION_API_ONLY = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JitsiMeetSDK/Frameworks" "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet"
|
||||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker"
|
||||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/libevent" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker"
|
||||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap"
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
|
|
@ -1179,16 +1179,16 @@
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh",
|
||||||
"${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework",
|
|
||||||
"${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework",
|
|
||||||
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework/WebRTC",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeet.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -1225,16 +1225,16 @@
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||||
"${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework",
|
|
||||||
"${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework",
|
|
||||||
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework/WebRTC",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeet.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -1726,7 +1726,7 @@
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
MARKETING_VERSION = 4.19.0;
|
MARKETING_VERSION = 4.20.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
||||||
|
@ -1763,7 +1763,7 @@
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
MARKETING_VERSION = 4.19.0;
|
MARKETING_VERSION = 4.20.0;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>4.19.0</string>
|
<string>4.20.0</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>4.19.0</string>
|
<string>4.20.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>KeychainGroup</key>
|
<key>KeychainGroup</key>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "rocket-chat-reactnative",
|
"name": "rocket-chat-reactnative",
|
||||||
"version": "4.19.0",
|
"version": "4.20.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-native start",
|
"start": "react-native start",
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
"react-native-navigation-bar-color": "2.0.1",
|
"react-native-navigation-bar-color": "2.0.1",
|
||||||
"react-native-notifications": "2.1.7",
|
"react-native-notifications": "2.1.7",
|
||||||
"react-native-notifier": "1.6.1",
|
"react-native-notifier": "1.6.1",
|
||||||
"react-native-orientation-locker": "1.3.1",
|
"react-native-orientation-locker": "1.1.8",
|
||||||
"react-native-picker-select": "^8.0.4",
|
"react-native-picker-select": "^8.0.4",
|
||||||
"react-native-platform-touchable": "1.1.1",
|
"react-native-platform-touchable": "1.1.1",
|
||||||
"react-native-popover-view": "4.0.1",
|
"react-native-popover-view": "4.0.1",
|
||||||
|
@ -141,7 +141,7 @@
|
||||||
"@storybook/react-native": "5.3.25",
|
"@storybook/react-native": "5.3.25",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
"axios": "0.21.1",
|
"axios": "0.21.1",
|
||||||
"babel-jest": "27.0.2",
|
"babel-jest": "^27.0.6",
|
||||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||||
"codecov": "3.8.2",
|
"codecov": "3.8.2",
|
||||||
"detox": "18.17.0",
|
"detox": "18.17.0",
|
||||||
|
@ -152,7 +152,7 @@
|
||||||
"eslint-plugin-react-native": "3.8.1",
|
"eslint-plugin-react-native": "3.8.1",
|
||||||
"husky": "^6.0.0",
|
"husky": "^6.0.0",
|
||||||
"identity-obj-proxy": "^3.0.0",
|
"identity-obj-proxy": "^3.0.0",
|
||||||
"jest": "^26.6.3",
|
"jest": "^27.0.6",
|
||||||
"jest-cli": "^27.0.6",
|
"jest-cli": "^27.0.6",
|
||||||
"metro-react-native-babel-preset": "^0.64.0",
|
"metro-react-native-babel-preset": "^0.64.0",
|
||||||
"mocha": "9.0.1",
|
"mocha": "9.0.1",
|
||||||
|
|
|
@ -854,3 +854,32 @@ stories.add('Ignored', () => (
|
||||||
stories.add('Custom style', () => (
|
stories.add('Custom style', () => (
|
||||||
<Message msg='Message' style={[styles.normalize, { backgroundColor: '#ddd' }]} />
|
<Message msg='Message' style={[styles.normalize, { backgroundColor: '#ddd' }]} />
|
||||||
));
|
));
|
||||||
|
|
||||||
|
stories.add('Show a button as attachment', () => (
|
||||||
|
<Message
|
||||||
|
attachments={[{
|
||||||
|
text: 'Test Button',
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
text: 'Text button',
|
||||||
|
msg: 'Response message',
|
||||||
|
msg_in_chat_window: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
|
||||||
|
stories.add('Thumbnail from server', () => (
|
||||||
|
<Message
|
||||||
|
msg='this is a thumbnail'
|
||||||
|
attachments={[{
|
||||||
|
text: 'Image text',
|
||||||
|
thumb_url: 'https://images-na.ssl-images-amazon.com/images/I/71jKxPAMFbL._AC_SL1500_.jpg',
|
||||||
|
title: 'Title',
|
||||||
|
title_link: 'https://github.com/RocketChat/Rocket.Chat.ReactNative/pull/2975'
|
||||||
|
}]}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import './MessageBody';
|
||||||
import '../../app/containers/BackgroundContainer/index.stories.js';
|
import '../../app/containers/BackgroundContainer/index.stories.js';
|
||||||
import '../../app/containers/RoomHeader/RoomHeader.stories.js';
|
import '../../app/containers/RoomHeader/RoomHeader.stories.js';
|
||||||
import '../../app/views/RoomView/LoadMore/LoadMore.stories';
|
import '../../app/views/RoomView/LoadMore/LoadMore.stories';
|
||||||
|
import '../../app/containers/TextInput.stories';
|
||||||
|
|
||||||
// Change here to see themed storybook
|
// Change here to see themed storybook
|
||||||
export const theme = 'light';
|
export const theme = 'light';
|
||||||
|
|
Loading…
Reference in New Issue