@plusscommunities/pluss-circles-app 8.0.4 → 8.0.6-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/module/actions/ChatActions.js +3 -3
  2. package/dist/module/actions/ChatActions.js.map +1 -1
  3. package/dist/module/actions/GroupActions.js +18 -18
  4. package/dist/module/actions/GroupActions.js.map +1 -1
  5. package/dist/module/actions/index.js +3 -3
  6. package/dist/module/actions/index.js.map +1 -1
  7. package/dist/module/actions/types.js +2 -2
  8. package/dist/module/actions/types.js.map +1 -1
  9. package/dist/module/assets/fonts.js +1 -1
  10. package/dist/module/assets/fonts.js.map +1 -1
  11. package/dist/module/components/chat/Chat.js +83 -101
  12. package/dist/module/components/chat/Chat.js.map +1 -1
  13. package/dist/module/components/chat/ChatList.js +49 -49
  14. package/dist/module/components/chat/ChatList.js.map +1 -1
  15. package/dist/module/components/chat/ContactsList.js +21 -21
  16. package/dist/module/components/chat/ContactsList.js.map +1 -1
  17. package/dist/module/components/chat/KioskPeoplePage.js +38 -37
  18. package/dist/module/components/chat/KioskPeoplePage.js.map +1 -1
  19. package/dist/module/components/chat/PeopleContainer.js +5 -5
  20. package/dist/module/components/chat/PeopleContainer.js.map +1 -1
  21. package/dist/module/components/chat/PeoplePage.js +41 -41
  22. package/dist/module/components/chat/PeoplePage.js.map +1 -1
  23. package/dist/module/components/common/SwipeableUserListing.js +22 -22
  24. package/dist/module/components/common/SwipeableUserListing.js.map +1 -1
  25. package/dist/module/components/common/index.js +2 -2
  26. package/dist/module/components/common/index.js.map +1 -1
  27. package/dist/module/components/events/EventInvitePopup.js +40 -40
  28. package/dist/module/components/events/EventInvitePopup.js.map +1 -1
  29. package/dist/module/components/groups/EditGroup.js +62 -62
  30. package/dist/module/components/groups/EditGroup.js.map +1 -1
  31. package/dist/module/components/groups/GroupDetails.js +32 -32
  32. package/dist/module/components/groups/GroupDetails.js.map +1 -1
  33. package/dist/module/components/groups/GroupsList.js +10 -10
  34. package/dist/module/components/groups/GroupsList.js.map +1 -1
  35. package/dist/module/components/groups/GroupsWidget.js +18 -18
  36. package/dist/module/components/groups/GroupsWidget.js.map +1 -1
  37. package/dist/module/components/groups/NewGroup.js +101 -101
  38. package/dist/module/components/groups/NewGroup.js.map +1 -1
  39. package/dist/module/components/groups/PublicGroup.js +17 -17
  40. package/dist/module/components/groups/PublicGroup.js.map +1 -1
  41. package/dist/module/components/groups/PublicGroupAction.js +39 -39
  42. package/dist/module/components/groups/PublicGroupAction.js.map +1 -1
  43. package/dist/module/components/notifications/GroupInvite.js +25 -25
  44. package/dist/module/components/notifications/GroupInvite.js.map +1 -1
  45. package/dist/module/components/notifications/GroupInviteAction.js +44 -44
  46. package/dist/module/components/notifications/GroupInviteAction.js.map +1 -1
  47. package/dist/module/components/notifications/GroupMessage.js +17 -17
  48. package/dist/module/components/notifications/GroupMessage.js.map +1 -1
  49. package/dist/module/components/takeover/TakeoverBackground.js +5 -5
  50. package/dist/module/components/takeover/TakeoverBackground.js.map +1 -1
  51. package/dist/module/config/index.js +2 -2
  52. package/dist/module/config/index.js.map +1 -1
  53. package/dist/module/core.config.js +1 -1
  54. package/dist/module/core.config.js.map +1 -1
  55. package/dist/module/feature.config.js +27 -27
  56. package/dist/module/feature.config.js.map +1 -1
  57. package/dist/module/index.js +14 -14
  58. package/dist/module/index.js.map +1 -1
  59. package/dist/module/js/Colors.js +1 -1
  60. package/dist/module/js/Colors.js.map +1 -1
  61. package/dist/module/js/NavigationService.js +1 -1
  62. package/dist/module/js/NavigationService.js.map +1 -1
  63. package/dist/module/js/Styles.js +1 -1
  64. package/dist/module/js/Styles.js.map +1 -1
  65. package/dist/module/js/circles/MapStateToDirectMessages.js +2 -2
  66. package/dist/module/js/circles/MapStateToDirectMessages.js.map +1 -1
  67. package/dist/module/js/index.js +3 -3
  68. package/dist/module/js/index.js.map +1 -1
  69. package/dist/module/reducers/ChatsReducer.js +4 -4
  70. package/dist/module/reducers/ChatsReducer.js.map +1 -1
  71. package/dist/module/reducers/GroupsReducer.js +5 -5
  72. package/dist/module/reducers/GroupsReducer.js.map +1 -1
  73. package/dist/module/reducers/reducerKeys.js +1 -1
  74. package/dist/module/reducers/reducerKeys.js.map +1 -1
  75. package/dist/module/values.config.default.js +25 -25
  76. package/dist/module/values.config.default.js.map +1 -1
  77. package/dist/module/values.config.groups.js +25 -25
  78. package/dist/module/values.config.groups.js.map +1 -1
  79. package/dist/module/values.config.js +25 -25
  80. package/dist/module/values.config.js.map +1 -1
  81. package/dist/module/webapi/circleActions.js +31 -31
  82. package/dist/module/webapi/circleActions.js.map +1 -1
  83. package/dist/module/webapi/helper.js +1 -1
  84. package/dist/module/webapi/helper.js.map +1 -1
  85. package/dist/module/webapi/index.js +3 -3
  86. package/dist/module/webapi/index.js.map +1 -1
  87. package/dist/module/webapi/messageActions.js +10 -10
  88. package/dist/module/webapi/messageActions.js.map +1 -1
  89. package/package.json +54 -54
  90. package/src/actions/ChatActions.js +55 -55
  91. package/src/actions/GroupActions.js +245 -237
  92. package/src/actions/index.js +3 -3
  93. package/src/actions/types.js +2 -2
  94. package/src/assets/fonts.js +1 -1
  95. package/src/components/chat/Chat.js +730 -669
  96. package/src/components/chat/ChatList.js +603 -512
  97. package/src/components/chat/ContactsList.js +186 -169
  98. package/src/components/chat/KioskPeoplePage.js +315 -291
  99. package/src/components/chat/PeopleContainer.js +14 -14
  100. package/src/components/chat/PeoplePage.js +450 -383
  101. package/src/components/common/SwipeableUserListing.js +118 -106
  102. package/src/components/common/index.js +2 -2
  103. package/src/components/events/EventInvitePopup.js +587 -505
  104. package/src/components/groups/EditGroup.js +607 -538
  105. package/src/components/groups/GroupDetails.js +385 -305
  106. package/src/components/groups/GroupsList.js +91 -79
  107. package/src/components/groups/GroupsWidget.js +122 -116
  108. package/src/components/groups/NewGroup.js +758 -639
  109. package/src/components/groups/PublicGroup.js +129 -101
  110. package/src/components/groups/PublicGroupAction.js +312 -244
  111. package/src/components/notifications/GroupInvite.js +167 -139
  112. package/src/components/notifications/GroupInviteAction.js +371 -273
  113. package/src/components/notifications/GroupMessage.js +110 -102
  114. package/src/components/takeover/TakeoverBackground.js +24 -18
  115. package/src/config/index.js +4 -4
  116. package/src/core.config.js +27 -3
  117. package/src/feature.config.js +257 -245
  118. package/src/index.js +24 -21
  119. package/src/js/Colors.js +5 -3
  120. package/src/js/NavigationService.js +5 -4
  121. package/src/js/Styles.js +1 -1
  122. package/src/js/circles/MapStateToDirectMessages.js +6 -6
  123. package/src/js/index.js +3 -3
  124. package/src/reducers/ChatsReducer.js +66 -53
  125. package/src/reducers/GroupsReducer.js +203 -190
  126. package/src/reducers/reducerKeys.js +1 -1
  127. package/src/values.config.default.js +29 -29
  128. package/src/values.config.groups.js +29 -29
  129. package/src/values.config.js +29 -29
  130. package/src/webapi/circleActions.js +109 -109
  131. package/src/webapi/helper.js +1 -1
  132. package/src/webapi/index.js +3 -3
  133. package/src/webapi/messageActions.js +47 -47
@@ -1,295 +1,393 @@
1
- import React, { Component } from 'react';
2
- import { ScrollView, Text, View, ImageBackground, Dimensions } from 'react-native';
3
- import { connect } from 'react-redux';
4
- import _ from 'lodash';
5
- import moment from 'moment';
6
- import { LinearGradient } from 'expo-linear-gradient';
1
+ import React, { Component } from "react";
7
2
  import {
8
- getImageSource,
9
- TEXT_DARK,
10
- TEXT_BLUEGREY,
11
- getFirstName,
12
- COLOUR_TRANSPARENT,
13
- LINEGREY,
14
- getMainBrandingColourFromState,
15
- StatusBarHeight,
16
- } from '../../js';
17
- import { Spinner, ProfilePic, MiddlePopup, InlineButton, BackButton } from '../common';
18
- import { handleGroupInvite } from '../../actions';
19
- import { values } from '../../values.config';
3
+ ScrollView,
4
+ Text,
5
+ View,
6
+ ImageBackground,
7
+ Dimensions,
8
+ } from "react-native";
9
+ import { connect } from "react-redux";
10
+ import _ from "lodash";
11
+ import moment from "moment";
12
+ import { LinearGradient } from "expo-linear-gradient";
13
+ import {
14
+ getImageSource,
15
+ TEXT_DARK,
16
+ TEXT_BLUEGREY,
17
+ getFirstName,
18
+ COLOUR_TRANSPARENT,
19
+ LINEGREY,
20
+ getMainBrandingColourFromState,
21
+ StatusBarHeight,
22
+ } from "../../js";
23
+ import {
24
+ Spinner,
25
+ ProfilePic,
26
+ MiddlePopup,
27
+ InlineButton,
28
+ BackButton,
29
+ } from "../common";
30
+ import { handleGroupInvite } from "../../actions";
31
+ import { values } from "../../values.config";
20
32
 
21
- const SCREEN_HEIGHT = Dimensions.get('window').height;
33
+ const SCREEN_HEIGHT = Dimensions.get("window").height;
22
34
  const CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;
23
- const SCREEN_WIDTH = Dimensions.get('window').width;
35
+ const SCREEN_WIDTH = Dimensions.get("window").width;
24
36
 
25
37
  class GroupInviteAction extends Component {
26
- constructor(props) {
27
- super(props);
28
- this.state = {
29
- group: {},
30
- loading: false,
31
- };
32
- }
38
+ constructor(props) {
39
+ super(props);
40
+ this.state = {
41
+ group: {},
42
+ loading: false,
43
+ };
44
+ }
33
45
 
34
- UNSAFE_componentWillMount() {
35
- // this.loadEvent();
36
- this.setState({ group: this.props.group });
37
- }
46
+ UNSAFE_componentWillMount() {
47
+ // this.loadEvent();
48
+ this.setState({ group: this.props.group });
49
+ }
38
50
 
39
- componentWillUnmount() {
40
- this.props.onClose();
41
- }
51
+ componentWillUnmount() {
52
+ this.props.onClose();
53
+ }
42
54
 
43
- getShortName(name) {
44
- if (!name) {
45
- return name;
46
- }
47
- const names = name.split(',')[0].match(/\b\w/g);
48
- return names && names.length > 0 ? `${names[0]}${names.length > 1 ? names[names.length - 1] : ''}` : '';
49
- }
55
+ getShortName(name) {
56
+ if (!name) {
57
+ return name;
58
+ }
59
+ const names = name.split(",")[0].match(/\b\w/g);
60
+ return names && names.length > 0
61
+ ? `${names[0]}${names.length > 1 ? names[names.length - 1] : ""}`
62
+ : "";
63
+ }
50
64
 
51
- acceptInvite() {
52
- if (this.state.loading) {
53
- return;
54
- }
55
- this.setState({ loading: true });
56
- this.props.handleGroupInvite(this.state.group, true, this.props.user.uid);
57
- }
65
+ acceptInvite() {
66
+ if (this.state.loading) {
67
+ return;
68
+ }
69
+ this.setState({ loading: true });
70
+ this.props.handleGroupInvite(this.state.group, true, this.props.user.uid);
71
+ }
58
72
 
59
- declineInvite() {
60
- if (!this.state.loading) {
61
- this.props.handleGroupInvite(this.state.group, false);
62
- this.props.onClose();
63
- }
64
- }
73
+ declineInvite() {
74
+ if (!this.state.loading) {
75
+ this.props.handleGroupInvite(this.state.group, false);
76
+ this.props.onClose();
77
+ }
78
+ }
65
79
 
66
- backClose() {
67
- // if (!this.state.loading) {
68
- this.props.onClose();
69
- // }
70
- }
80
+ backClose() {
81
+ // if (!this.state.loading) {
82
+ this.props.onClose();
83
+ // }
84
+ }
71
85
 
72
- renderButtons() {
73
- if (this.state.loading) {
74
- return (
75
- <View
76
- style={{
77
- paddingTop: 15,
78
- flexDirection: 'row',
79
- width: '100%',
80
- justifyContent: 'space-between',
81
- borderTopWidth: 1,
82
- borderTopColor: LINEGREY,
83
- }}
84
- >
85
- <Spinner />
86
- </View>
87
- );
88
- }
89
- return (
90
- <View
91
- style={{
92
- paddingTop: 15,
93
- flexDirection: 'row',
94
- width: '100%',
95
- justifyContent: 'space-between',
96
- borderTopWidth: 1,
97
- borderTopColor: LINEGREY,
98
- }}
99
- >
100
- <InlineButton
101
- large
102
- color="#fff"
103
- style={{ borderWidth: 1, borderColor: this.props.colourBrandingMain, width: SCREEN_WIDTH / 2 - 24 }}
104
- onPress={() => {
105
- this.declineInvite();
106
- }}
107
- textStyle={{ color: this.props.colourBrandingMain }}
108
- >
109
- Decline Invite
110
- </InlineButton>
111
- <InlineButton
112
- large
113
- color={this.props.colourBrandingMain}
114
- style={{ borderWidth: 1, borderColor: this.props.colourBrandingMain, width: SCREEN_WIDTH / 2 - 24 }}
115
- onPress={() => {
116
- this.acceptInvite();
117
- }}
118
- >
119
- {`Join ${_.capitalize(values.entityName)}`}
120
- </InlineButton>
121
- </View>
122
- );
123
- }
86
+ renderButtons() {
87
+ if (this.state.loading) {
88
+ return (
89
+ <View
90
+ style={{
91
+ paddingTop: 15,
92
+ flexDirection: "row",
93
+ width: "100%",
94
+ justifyContent: "space-between",
95
+ borderTopWidth: 1,
96
+ borderTopColor: LINEGREY,
97
+ }}
98
+ >
99
+ <Spinner />
100
+ </View>
101
+ );
102
+ }
103
+ return (
104
+ <View
105
+ style={{
106
+ paddingTop: 15,
107
+ flexDirection: "row",
108
+ width: "100%",
109
+ justifyContent: "space-between",
110
+ borderTopWidth: 1,
111
+ borderTopColor: LINEGREY,
112
+ }}
113
+ >
114
+ <InlineButton
115
+ large
116
+ color="#fff"
117
+ style={{
118
+ borderWidth: 1,
119
+ borderColor: this.props.colourBrandingMain,
120
+ width: SCREEN_WIDTH / 2 - 24,
121
+ }}
122
+ onPress={() => {
123
+ this.declineInvite();
124
+ }}
125
+ textStyle={{ color: this.props.colourBrandingMain }}
126
+ >
127
+ Decline Invite
128
+ </InlineButton>
129
+ <InlineButton
130
+ large
131
+ color={this.props.colourBrandingMain}
132
+ style={{
133
+ borderWidth: 1,
134
+ borderColor: this.props.colourBrandingMain,
135
+ width: SCREEN_WIDTH / 2 - 24,
136
+ }}
137
+ onPress={() => {
138
+ this.acceptInvite();
139
+ }}
140
+ >
141
+ {`Join ${_.capitalize(values.entityName)}`}
142
+ </InlineButton>
143
+ </View>
144
+ );
145
+ }
124
146
 
125
- renderPeople() {
126
- // const source = _.filter([...this.state.group.Audience, ...this.state.group.Invites], item => {
127
- // return item != null && item.userId !== this.props.user.uid;
128
- // });
129
- const source = _.filter([...this.state.group.Audience], item => {
130
- return item != null && item.userId !== this.props.user.uid;
131
- });
132
- if (_.isEmpty(source)) {
133
- return null;
134
- }
135
- return (
136
- <View style={{ borderTopColor: LINEGREY, borderTopWidth: 1, paddingTop: 8, paddingBottom: 16 }}>
137
- <Text style={[styles.normalText, { fontFamily: 'sf-semibold' }]}>{`Members (${source.length})`}</Text>
138
- {source.map(user => {
139
- return (
140
- <View key={user.userId} style={{ flexDirection: 'row', position: 'relative', marginTop: 8, alignItems: 'center' }}>
141
- <ProfilePic Diameter={40} ProfilePic={user.profilePic} />
142
- <Text style={[styles.normalText, { fontFamily: 'sf-semibold', marginTop: 0, marginLeft: 14, lineHeight: 16 }]}>
143
- {getFirstName(user.displayName)}
144
- </Text>
145
- </View>
146
- );
147
- })}
148
- </View>
149
- );
150
- }
147
+ renderPeople() {
148
+ // const source = _.filter([...this.state.group.Audience, ...this.state.group.Invites], item => {
149
+ // return item != null && item.userId !== this.props.user.uid;
150
+ // });
151
+ const source = _.filter([...this.state.group.Audience], (item) => {
152
+ return item != null && item.userId !== this.props.user.uid;
153
+ });
154
+ if (_.isEmpty(source)) {
155
+ return null;
156
+ }
157
+ return (
158
+ <View
159
+ style={{
160
+ borderTopColor: LINEGREY,
161
+ borderTopWidth: 1,
162
+ paddingTop: 8,
163
+ paddingBottom: 16,
164
+ }}
165
+ >
166
+ <Text
167
+ style={[styles.normalText, { fontFamily: "sf-semibold" }]}
168
+ >{`Members (${source.length})`}</Text>
169
+ {source.map((user) => {
170
+ return (
171
+ <View
172
+ key={user.userId}
173
+ style={{
174
+ flexDirection: "row",
175
+ position: "relative",
176
+ marginTop: 8,
177
+ alignItems: "center",
178
+ }}
179
+ >
180
+ <ProfilePic Diameter={40} ProfilePic={user.profilePic} />
181
+ <Text
182
+ style={[
183
+ styles.normalText,
184
+ {
185
+ fontFamily: "sf-semibold",
186
+ marginTop: 0,
187
+ marginLeft: 14,
188
+ lineHeight: 16,
189
+ },
190
+ ]}
191
+ >
192
+ {getFirstName(user.displayName)}
193
+ </Text>
194
+ </View>
195
+ );
196
+ })}
197
+ </View>
198
+ );
199
+ }
151
200
 
152
- render() {
153
- if (_.isEmpty(this.state.group)) {
154
- return null;
155
- }
156
- if (this.props.showingAction) {
157
- return (
158
- <MiddlePopup
159
- onClose={() => {
160
- this.backClose();
161
- }}
162
- >
163
- <View style={styles.popupContainer}>
164
- {/* Top Back Button */}
165
- <View style={styles.backButton}>
166
- <View style={styles.headerContent}>
167
- <BackButton
168
- onPress={() => {
169
- this.backClose();
170
- }}
171
- style={{
172
- marginLeft: 16,
173
- }}
174
- />
175
- </View>
176
- </View>
177
- <ScrollView style={styles.scroll} keyboardShouldPersistTaps="always">
178
- <View style={[styles.mainHeader, this.state.group.Image == null && { height: 80 }]}>
179
- <ImageBackground
180
- Id="image"
181
- style={[styles.image, { backgroundColor: TEXT_BLUEGREY }]}
182
- key={this.state.group.Id}
183
- source={getImageSource(this.state.group.Image)}
184
- >
185
- <LinearGradient
186
- style={styles.gradientOverlay}
187
- colors={['rgba(0,0,0,0.7)', COLOUR_TRANSPARENT]}
188
- start={{ x: 0, y: 0 }}
189
- end={{ x: 0, y: 1 }}
190
- locations={[0, 0.5]}
191
- />
192
- </ImageBackground>
193
- </View>
194
- <View style={{ paddingHorizontal: 16, paddingBottom: 16 }}>
195
- <View style={styles.titleContainer}>
196
- <Text style={styles.eventTitle}>{this.state.group.Title}</Text>
197
- <View style={{ flexDirection: 'row', marginTop: 2, paddingBottom: 8 }}>
198
- <Text style={[styles.eventTitle, { fontFamily: 'sf-semibold', fontSize: 14 }]}>Invited on</Text>
199
- <Text style={[styles.eventTitle, { marginLeft: 24, fontSize: 14, fontFamily: 'sf-regular' }]}>
200
- {moment(this.state.group.Timestamp).format('MMMM Do, YYYY')}
201
- </Text>
202
- </View>
203
- </View>
204
- {!_.isEmpty(this.state.group.Description) && (
205
- <View style={{ borderTopColor: LINEGREY, borderTopWidth: 1, paddingTop: 8, paddingBottom: 16 }}>
206
- <Text style={[styles.normalText, { fontFamily: 'sf-semibold' }]}>Description</Text>
207
- <Text style={[styles.normalText]}>{this.state.group.Description}</Text>
208
- </View>
209
- )}
210
- {this.renderPeople()}
211
- </View>
212
- </ScrollView>
213
- <View style={styles.buttonContainer}>{this.renderButtons()}</View>
214
- </View>
215
- </MiddlePopup>
216
- );
217
- }
218
- return null;
219
- }
201
+ render() {
202
+ if (_.isEmpty(this.state.group)) {
203
+ return null;
204
+ }
205
+ if (this.props.showingAction) {
206
+ return (
207
+ <MiddlePopup
208
+ onClose={() => {
209
+ this.backClose();
210
+ }}
211
+ >
212
+ <View style={styles.popupContainer}>
213
+ {/* Top Back Button */}
214
+ <View style={styles.backButton}>
215
+ <View style={styles.headerContent}>
216
+ <BackButton
217
+ onPress={() => {
218
+ this.backClose();
219
+ }}
220
+ style={{
221
+ marginLeft: 16,
222
+ }}
223
+ />
224
+ </View>
225
+ </View>
226
+ <ScrollView
227
+ style={styles.scroll}
228
+ keyboardShouldPersistTaps="always"
229
+ >
230
+ <View
231
+ style={[
232
+ styles.mainHeader,
233
+ this.state.group.Image == null && { height: 80 },
234
+ ]}
235
+ >
236
+ <ImageBackground
237
+ Id="image"
238
+ style={[styles.image, { backgroundColor: TEXT_BLUEGREY }]}
239
+ key={this.state.group.Id}
240
+ source={getImageSource(this.state.group.Image)}
241
+ >
242
+ <LinearGradient
243
+ style={styles.gradientOverlay}
244
+ colors={["rgba(0,0,0,0.7)", COLOUR_TRANSPARENT]}
245
+ start={{ x: 0, y: 0 }}
246
+ end={{ x: 0, y: 1 }}
247
+ locations={[0, 0.5]}
248
+ />
249
+ </ImageBackground>
250
+ </View>
251
+ <View style={{ paddingHorizontal: 16, paddingBottom: 16 }}>
252
+ <View style={styles.titleContainer}>
253
+ <Text style={styles.eventTitle}>
254
+ {this.state.group.Title}
255
+ </Text>
256
+ <View
257
+ style={{
258
+ flexDirection: "row",
259
+ marginTop: 2,
260
+ paddingBottom: 8,
261
+ }}
262
+ >
263
+ <Text
264
+ style={[
265
+ styles.eventTitle,
266
+ { fontFamily: "sf-semibold", fontSize: 14 },
267
+ ]}
268
+ >
269
+ Invited on
270
+ </Text>
271
+ <Text
272
+ style={[
273
+ styles.eventTitle,
274
+ {
275
+ marginLeft: 24,
276
+ fontSize: 14,
277
+ fontFamily: "sf-regular",
278
+ },
279
+ ]}
280
+ >
281
+ {moment(this.state.group.Timestamp).format(
282
+ "MMMM Do, YYYY",
283
+ )}
284
+ </Text>
285
+ </View>
286
+ </View>
287
+ {!_.isEmpty(this.state.group.Description) && (
288
+ <View
289
+ style={{
290
+ borderTopColor: LINEGREY,
291
+ borderTopWidth: 1,
292
+ paddingTop: 8,
293
+ paddingBottom: 16,
294
+ }}
295
+ >
296
+ <Text
297
+ style={[styles.normalText, { fontFamily: "sf-semibold" }]}
298
+ >
299
+ Description
300
+ </Text>
301
+ <Text style={[styles.normalText]}>
302
+ {this.state.group.Description}
303
+ </Text>
304
+ </View>
305
+ )}
306
+ {this.renderPeople()}
307
+ </View>
308
+ </ScrollView>
309
+ <View style={styles.buttonContainer}>{this.renderButtons()}</View>
310
+ </View>
311
+ </MiddlePopup>
312
+ );
313
+ }
314
+ return null;
315
+ }
220
316
  }
221
317
 
222
318
  const styles = {
223
- backButton: {
224
- position: 'absolute',
225
- left: 0,
226
- top: 0,
227
- zIndex: 10,
228
- elevation: 10,
229
- height: 70,
230
- },
231
- headerContent: {
232
- alignSelf: 'stretch',
233
- flexDirection: 'row',
234
- flex: 1,
235
- paddingTop: StatusBarHeight(10),
236
- },
237
- popupContainer: {
238
- borderRadius: 0,
239
- backgroundColor: '#fff',
240
- width: SCREEN_WIDTH,
241
- flex: 1,
242
- },
243
- scroll: {
244
- flex: 1,
245
- backgroundColor: '#fff',
246
- },
247
- buttonContainer: {
248
- paddingBottom: 16,
249
- paddingHorizontal: 16,
250
- },
251
- mainHeader: {
252
- position: 'relative',
253
- height: CARD_IMAGE_HEIGHT,
254
- width: SCREEN_WIDTH,
255
- },
256
- gradientOverlay: {
257
- flex: 1,
258
- },
259
- image: {
260
- backgroundColor: '#fff',
261
- position: 'relative',
262
- width: undefined,
263
- height: undefined,
264
- flex: 1,
265
- },
266
- titleContainer: {
267
- /* flex: 1,
319
+ backButton: {
320
+ position: "absolute",
321
+ left: 0,
322
+ top: 0,
323
+ zIndex: 10,
324
+ elevation: 10,
325
+ height: 70,
326
+ },
327
+ headerContent: {
328
+ alignSelf: "stretch",
329
+ flexDirection: "row",
330
+ flex: 1,
331
+ paddingTop: StatusBarHeight(10),
332
+ },
333
+ popupContainer: {
334
+ borderRadius: 0,
335
+ backgroundColor: "#fff",
336
+ width: SCREEN_WIDTH,
337
+ flex: 1,
338
+ },
339
+ scroll: {
340
+ flex: 1,
341
+ backgroundColor: "#fff",
342
+ },
343
+ buttonContainer: {
344
+ paddingBottom: 16,
345
+ paddingHorizontal: 16,
346
+ },
347
+ mainHeader: {
348
+ position: "relative",
349
+ height: CARD_IMAGE_HEIGHT,
350
+ width: SCREEN_WIDTH,
351
+ },
352
+ gradientOverlay: {
353
+ flex: 1,
354
+ },
355
+ image: {
356
+ backgroundColor: "#fff",
357
+ position: "relative",
358
+ width: undefined,
359
+ height: undefined,
360
+ flex: 1,
361
+ },
362
+ titleContainer: {
363
+ /* flex: 1,
268
364
  flexDirection: 'row-reverse', */
269
- paddingTop: 20,
270
- },
271
- eventTitle: {
272
- fontFamily: 'sf-bold',
273
- fontSize: 24,
274
- lineHeight: 32,
275
- color: TEXT_DARK,
276
- backgroundColor: 'transparent',
277
- },
278
- normalText: {
279
- fontFamily: 'sf-regular',
280
- fontSize: 14,
281
- lineHeight: 20,
282
- color: TEXT_DARK,
283
- marginTop: 6,
284
- backgroundColor: 'transparent',
285
- },
365
+ paddingTop: 20,
366
+ },
367
+ eventTitle: {
368
+ fontFamily: "sf-bold",
369
+ fontSize: 24,
370
+ lineHeight: 32,
371
+ color: TEXT_DARK,
372
+ backgroundColor: "transparent",
373
+ },
374
+ normalText: {
375
+ fontFamily: "sf-regular",
376
+ fontSize: 14,
377
+ lineHeight: 20,
378
+ color: TEXT_DARK,
379
+ marginTop: 6,
380
+ backgroundColor: "transparent",
381
+ },
286
382
  };
287
383
 
288
- const mapStateToProps = state => {
289
- return {
290
- user: state.user,
291
- colourBrandingMain: getMainBrandingColourFromState(state),
292
- };
384
+ const mapStateToProps = (state) => {
385
+ return {
386
+ user: state.user,
387
+ colourBrandingMain: getMainBrandingColourFromState(state),
388
+ };
293
389
  };
294
390
 
295
- export default connect(mapStateToProps, { handleGroupInvite })(GroupInviteAction);
391
+ export default connect(mapStateToProps, { handleGroupInvite })(
392
+ GroupInviteAction,
393
+ );