[NEW] Room Loading(#372)

<!-- INSTRUCTION: Keep the line below to notify all core developers about this new PR -->
@RocketChat/ReactNative

<!-- INSTRUCTION: Inform the issue number that this PR closes, or remove the line below -->

<!-- INSTRUCTION: Tell us more about your PR with screen shots if you can -->
This commit is contained in:
Diego Mello 2018-07-18 17:34:59 -03:00 committed by Guilherme Gazzo
parent 2e245e4d7c
commit 53ceaf858b
28 changed files with 1260 additions and 1935 deletions

View File

@ -1,6 +1,6 @@
{ {
"presets": ["react-native"], "presets": ["react-native"],
"plugins": ["transform-decorators-legacy"], "plugins": [["@babel/plugin-proposal-decorators", { "legacy": true }]],
"env": { "env": {
"production": { "production": {
"plugins": ["transform-remove-console"] "plugins": ["transform-remove-console"]

View File

@ -48,9 +48,7 @@ exports[`render channel 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -88,9 +86,7 @@ exports[`render channel 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -112,8 +108,6 @@ exports[`render channel 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -131,8 +125,6 @@ exports[`render channel 1`] = `
general general
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -213,9 +205,7 @@ exports[`render no icon 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -253,9 +243,7 @@ exports[`render no icon 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -277,8 +265,6 @@ exports[`render no icon 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -296,8 +282,6 @@ exports[`render no icon 1`] = `
name name
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -378,9 +362,7 @@ exports[`render private group 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -418,9 +400,7 @@ exports[`render private group 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -442,8 +422,6 @@ exports[`render private group 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -461,8 +439,6 @@ exports[`render private group 1`] = `
private-group private-group
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -544,9 +520,7 @@ exports[`render unread +999 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -646,9 +620,7 @@ exports[`render unread +999 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -670,8 +642,6 @@ exports[`render unread +999 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -689,8 +659,6 @@ exports[`render unread +999 1`] = `
name name
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -718,9 +686,6 @@ exports[`render unread +999 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -794,9 +759,7 @@ exports[`render unread 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -896,9 +859,7 @@ exports[`render unread 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -920,8 +881,6 @@ exports[`render unread 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -939,8 +898,6 @@ exports[`render unread 1`] = `
name name
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -968,9 +925,6 @@ exports[`render unread 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -1044,9 +998,7 @@ exports[`renders correctly 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1146,9 +1098,7 @@ exports[`renders correctly 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1170,8 +1120,6 @@ exports[`renders correctly 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1189,8 +1137,6 @@ exports[`renders correctly 1`] = `
name name
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={

View File

@ -21,9 +21,7 @@ exports[`Storyshots Avatar avatar 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -95,9 +93,7 @@ exports[`Storyshots Avatar avatar 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -169,9 +165,7 @@ exports[`Storyshots Avatar avatar 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -243,9 +237,7 @@ exports[`Storyshots Avatar avatar 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -352,9 +344,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -454,9 +444,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -478,8 +466,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -497,8 +483,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
rocket.cat rocket.cat
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -574,9 +558,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -676,9 +658,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -700,8 +680,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -721,8 +699,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
rocket.cat rocket.cat
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -800,9 +776,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -902,9 +876,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -926,8 +898,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -945,8 +915,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
rocket.cat rocket.cat
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -974,9 +942,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -1045,9 +1010,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1147,9 +1110,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1171,8 +1132,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1192,8 +1151,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1223,9 +1180,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -1294,9 +1248,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1396,9 +1348,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1420,8 +1370,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1439,8 +1387,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1468,9 +1414,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -1539,9 +1482,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1641,9 +1582,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1665,8 +1604,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1684,8 +1621,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1713,9 +1648,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -1784,9 +1716,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1886,9 +1816,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -1910,8 +1838,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1929,8 +1855,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -1958,9 +1882,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -2029,9 +1950,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2131,9 +2050,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2155,8 +2072,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2174,8 +2089,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2203,9 +2116,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail"
style={ style={
Object { Object {
"alignItems": "center", "alignItems": "center",
@ -2274,9 +2184,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2376,9 +2284,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2400,8 +2306,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2419,8 +2323,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
W W
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2496,9 +2398,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2598,9 +2498,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2622,8 +2520,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2641,8 +2537,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
WW WW
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2718,9 +2612,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2820,9 +2712,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
} }
> >
<Text <Text
accessible={true}
allowFontScaling={false} allowFontScaling={false}
ellipsizeMode="tail"
style={ style={
Array [ Array [
Object { Object {
@ -2844,8 +2734,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={
@ -2863,8 +2751,6 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
</Text> </Text>
<Text <Text
accessible={true}
allowFontScaling={true}
ellipsizeMode="tail" ellipsizeMode="tail"
numberOfLines={1} numberOfLines={1}
style={ style={

View File

@ -104,6 +104,7 @@ android {
} }
missingDimensionStrategy "RNN.reactNativeVersion", "reactNative55" missingDimensionStrategy "RNN.reactNativeVersion", "reactNative55"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
multiDexEnabled true
} }
compileOptions { compileOptions {
@ -200,8 +201,9 @@ dependencies {
implementation 'com.android.support:customtabs:27.1.0' implementation 'com.android.support:customtabs:27.1.0'
implementation 'com.android.support:design:27.1.0' implementation 'com.android.support:design:27.1.0'
implementation "com.facebook.react:react-native:+" // From node_modules implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.facebook.fresco:fresco:1.7.1' implementation 'com.facebook.fresco:animated-gif:1.9.0'
implementation 'com.facebook.fresco:animated-gif:1.7.1' implementation 'com.facebook.fresco:animated-webp:1.9.0'
implementation 'com.facebook.fresco:webpsupport:1.9.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.9.2@aar') { implementation('com.crashlytics.sdk.android:crashlytics:2.9.2@aar') {
transitive = true; transitive = true;
} }

View File

@ -32,3 +32,15 @@ allprojects {
} }
} }
} }
subprojects {
afterEvaluate {
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
targetSdkVersion 27
}
}
}
}

View File

View File

@ -1,7 +1,6 @@
import React from 'react'; import React from 'react';
import { ViewPropTypes } from 'react-native'; import { ViewPropTypes, Image } from 'react-native';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import FastImage from 'react-native-fast-image';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
@connect(state => ({ @connect(state => ({
@ -19,7 +18,7 @@ export default class CustomEmoji extends React.Component {
render() { render() {
const { baseUrl, emoji, style } = this.props; const { baseUrl, emoji, style } = this.props;
return ( return (
<FastImage <Image
style={style} style={style}
source={{ uri: `${ baseUrl }/emoji-custom/${ encodeURIComponent(emoji.content || emoji.name) }.${ emoji.extension }` }} source={{ uri: `${ baseUrl }/emoji-custom/${ encodeURIComponent(emoji.content || emoji.name) }.${ emoji.extension }` }}
/> />

View File

@ -53,8 +53,8 @@ export default class Markdown extends React.Component {
</Text> </Text>
), ),
emoji: (node) => { emoji: (node) => {
if (node.children && node.children.length && node.children[0].children && node.children[0].children.length) { if (node.children && node.children.length && node.children[0].content) {
const { content } = node.children[0].children[0]; const { content } = node.children[0];
const emojiExtension = customEmojis[content]; const emojiExtension = customEmojis[content];
if (emojiExtension) { if (emojiExtension) {
const emoji = { extension: emojiExtension, content }; const emoji = { extension: emojiExtension, content };
@ -64,6 +64,7 @@ export default class Markdown extends React.Component {
} }
return null; return null;
}, },
blocklink: () => {},
...rules ...rules
}} }}
style={{ style={{

View File

@ -43,7 +43,7 @@ export default function(md) {
const { delimiters } = state; const { delimiters } = state;
const max = delimiters.length; const max = delimiters.length;
for (const i = 0; i < max; i++) { // eslint-disable-line for (let i = 0; i < max; i += 1) {
startDelim = delimiters[i]; startDelim = delimiters[i];
// : // :

View File

@ -212,7 +212,7 @@ export default class Message extends React.Component {
} }
return ( return (
<View style={styles.flex}> <View style={[styles.flex, { marginTop: 5 }]}>
<Avatar <Avatar
style={styles.avatar} style={styles.avatar}
text={item.avatar ? '' : username} text={item.avatar ? '' : username}
@ -281,7 +281,6 @@ export default class Message extends React.Component {
renderReaction = (reaction) => { renderReaction = (reaction) => {
const reacted = reaction.usernames.findIndex(item => item.value === this.props.user.username) !== -1; const reacted = reaction.usernames.findIndex(item => item.value === this.props.user.username) !== -1;
const reactedContainerStyle = reacted && styles.reactedContainer; const reactedContainerStyle = reacted && styles.reactedContainer;
const reactedCount = reacted && styles.reactedCountText;
return ( return (
<TouchableOpacity <TouchableOpacity
onPress={() => this.onReactionPress(reaction.emoji)} onPress={() => this.onReactionPress(reaction.emoji)}
@ -295,7 +294,7 @@ export default class Message extends React.Component {
standardEmojiStyle={styles.reactionEmoji} standardEmojiStyle={styles.reactionEmoji}
customEmojiStyle={styles.reactionCustomEmoji} customEmojiStyle={styles.reactionCustomEmoji}
/> />
<Text style={[styles.reactionCount, reactedCount]}>{ reaction.usernames.length }</Text> <Text style={styles.reactionCount}>{ reaction.usernames.length }</Text>
</View> </View>
</TouchableOpacity> </TouchableOpacity>
); );
@ -312,9 +311,9 @@ export default class Message extends React.Component {
onPress={() => this.props.toggleReactionPicker(this.parseMessage())} onPress={() => this.props.toggleReactionPicker(this.parseMessage())}
key='message-add-reaction' key='message-add-reaction'
testID='message-add-reaction' testID='message-add-reaction'
style={styles.reactionContainer} style={[styles.reactionContainer, styles.addReactionContainer]}
> >
<Icon name='insert-emoticon' color='#aaaaaa' size={15} /> <Icon name='insert-emoticon' color='#1D74F5' size={18} />
</TouchableOpacity> </TouchableOpacity>
</View> </View>
); );

View File

@ -42,43 +42,42 @@ export default StyleSheet.create({
reactionsContainer: { reactionsContainer: {
flexDirection: 'row', flexDirection: 'row',
flexWrap: 'wrap', flexWrap: 'wrap',
marginTop: 6 marginTop: 10
}, },
reactionContainer: { reactionContainer: {
flexDirection: 'row', flexDirection: 'row',
justifyContent: 'center', justifyContent: 'center',
alignItems: 'center', alignItems: 'center',
padding: 3, paddingHorizontal: 10,
borderWidth: 1, paddingVertical: 5,
borderColor: '#cccccc',
borderRadius: 4, borderRadius: 4,
marginRight: 5, marginRight: 10,
marginBottom: 5, marginBottom: 10,
height: 23, maxHeight: 28,
width: 35 backgroundColor: '#E8F2FF'
},
addReactionContainer: {
paddingHorizontal: 15
}, },
reactionCount: { reactionCount: {
fontSize: 12, fontSize: 14,
marginLeft: 2, marginLeft: 3,
fontWeight: '600', fontWeight: '600',
color: '#aaaaaa' color: '#1D74F5'
}, },
reactionEmoji: { reactionEmoji: {
fontSize: 12 fontSize: 14
}, },
reactionCustomEmoji: { reactionCustomEmoji: {
width: 15, width: 20,
height: 15 height: 20
}, },
avatar: { avatar: {
marginRight: 10 marginRight: 10
}, },
reactedContainer: { reactedContainer: {
borderColor: '#bde1fe', borderWidth: 0,
backgroundColor: '#f3f9ff' backgroundColor: '#D1DAE6'
},
reactedCountText: {
color: '#4fb0fc'
}, },
errorIcon: { errorIcon: {
padding: 10, padding: 10,

View File

@ -39,7 +39,7 @@ export default async function() {
return new Promise(async(resolve, reject) => { return new Promise(async(resolve, reject) => {
try { try {
// eslint-disable-next-line // eslint-disable-next-line
const { subscriptions, rooms } = await (false && this.ddp.status ? getRoomDpp.apply(this) : getRoomRest.apply(this)); const { subscriptions, rooms } = await (this.ddp.status ? getRoomDpp.apply(this) : getRoomRest.apply(this));
const data = rooms.map(room => ({ room, sub: database.objects('subscriptions').filtered('rid == $0', room._id) })); const data = rooms.map(room => ({ room, sub: database.objects('subscriptions').filtered('rid == $0', room._id) }));

View File

@ -18,9 +18,9 @@ export default (msg) => {
msg.reactions = msg.reactions || []; msg.reactions = msg.reactions || [];
// TODO: api problems // TODO: api problems
if (Array.isArray(msg.reactions)) { if (Array.isArray(msg.reactions)) {
msg.reactions = msg.reactions.map((value, key) => ({ teste: 1, emoji: key, usernames: value.usernames.map(username => ({ value: username })) })); msg.reactions = msg.reactions.map((value, key) => ({ emoji: key, usernames: value.usernames.map(username => ({ value: username })) }));
} else { } else {
msg.reactions = Object.keys(msg.reactions).map(key => ({ teste: 1, emoji: key, usernames: msg.reactions[key].usernames.map(username => ({ value: username })) })); msg.reactions = Object.keys(msg.reactions).map(key => ({ emoji: key, usernames: msg.reactions[key].usernames.map(username => ({ value: username })) }));
} }
msg.urls = msg.urls ? parseUrls(msg.urls) : []; msg.urls = msg.urls ? parseUrls(msg.urls) : [];
msg._updatedAt = new Date(); msg._updatedAt = new Date();

View File

@ -37,7 +37,8 @@ export default async function loadMessagesForRoom(...args) {
return new Promise(async(resolve, reject) => { return new Promise(async(resolve, reject) => {
try { try {
// eslint-disable-next-line // eslint-disable-next-line
const data = (await (false && this.ddp.status ? loadMessagesForRoomDDP.call(this, ...args) : loadMessagesForRoomRest.call(this, ...args))).map(buildMessage); const data = (await (this.ddp.status ? loadMessagesForRoomDDP.call(this, ...args) : loadMessagesForRoomRest.call(this, ...args))).map(buildMessage);
if (data && data.length) { if (data && data.length) {
InteractionManager.runAfterInteractions(() => { InteractionManager.runAfterInteractions(() => {
db.write(() => data.forEach(message => db.create('messages', message, true))); db.write(() => data.forEach(message => db.create('messages', message, true)));

View File

@ -43,7 +43,7 @@ export default async function(...args) {
return new Promise(async(resolve, reject) => { return new Promise(async(resolve, reject) => {
try { try {
// eslint-disable-next-line // eslint-disable-next-line
const data = (await (false && this.ddp.status ? loadMissedMessagesDDP.call(this, ...args) : loadMissedMessagesRest.call(this, ...args))); const data = (await (this.ddp.status ? loadMissedMessagesDDP.call(this, ...args) : loadMissedMessagesRest.call(this, ...args)));
if (data) { if (data) {
data.forEach(buildMessage); data.forEach(buildMessage);

View File

@ -20,7 +20,7 @@ export default async function readMessages(rid) {
const { database: db } = database; const { database: db } = database;
try { try {
// eslint-disable-next-line // eslint-disable-next-line
const data = await (false && this.ddp.status ? readMessagesDDP.call(this, rid) : readMessagesREST.call(this, rid)); const data = await (this.ddp.status ? readMessagesDDP.call(this, rid) : readMessagesREST.call(this, rid));
const [subscription] = db.objects('subscriptions').filtered('rid = $0', rid); const [subscription] = db.objects('subscriptions').filtered('rid = $0', rid);
db.write(() => { db.write(() => {
subscription.open = true; subscription.open = true;

View File

@ -46,7 +46,7 @@ function sendMessageByDDP(message) {
export async function _sendMessageCall(message) { export async function _sendMessageCall(message) {
try { try {
// eslint-disable-next-line // eslint-disable-next-line
const data = await (false && this.ddp.status ? sendMessageByDDP.call(this, message) : sendMessageByRest.call(this, message)); const data = await (this.ddp.status ? sendMessageByDDP.call(this, message) : sendMessageByRest.call(this, message));
return data; return data;
} catch (e) { } catch (e) {
database.write(() => { database.write(() => {

View File

@ -18,7 +18,7 @@ const styles = StyleSheet.create({
paddingHorizontal: 16, paddingHorizontal: 16,
paddingVertical: 12, paddingVertical: 12,
alignItems: 'center', alignItems: 'center',
borderBottomWidth: 0.5, borderBottomWidth: StyleSheet.hairlineWidth,
borderBottomColor: '#ddd' borderBottomColor: '#ddd'
}, },
number: { number: {

View File

@ -74,7 +74,7 @@ export class List extends React.Component {
onEndReached={() => this.props.onEndReached(this.data[this.data.length - 1])} onEndReached={() => this.props.onEndReached(this.data[this.data.length - 1])}
dataSource={this.dataSource} dataSource={this.dataSource}
renderRow={(item, previousItem) => this.props.renderRow(item, previousItem)} renderRow={(item, previousItem) => this.props.renderRow(item, previousItem)}
initialListSize={20} initialListSize={1}
pageSize={20} pageSize={20}
testID='room-view-messages' testID='room-view-messages'
{...scrollPersistTaps} {...scrollPersistTaps}

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Text, View, LayoutAnimation } from 'react-native'; import { Text, View, LayoutAnimation, ActivityIndicator } from 'react-native';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import equal from 'deep-equal'; import equal from 'deep-equal';
@ -63,7 +63,7 @@ export default class RoomView extends LoggedView {
this.rid = props.rid; this.rid = props.rid;
this.rooms = database.objects('subscriptions').filtered('rid = $0', this.rid); this.rooms = database.objects('subscriptions').filtered('rid = $0', this.rid);
this.state = { this.state = {
loaded: true, loaded: false,
joined: typeof props.rid === 'undefined', joined: typeof props.rid === 'undefined',
room: {}, room: {},
end: false end: false
@ -93,6 +93,7 @@ export default class RoomView extends LoggedView {
side: 'left', side: 'left',
enabled: false enabled: false
}); });
this.setState({ loaded: true });
} }
shouldComponentUpdate(nextProps, nextState) { shouldComponentUpdate(nextProps, nextState) {
return !(equal(this.props, nextProps) && equal(this.state, nextState) && this.state.room.ro === nextState.room.ro); return !(equal(this.props, nextProps) && equal(this.state, nextState) && this.state.room.ro === nextState.room.ro);
@ -175,14 +176,16 @@ export default class RoomView extends LoggedView {
updateRoom = async() => { updateRoom = async() => {
if (this.rooms.length > 0) { if (this.rooms.length > 0) {
const { room: prevRoom } = this.state; const { room: prevRoom } = this.state;
await this.setState({ room: JSON.parse(JSON.stringify(this.rooms[0])) }); const room = JSON.parse(JSON.stringify(this.rooms[0]));
this.setState({ room });
if (!prevRoom.rid) { if (!prevRoom.rid) {
this.props.navigator.setTitle({ title: this.state.room.name }); this.props.navigator.setTitle({ title: room.name });
await this.props.openRoom({ this.props.openRoom({
...this.state.room ...room
}); });
if (this.state.room.alert || this.state.room.unread || this.state.room.userMentions) { if (room.alert || room.unread || room.userMentions) {
this.props.setLastOpen(this.state.room.ls); this.props.setLastOpen(room.ls);
} else { } else {
this.props.setLastOpen(null); this.props.setLastOpen(null);
} }
@ -273,9 +276,12 @@ export default class RoomView extends LoggedView {
} }
return <Text style={styles.loadingMore}>{I18n.t('Loading_messages_ellipsis')}</Text>; return <Text style={styles.loadingMore}>{I18n.t('Loading_messages_ellipsis')}</Text>;
} }
render() {
renderList = () => {
if (!this.state.loaded) {
return <ActivityIndicator style={styles.loading} />;
}
return ( return (
<View style={styles.container} testID='room-view'>
<List <List
key='room-view-messages' key='room-view-messages'
end={this.state.end} end={this.state.end}
@ -284,6 +290,13 @@ export default class RoomView extends LoggedView {
onEndReached={this.onEndReached} onEndReached={this.onEndReached}
renderRow={this.renderItem} renderRow={this.renderItem}
/> />
);
}
render() {
return (
<View style={styles.container} testID='room-view'>
{this.renderList()}
{this.renderFooter()} {this.renderFooter()}
{this.state.room._id && this.props.showActions ? {this.state.room._id && this.props.showActions ?
<MessageActions room={this.state.room} user={this.props.user} /> : <MessageActions room={this.state.room} user={this.props.user} /> :

View File

@ -44,5 +44,8 @@ export default StyleSheet.create({
backgroundColor: '#F7F7F7', backgroundColor: '#F7F7F7',
borderRadius: 4, borderRadius: 4,
flexDirection: 'column' flexDirection: 'column'
},
loading: {
flex: 1
} }
}); });

View File

@ -36,8 +36,6 @@ export default class RoomsListView extends LoggedView {
search: [], search: [],
rooms: [] rooms: []
}; };
this.data = database.objects('subscriptions').filtered('archived != true && open == true').sorted('roomUpdatedAt', true);
this.data.addListener(this.updateState);
props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this)); props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this));
} }
@ -45,11 +43,13 @@ export default class RoomsListView extends LoggedView {
this.initDefaultHeader(); this.initDefaultHeader();
} }
componentDidMount() {
this.getSubscriptions();
}
componentWillReceiveProps(props) { componentWillReceiveProps(props) {
if (this.props.server !== props.server) { if (this.props.server !== props.server && props.server) {
this.data.removeListener(this.updateState); this.getSubscriptions();
this.data = database.objects('subscriptions').filtered('archived != true && open == true').sorted('roomUpdatedAt', true);
this.data.addListener(this.updateState);
} else if (this.props.searchText !== props.searchText) { } else if (this.props.searchText !== props.searchText) {
this.search(props.searchText); this.search(props.searchText);
} }
@ -96,6 +96,16 @@ export default class RoomsListView extends LoggedView {
this.search(text); this.search(text);
} }
getSubscriptions = () => {
if (this.data && this.data.removeListener) {
this.data.removeListener(this.updateState);
}
if (this.props.server && this.hasActiveDB()) {
this.data = database.objects('subscriptions').filtered('archived != true && open == true').sorted('roomUpdatedAt', true);
this.data.addListener(this.updateState);
}
}
initDefaultHeader = () => { initDefaultHeader = () => {
const { navigator } = this.props; const { navigator } = this.props;
const rightButtons = [{ const rightButtons = [{
@ -137,6 +147,9 @@ export default class RoomsListView extends LoggedView {
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress); BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
} }
// this is necessary during development (enables Cmd + r)
hasActiveDB = () => database && database.databases && database.databases.activeDB;
cancelSearchingAndroid = () => { cancelSearchingAndroid = () => {
if (Platform.OS === 'android') { if (Platform.OS === 'android') {
this.props.navigator.setStyle({ this.props.navigator.setStyle({

View File

@ -107,7 +107,7 @@ describe('Broadcast room', () => {
after(async() => { after(async() => {
// log back as main test user and left screen on RoomsListView // log back as main test user and left screen on RoomsListView
await tapBack(); await tapBack('Messages');
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
await logout(); await logout();
await navigateToLogin(); await navigateToLogin();

View File

@ -1,7 +1,7 @@
const random = require('./helpers/random'); const random = require('./helpers/random');
const value = random(20); const value = random(20);
const data = { const data = {
server: 'https://stable.rocket.chat', server: 'https://unstable.rocket.chat',
alternateServer: 'https://stable.rocket.chat', alternateServer: 'https://stable.rocket.chat',
user: `user${ value }`, user: `user${ value }`,
password: `password${ value }`, password: `password${ value }`,

View File

@ -1,4 +1,4 @@
import 'babel-polyfill'; import '@babel/polyfill';
import 'regenerator-runtime/runtime'; import 'regenerator-runtime/runtime';
import './app/ReactotronConfig'; import './app/ReactotronConfig';

View File

@ -1,4 +1,4 @@
import 'babel-polyfill'; import '@babel/polyfill';
import 'regenerator-runtime/runtime'; import 'regenerator-runtime/runtime';
import './app/ReactotronConfig'; import './app/ReactotronConfig';

2811
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -23,13 +23,10 @@
] ]
}, },
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.0.0-beta.47",
"@remobile/react-native-toast": "^1.0.7", "@remobile/react-native-toast": "^1.0.7",
"@storybook/addons": "^3.4.8", "@storybook/addons": "^3.4.8",
"@storybook/react-native": "^3.4.8", "@storybook/react-native": "^3.4.8",
"babel-plugin-transform-decorators-legacy": "^1.3.5",
"babel-plugin-transform-remove-console": "^6.9.4",
"babel-polyfill": "^6.26.0",
"babel-preset-expo": "^4.0.0",
"deep-equal": "^1.0.1", "deep-equal": "^1.0.1",
"ejson": "^2.1.2", "ejson": "^2.1.2",
"js-base64": "^2.4.6", "js-base64": "^2.4.6",
@ -41,10 +38,10 @@
"react": "^16.4.1", "react": "^16.4.1",
"react-clone-referenced-element": "^1.0.1", "react-clone-referenced-element": "^1.0.1",
"react-emojione": "^5.0.0", "react-emojione": "^5.0.0",
"react-native": "^0.55.4", "react-native": "^0.56.0",
"react-native-actionsheet": "^2.4.2", "react-native-actionsheet": "^2.4.2",
"react-native-audio": "^4.1.3", "react-native-audio": "^4.1.3",
"react-native-dialog": "^5.0.0", "react-native-dialog": "^5.1.0",
"react-native-fabric": "^0.5.1", "react-native-fabric": "^0.5.1",
"react-native-fast-image": "^4.0.14", "react-native-fast-image": "^4.0.14",
"react-native-i18n": "^2.0.14", "react-native-i18n": "^2.0.14",
@ -62,7 +59,7 @@
"react-native-picker-select": "^4.0.0", "react-native-picker-select": "^4.0.0",
"react-native-responsive-ui": "^1.1.1", "react-native-responsive-ui": "^1.1.1",
"react-native-safari-view": "^2.1.0", "react-native-safari-view": "^2.1.0",
"react-native-scrollable-tab-view": "^0.8.0", "react-native-scrollable-tab-view": "git+https://github.com/skv-headless/react-native-scrollable-tab-view.git",
"react-native-slider": "^0.11.0", "react-native-slider": "^0.11.0",
"react-native-svg": "^6.4.1", "react-native-svg": "^6.4.1",
"react-native-svg-image": "^2.0.1", "react-native-svg-image": "^2.0.1",
@ -71,7 +68,7 @@
"react-native-video-controls": "^2.2.3", "react-native-video-controls": "^2.2.3",
"react-native-zeroconf": "^0.9.0", "react-native-zeroconf": "^0.9.0",
"react-redux": "^5.0.6", "react-redux": "^5.0.6",
"realm": "^2.12.0", "realm": "^2.13.0",
"redux": "^4.0.0", "redux": "^4.0.0",
"redux-enhancer-react-native-appstate": "^0.3.1", "redux-enhancer-react-native-appstate": "^0.3.1",
"redux-immutable-state-invariant": "^2.1.0", "redux-immutable-state-invariant": "^2.1.0",
@ -82,23 +79,25 @@
"strip-ansi": "^4.0.0" "strip-ansi": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.0.0-beta.47",
"@babel/plugin-proposal-decorators": "7.0.0-beta.47",
"@storybook/addon-storyshots": "^3.4.8", "@storybook/addon-storyshots": "^3.4.8",
"babel-eslint": "^8.2.5", "babel-core": "^7.0.0-beta.47",
"babel-jest": "^23.2.0", "babel-eslint": "^8.2.6",
"babel-plugin-transform-react-remove-prop-types": "^0.4.10", "babel-jest": "^23.4.0",
"babel-preset-es2015": "^6.24.1", "babel-plugin-transform-remove-console": "^6.9.4",
"babel-preset-react-native": "^4.0.0", "babel-preset-react-native": "^5.0.2",
"codecov": "^3.0.2", "codecov": "^3.0.2",
"detox": "^8.0.0", "detox": "^8.0.0",
"eslint": "^4.19.1", "eslint": "^4.19.1",
"eslint-config-airbnb": "^16.1.0", "eslint-config-airbnb": "^16.1.0",
"eslint-plugin-import": "^2.12.0", "eslint-plugin-import": "^2.13.0",
"eslint-plugin-jsx-a11y": "^6.0.3", "eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-react": "^7.9.1", "eslint-plugin-react": "^7.10.0",
"eslint-plugin-react-native": "^3.2.0", "eslint-plugin-react-native": "^3.2.0",
"identity-obj-proxy": "^3.0.0", "identity-obj-proxy": "^3.0.0",
"jest": "^23.2.0", "jest": "^23.4.1",
"jest-cli": "^23.2.0", "jest-cli": "^23.4.1",
"mocha": "^5.2.0", "mocha": "^5.2.0",
"react-dom": "^16.4.1", "react-dom": "^16.4.1",
"react-native-bundle-visualizer": "^1.3.0", "react-native-bundle-visualizer": "^1.3.0",
@ -116,6 +115,9 @@
"collectCoverage": true, "collectCoverage": true,
"moduleNameMapper": { "moduleNameMapper": {
".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "identity-obj-proxy" ".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "identity-obj-proxy"
},
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
} }
}, },
"snyk": true, "snyk": true,