@plusscommunities/pluss-core-app 1.4.9 → 1.5.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.
- package/dist/module/actions/FollowerActions.js +34 -0
- package/dist/module/actions/FollowerActions.js.map +1 -0
- package/dist/module/actions/MediaActions.js +20 -0
- package/dist/module/actions/MediaActions.js.map +1 -0
- package/dist/module/actions/ResidentActions.js +26 -0
- package/dist/module/actions/ResidentActions.js.map +1 -0
- package/dist/module/actions/UserActions.js +214 -0
- package/dist/module/actions/UserActions.js.map +1 -0
- package/dist/module/actions/index.js +5 -0
- package/dist/module/actions/index.js.map +1 -0
- package/dist/module/actions/types.js +14 -0
- package/dist/module/actions/types.js.map +1 -0
- package/dist/module/apis/analyticsActions.js +20 -0
- package/dist/module/apis/analyticsActions.js.map +1 -0
- package/dist/module/apis/contactActions.js +27 -0
- package/dist/module/apis/contactActions.js.map +1 -0
- package/dist/module/apis/eventActions.js +163 -0
- package/dist/module/apis/eventActions.js.map +1 -0
- package/dist/module/apis/fileActions.js +96 -0
- package/dist/module/apis/fileActions.js.map +1 -0
- package/dist/module/apis/followerActions.js +38 -0
- package/dist/module/apis/followerActions.js.map +1 -0
- package/dist/module/apis/index.js +11 -0
- package/dist/module/apis/index.js.map +1 -0
- package/dist/module/apis/notificationActions.js +60 -0
- package/dist/module/apis/notificationActions.js.map +1 -0
- package/dist/module/apis/profileActions.js +14 -0
- package/dist/module/apis/profileActions.js.map +1 -0
- package/dist/module/apis/reactionActions.js +78 -0
- package/dist/module/apis/reactionActions.js.map +1 -0
- package/dist/module/apis/typeActions.js +15 -0
- package/dist/module/apis/typeActions.js.map +1 -0
- package/dist/module/apis/userActions.js +104 -0
- package/dist/module/apis/userActions.js.map +1 -0
- package/{assets → dist/module/assets}/icons/reactions/heart.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/party.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/sad.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/smile.png +0 -0
- package/dist/module/colours.js +149 -0
- package/dist/module/colours.js.map +1 -0
- package/dist/module/components/AddButton.js +45 -0
- package/dist/module/components/AddButton.js.map +1 -0
- package/dist/module/components/Attachment.js +59 -0
- package/dist/module/components/Attachment.js.map +1 -0
- package/dist/module/components/AudienceSelectorLauncher.js +70 -0
- package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
- package/dist/module/components/AudienceSelectorPage.js +376 -0
- package/dist/module/components/AudienceSelectorPage.js.map +1 -0
- package/dist/module/components/BackButton.js +62 -0
- package/dist/module/components/BackButton.js.map +1 -0
- package/dist/module/components/CategoryTabs.js +171 -0
- package/dist/module/components/CategoryTabs.js.map +1 -0
- package/dist/module/components/CommentReply.js +363 -0
- package/dist/module/components/CommentReply.js.map +1 -0
- package/dist/module/components/CommentSection.js +785 -0
- package/dist/module/components/CommentSection.js.map +1 -0
- package/dist/module/components/ConfirmPopup.js +85 -0
- package/dist/module/components/ConfirmPopup.js.map +1 -0
- package/dist/module/components/ConfirmationPopup.js +77 -0
- package/dist/module/components/ConfirmationPopup.js.map +1 -0
- package/dist/module/components/DropDownItem.js +82 -0
- package/dist/module/components/DropDownItem.js.map +1 -0
- package/dist/module/components/DropDownMenu.js +46 -0
- package/dist/module/components/DropDownMenu.js.map +1 -0
- package/dist/module/components/EmptyStateMain.js +50 -0
- package/dist/module/components/EmptyStateMain.js.map +1 -0
- package/dist/module/components/EmptyStateWidget.js +52 -0
- package/dist/module/components/EmptyStateWidget.js.map +1 -0
- package/dist/module/components/FontScaleButton.js +37 -0
- package/dist/module/components/FontScaleButton.js.map +1 -0
- package/dist/module/components/FontScalePopup.js +77 -0
- package/dist/module/components/FontScalePopup.js.map +1 -0
- package/dist/module/components/FormCard.js +28 -0
- package/dist/module/components/FormCard.js.map +1 -0
- package/dist/module/components/FormCardSection.js +240 -0
- package/dist/module/components/FormCardSection.js.map +1 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js +77 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
- package/dist/module/components/FormattedText.js +145 -0
- package/dist/module/components/FormattedText.js.map +1 -0
- package/dist/module/components/GenericInput.js +161 -0
- package/dist/module/components/GenericInput.js.map +1 -0
- package/dist/module/components/GenericInputSection.js +174 -0
- package/dist/module/components/GenericInputSection.js.map +1 -0
- package/dist/module/components/Header.js +491 -0
- package/dist/module/components/Header.js.map +1 -0
- package/dist/module/components/ImagePopup.js +257 -0
- package/dist/module/components/ImagePopup.js.map +1 -0
- package/dist/module/components/ImageUploadProgress.js +72 -0
- package/dist/module/components/ImageUploadProgress.js.map +1 -0
- package/dist/module/components/ImageUploader.js +850 -0
- package/dist/module/components/ImageUploader.js.map +1 -0
- package/dist/module/components/InlineButton.js +72 -0
- package/dist/module/components/InlineButton.js.map +1 -0
- package/dist/module/components/Input.js +164 -0
- package/dist/module/components/Input.js.map +1 -0
- package/dist/module/components/LoadingCircles.js +224 -0
- package/dist/module/components/LoadingCircles.js.map +1 -0
- package/dist/module/components/LoadingIndicator.js +95 -0
- package/dist/module/components/LoadingIndicator.js.map +1 -0
- package/dist/module/components/LoadingStateWidget.js +51 -0
- package/dist/module/components/LoadingStateWidget.js.map +1 -0
- package/dist/module/components/MediaPlayer.js +440 -0
- package/dist/module/components/MediaPlayer.js.map +1 -0
- package/dist/module/components/MiddlePopup.js +46 -0
- package/dist/module/components/MiddlePopup.js.map +1 -0
- package/dist/module/components/PDFPopup.js +188 -0
- package/dist/module/components/PDFPopup.js.map +1 -0
- package/dist/module/components/PlussChat.js +997 -0
- package/dist/module/components/PlussChat.js.map +1 -0
- package/dist/module/components/PlussChatMessage.js +204 -0
- package/dist/module/components/PlussChatMessage.js.map +1 -0
- package/dist/module/components/PlussChatTime.js +66 -0
- package/dist/module/components/PlussChatTime.js.map +1 -0
- package/dist/module/components/Popup.js +138 -0
- package/dist/module/components/Popup.js.map +1 -0
- package/dist/module/components/PopupMenu.js +128 -0
- package/dist/module/components/PopupMenu.js.map +1 -0
- package/dist/module/components/PositionedImage.js +333 -0
- package/dist/module/components/PositionedImage.js.map +1 -0
- package/dist/module/components/ProfilePic.js +119 -0
- package/dist/module/components/ProfilePic.js.map +1 -0
- package/dist/module/components/RadioButton.js +84 -0
- package/dist/module/components/RadioButton.js.map +1 -0
- package/dist/module/components/Reaction.js +129 -0
- package/dist/module/components/Reaction.js.map +1 -0
- package/dist/module/components/Reactions.js +84 -0
- package/dist/module/components/Reactions.js.map +1 -0
- package/dist/module/components/SharingTools.js +162 -0
- package/dist/module/components/SharingTools.js.map +1 -0
- package/dist/module/components/Spinner.js +25 -0
- package/dist/module/components/Spinner.js.map +1 -0
- package/dist/module/components/StickyFooter.js +37 -0
- package/dist/module/components/StickyFooter.js.map +1 -0
- package/dist/module/components/TextStyle.js +34 -0
- package/dist/module/components/TextStyle.js.map +1 -0
- package/dist/module/components/Toggle.js +70 -0
- package/dist/module/components/Toggle.js.map +1 -0
- package/dist/module/components/TouchableSearchBar.js +73 -0
- package/dist/module/components/TouchableSearchBar.js.map +1 -0
- package/dist/module/components/UserListPopup.js +146 -0
- package/dist/module/components/UserListPopup.js.map +1 -0
- package/dist/module/components/UserListing.js +291 -0
- package/dist/module/components/UserListing.js.map +1 -0
- package/dist/module/components/VideoPopup.js +123 -0
- package/dist/module/components/VideoPopup.js.map +1 -0
- package/dist/module/components/WarningPopup.js +87 -0
- package/dist/module/components/WarningPopup.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +325 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js +123 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
- package/dist/module/components/index.js +53 -0
- package/dist/module/components/index.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +416 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +405 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
- package/dist/module/config.js +27 -0
- package/dist/module/config.js.map +1 -0
- package/dist/module/constants.js +16 -0
- package/dist/module/constants.js.map +1 -0
- package/dist/module/fonts/index.js +2 -0
- package/dist/module/fonts/index.js.map +1 -0
- package/dist/module/fonts/pluss60-icons.js +5 -0
- package/dist/module/fonts/pluss60-icons.js.map +1 -0
- package/dist/module/fonts/pluss60-icons.json +1097 -0
- package/dist/module/helper.js +436 -0
- package/dist/module/helper.js.map +1 -0
- package/dist/module/index.js +13 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/session.js +54 -0
- package/dist/module/session.js.map +1 -0
- package/dist/module/styles.js +67 -0
- package/dist/module/styles.js.map +1 -0
- package/package.json +22 -5
- package/src/assets/icons/reactions/heart.png +0 -0
- package/src/assets/icons/reactions/party.png +0 -0
- package/src/assets/icons/reactions/sad.png +0 -0
- package/src/assets/icons/reactions/smile.png +0 -0
- package/src/components/CommentReply.js +0 -2
- package/src/constants.js +4 -4
- package/src/helper.js +4 -4
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { Platform, StatusBar, Dimensions } from 'react-native';
|
|
3
|
+
import Constants from 'expo-constants';
|
|
4
|
+
import Config from './config';
|
|
5
|
+
import { LINEGREY } from './colours';
|
|
6
|
+
import { getSessionTokenAWS } from './session';
|
|
7
|
+
const TIMESTAMP_FORMAT = 'D MMM • h:mma';
|
|
8
|
+
const DATE_FORMAT = 'D MMM YYYY';
|
|
9
|
+
|
|
10
|
+
const getUrl = (baseAction, action, query) => {
|
|
11
|
+
const {
|
|
12
|
+
baseAPIUrl,
|
|
13
|
+
baseStage
|
|
14
|
+
} = Config.env;
|
|
15
|
+
let queryPart = '';
|
|
16
|
+
|
|
17
|
+
if (query) {
|
|
18
|
+
_.keys(query).forEach((key, index) => {
|
|
19
|
+
queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const getAuthTokenHeader = () => {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
getSessionTokenAWS().then(idToken => {
|
|
29
|
+
resolve(`Bearer ${idToken}`);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const getShadowStyle = () => {
|
|
35
|
+
if (Platform.OS === 'ios') {
|
|
36
|
+
return {
|
|
37
|
+
shadowColor: '#000',
|
|
38
|
+
shadowOffset: {
|
|
39
|
+
width: 0,
|
|
40
|
+
height: 1
|
|
41
|
+
},
|
|
42
|
+
shadowOpacity: 0.1,
|
|
43
|
+
shadowRadius: 3,
|
|
44
|
+
backgroundColor: '#fff'
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
borderColor: LINEGREY,
|
|
50
|
+
backgroundColor: '#fff',
|
|
51
|
+
elevation: 8
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const StatusBarHeight = size => {
|
|
56
|
+
return getStatusBarHeight() + size;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const getStatusBarHeight = () => {
|
|
60
|
+
return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const getSiteSettingFromState = (state, key, defaultValue) => {
|
|
64
|
+
if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {
|
|
65
|
+
return state.user.siteSettings[key];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return defaultValue || null;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const getValueOrDefault = (value, def) => {
|
|
72
|
+
return !_.isUndefined(value) ? value : def;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const getExtension = url => {
|
|
76
|
+
if (!url) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const fileSplit = url.split('.');
|
|
81
|
+
return fileSplit[fileSplit.length - 1].toLowerCase();
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const getFileName = (url, noExtension) => {
|
|
85
|
+
if (!url) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const fileSplit = url.split('/');
|
|
90
|
+
const name = fileSplit[fileSplit.length - 1].toLowerCase();
|
|
91
|
+
|
|
92
|
+
if (!noExtension) {
|
|
93
|
+
return name;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return name.split('.')[0];
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const isVideo = url => {
|
|
100
|
+
const extension = getExtension(url);
|
|
101
|
+
return ['mov', 'mp4'].includes(extension);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const isVideoUrl = url => {
|
|
105
|
+
const urlToCheck = getValidUrl(url);
|
|
106
|
+
|
|
107
|
+
if (isVideo(urlToCheck)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (isYoutube(urlToCheck)) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (isVimeo(urlToCheck)) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return false;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const isStockImage = url => {
|
|
123
|
+
return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const getThumb300 = url => {
|
|
127
|
+
if (!url) {
|
|
128
|
+
return url;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {
|
|
132
|
+
return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {
|
|
136
|
+
return url.replace('/uploads/', '/uploads-thumb/').replace('/general/', '/general300/').replace('/uploads1400/', '/uploads-thumb/').replace('/general1400/', '/general300/');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {
|
|
140
|
+
const extension = getExtension(url);
|
|
141
|
+
let urlToUse = url;
|
|
142
|
+
|
|
143
|
+
if (extension !== 'jpg') {
|
|
144
|
+
urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return url;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const get1400 = url => {
|
|
154
|
+
if (!url) {
|
|
155
|
+
return url;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {
|
|
159
|
+
return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {
|
|
163
|
+
return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {
|
|
167
|
+
const extension = getExtension(url);
|
|
168
|
+
let urlToUse = url;
|
|
169
|
+
|
|
170
|
+
if (extension !== 'jpg') {
|
|
171
|
+
urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return urlToUse.replace('/uploads/', '/1400/');
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return url;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
const getMimeType = url => {
|
|
181
|
+
const extension = getExtension(url);
|
|
182
|
+
|
|
183
|
+
switch (extension) {
|
|
184
|
+
case 'mov':
|
|
185
|
+
return 'video/quicktime';
|
|
186
|
+
|
|
187
|
+
case 'mp4':
|
|
188
|
+
return 'video/mp4';
|
|
189
|
+
|
|
190
|
+
default:
|
|
191
|
+
return 'image/jpeg';
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
const getCompressed = url => {
|
|
196
|
+
if (!url || typeof url !== 'string') return '';
|
|
197
|
+
return url.replace('/uploads/', '/compressed/');
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const imageExists = url => {
|
|
201
|
+
return new Promise(resolve => {
|
|
202
|
+
fetch(url, {
|
|
203
|
+
method: 'HEAD',
|
|
204
|
+
cache: 'no-cache'
|
|
205
|
+
}).then(response => {
|
|
206
|
+
resolve(response.status === 200);
|
|
207
|
+
}).catch(() => {
|
|
208
|
+
resolve(false);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
const getPluralS = count => {
|
|
214
|
+
return count === 1 ? '' : 's';
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const getPluralOptions = (count, singular, plural) => {
|
|
218
|
+
if (count === 1) {
|
|
219
|
+
return singular;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
return plural;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const randomString = function () {
|
|
226
|
+
let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
227
|
+
return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {
|
|
228
|
+
// eslint-disable-next-line
|
|
229
|
+
var r = Math.random() * 16 | 0,
|
|
230
|
+
v = c === 'x' ? r : r & 0x3 | 0x8;
|
|
231
|
+
return v.toString(16);
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
const generateImageName = (name, source) => {
|
|
236
|
+
let result = randomString(name);
|
|
237
|
+
|
|
238
|
+
if (source) {
|
|
239
|
+
result += `.${_.last(source.split('.'))}`;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return result;
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
const getSite = site => {
|
|
246
|
+
return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
const getTakeoverThumb = uri => {
|
|
250
|
+
const filename = uri.split('/').pop();
|
|
251
|
+
|
|
252
|
+
switch (filename) {
|
|
253
|
+
default:
|
|
254
|
+
return {
|
|
255
|
+
uri
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
const getTakeoverImage = uri => {
|
|
261
|
+
const filename = uri.split('/').pop();
|
|
262
|
+
|
|
263
|
+
switch (filename) {
|
|
264
|
+
default:
|
|
265
|
+
return {
|
|
266
|
+
uri
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
const getImageSource = (uri, isThumb) => {
|
|
272
|
+
if (uri == null) return null;
|
|
273
|
+
if (isThumb) return getTakeoverThumb(uri);
|
|
274
|
+
return getTakeoverImage(uri);
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
const getFirstName = name => {
|
|
278
|
+
if (_.isEmpty(name)) {
|
|
279
|
+
return name;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
return name.split(' ')[0];
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
const usersToSearchResult = (contacts, excludedUserIds) => {
|
|
286
|
+
let result = [];
|
|
287
|
+
contacts.forEach(user => {
|
|
288
|
+
result.push({
|
|
289
|
+
displayName: user.displayName,
|
|
290
|
+
id: user.objectID || user.id || user.ID || user.userId || user.Id,
|
|
291
|
+
profilePic: user.profilePic || user.photoURL || null,
|
|
292
|
+
unit: user.unit
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
result = _.reject(result, contact => {
|
|
296
|
+
return _.includes(excludedUserIds, contact.id);
|
|
297
|
+
});
|
|
298
|
+
return result;
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
const searchUsers = (source, term) => {
|
|
302
|
+
if (_.isEmpty(term)) {
|
|
303
|
+
return source;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
return _.filter(source, user => {
|
|
307
|
+
const split = user.displayName.split(' ');
|
|
308
|
+
return _.some(split, part => {
|
|
309
|
+
return part.toLowerCase().indexOf(term.toLowerCase()) === 0;
|
|
310
|
+
});
|
|
311
|
+
});
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
const getTabSettingsFromState = state => {
|
|
315
|
+
const tabSettings = state.user && state.user.interface || getSiteSettingFromState(state, 'TabSettings', null);
|
|
316
|
+
return tabSettings;
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
const getEnabledTabsFromState = state => {
|
|
320
|
+
const tabSettings = getTabSettingsFromState(state);
|
|
321
|
+
return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
const getReactions = () => {
|
|
325
|
+
return [{
|
|
326
|
+
key: 'heart',
|
|
327
|
+
icon: require('./assets/icons/reactions/heart.png')
|
|
328
|
+
}, {
|
|
329
|
+
key: 'smile',
|
|
330
|
+
icon: require('./assets/icons/reactions/smile.png')
|
|
331
|
+
}, {
|
|
332
|
+
key: 'sad',
|
|
333
|
+
icon: require('./assets/icons/reactions/sad.png')
|
|
334
|
+
}, {
|
|
335
|
+
key: 'party',
|
|
336
|
+
icon: require('./assets/icons/reactions/party.png')
|
|
337
|
+
}];
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
const hasReacted = (reactions, userId) => {
|
|
341
|
+
return _.some(reactions, r => {
|
|
342
|
+
return !!r[userId];
|
|
343
|
+
});
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
const isTablet = () => {
|
|
347
|
+
return Dimensions.get('screen').width > 600;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
const isVimeo = url => {
|
|
351
|
+
if (_.isEmpty(url)) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (url.indexOf('https://vimeo.com/') === 0) {
|
|
356
|
+
return true;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (url.indexOf('https://player.vimeo.com/video/') === 0) {
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
const getVimeoEmbed = url => {
|
|
365
|
+
if (_.isEmpty(url)) {
|
|
366
|
+
return '';
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
if (url.indexOf('https://vimeo.com/') === 0) {
|
|
370
|
+
const vimeoId = 'lol'; //TODO
|
|
371
|
+
|
|
372
|
+
return `https://player.vimeo.com/video/${vimeoId}`;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return url; //TODO
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
const isYoutube = url => {
|
|
379
|
+
if (_.isUndefined(url) || _.isEmpty(url)) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
const regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
|
|
384
|
+
const match = url.match(regExp);
|
|
385
|
+
|
|
386
|
+
if (match && match[2].length === 11) {
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
return false;
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
const getYoutubeEmbed = url => {
|
|
394
|
+
const regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
|
|
395
|
+
const match = url.match(regExp);
|
|
396
|
+
return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
const getValidUrl = function () {
|
|
400
|
+
let url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
401
|
+
let newUrl = decodeURIComponent(url);
|
|
402
|
+
newUrl = newUrl.trim().replace(/\s/g, '');
|
|
403
|
+
|
|
404
|
+
if (/^(:\/\/)/.test(newUrl)) {
|
|
405
|
+
return `https${newUrl}`;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
if (!/^(f|ht)tps?:\/\//i.test(newUrl)) {
|
|
409
|
+
return `https://${newUrl}`;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
return newUrl;
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
const getUserPreview = user => {
|
|
416
|
+
return {
|
|
417
|
+
id: user.uid,
|
|
418
|
+
displayName: user.displayName,
|
|
419
|
+
profilePic: user.profilePic || null
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
const allowComments = canComment => {
|
|
424
|
+
if (canComment === false) {
|
|
425
|
+
return false;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
if (canComment === true) {
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
return Config.env.defaultAllowComments;
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
export { TIMESTAMP_FORMAT, DATE_FORMAT, getUrl, getAuthTokenHeader, getShadowStyle, StatusBarHeight, getStatusBarHeight, getSiteSettingFromState, getValueOrDefault, getExtension, getFileName, isVideo, getThumb300, get1400, getMimeType, getCompressed, imageExists, getPluralS, getPluralOptions, randomString, generateImageName, getSite, getImageSource, getFirstName, usersToSearchResult, searchUsers, getEnabledTabsFromState, getReactions, hasReacted, isTablet, isYoutube, getYoutubeEmbed, getValidUrl, getUserPreview, allowComments, isVideoUrl };
|
|
436
|
+
//# sourceMappingURL=helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["helper.js"],"names":["_","Platform","StatusBar","Dimensions","Constants","Config","LINEGREY","getSessionTokenAWS","TIMESTAMP_FORMAT","DATE_FORMAT","getUrl","baseAction","action","query","baseAPIUrl","baseStage","env","queryPart","keys","forEach","key","index","encodeURIComponent","getAuthTokenHeader","Promise","resolve","reject","then","idToken","getShadowStyle","OS","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","backgroundColor","borderColor","elevation","StatusBarHeight","size","getStatusBarHeight","statusBarHeight","currentHeight","getSiteSettingFromState","state","defaultValue","user","siteSettings","isUndefined","getValueOrDefault","value","def","getExtension","url","fileSplit","split","length","toLowerCase","getFileName","noExtension","name","isVideo","extension","includes","isVideoUrl","urlToCheck","getValidUrl","isYoutube","isVimeo","isStockImage","indexOf","getThumb300","replace","baseUploadsUrl","urlToUse","substring","get1400","getMimeType","getCompressed","imageExists","fetch","method","cache","response","status","catch","getPluralS","count","getPluralOptions","singular","plural","randomString","c","r","Math","random","v","toString","generateImageName","source","result","last","getSite","site","preferredSite","getTakeoverThumb","uri","filename","pop","getTakeoverImage","getImageSource","isThumb","getFirstName","isEmpty","usersToSearchResult","contacts","excludedUserIds","push","displayName","id","objectID","ID","userId","Id","profilePic","photoURL","unit","contact","searchUsers","term","filter","some","part","getTabSettingsFromState","tabSettings","interface","getEnabledTabsFromState","tab","isEnabled","getReactions","icon","require","hasReacted","reactions","isTablet","get","getVimeoEmbed","vimeoId","regExp","match","getYoutubeEmbed","newUrl","decodeURIComponent","trim","test","getUserPreview","uid","allowComments","canComment","defaultAllowComments"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Platform, StatusBar, Dimensions } from 'react-native';\nimport Constants from 'expo-constants';\nimport Config from './config';\nimport { LINEGREY } from './colours';\nimport { getSessionTokenAWS } from './session';\n\nconst TIMESTAMP_FORMAT = 'D MMM • h:mma';\nconst DATE_FORMAT = 'D MMM YYYY';\n\nconst getUrl = (baseAction, action, query) => {\n const { baseAPIUrl, baseStage } = Config.env;\n let queryPart = '';\n if (query) {\n _.keys(query).forEach((key, index) => {\n queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;\n });\n }\n return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;\n};\n\nconst getAuthTokenHeader = () => {\n return new Promise((resolve, reject) => {\n getSessionTokenAWS().then(idToken => {\n resolve(`Bearer ${idToken}`);\n });\n });\n};\n\nconst getShadowStyle = () => {\n if (Platform.OS === 'ios') {\n return {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3,\n backgroundColor: '#fff',\n };\n }\n return {\n borderColor: LINEGREY,\n backgroundColor: '#fff',\n elevation: 8,\n };\n};\n\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nconst getSiteSettingFromState = (state, key, defaultValue) => {\n if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {\n return state.user.siteSettings[key];\n }\n return defaultValue || null;\n};\n\nconst getValueOrDefault = (value, def) => {\n return !_.isUndefined(value) ? value : def;\n};\n\nconst getExtension = url => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('.');\n return fileSplit[fileSplit.length - 1].toLowerCase();\n};\n\nconst getFileName = (url, noExtension) => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('/');\n const name = fileSplit[fileSplit.length - 1].toLowerCase();\n if (!noExtension) {\n return name;\n }\n return name.split('.')[0];\n};\n\nconst isVideo = url => {\n const extension = getExtension(url);\n return ['mov', 'mp4'].includes(extension);\n};\n\nconst isVideoUrl = url => {\n const urlToCheck = getValidUrl(url);\n if (isVideo(urlToCheck)) {\n return true;\n }\n if (isYoutube(urlToCheck)) {\n return true;\n }\n if (isVimeo(urlToCheck)) {\n return true;\n }\n return false;\n};\n\nconst isStockImage = url => {\n return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;\n};\n\nconst getThumb300 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url\n .replace('/uploads/', '/uploads-thumb/')\n .replace('/general/', '/general300/')\n .replace('/uploads1400/', '/uploads-thumb/')\n .replace('/general1400/', '/general300/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');\n }\n return url;\n};\n\nconst get1400 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/1400/');\n }\n return url;\n};\n\nconst getMimeType = url => {\n const extension = getExtension(url);\n switch (extension) {\n case 'mov':\n return 'video/quicktime';\n case 'mp4':\n return 'video/mp4';\n default:\n return 'image/jpeg';\n }\n};\n\nconst getCompressed = url => {\n if (!url || typeof url !== 'string') return '';\n return url.replace('/uploads/', '/compressed/');\n};\n\nconst imageExists = url => {\n return new Promise(resolve => {\n fetch(url, { method: 'HEAD', cache: 'no-cache' })\n .then(response => {\n resolve(response.status === 200);\n })\n .catch(() => {\n resolve(false);\n });\n });\n};\n\nconst getPluralS = count => {\n return count === 1 ? '' : 's';\n};\n\nconst getPluralOptions = (count, singular, plural) => {\n if (count === 1) {\n return singular;\n }\n return plural;\n};\n\nconst randomString = (name = '') => {\n return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst generateImageName = (name, source) => {\n let result = randomString(name);\n if (source) {\n result += `.${_.last(source.split('.'))}`;\n }\n return result;\n};\n\nconst getSite = site => {\n return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;\n};\n\nconst getTakeoverThumb = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getTakeoverImage = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getImageSource = (uri, isThumb) => {\n if (uri == null) return null;\n if (isThumb) return getTakeoverThumb(uri);\n return getTakeoverImage(uri);\n};\n\nconst getFirstName = name => {\n if (_.isEmpty(name)) {\n return name;\n }\n return name.split(' ')[0];\n};\n\nconst usersToSearchResult = (contacts, excludedUserIds) => {\n let result = [];\n contacts.forEach(user => {\n result.push({\n displayName: user.displayName,\n id: user.objectID || user.id || user.ID || user.userId || user.Id,\n profilePic: user.profilePic || user.photoURL || null,\n unit: user.unit,\n });\n });\n result = _.reject(result, contact => {\n return _.includes(excludedUserIds, contact.id);\n });\n return result;\n};\n\nconst searchUsers = (source, term) => {\n if (_.isEmpty(term)) {\n return source;\n }\n return _.filter(source, user => {\n const split = user.displayName.split(' ');\n return _.some(split, part => {\n return part.toLowerCase().indexOf(term.toLowerCase()) === 0;\n });\n });\n};\n\nconst getTabSettingsFromState = state => {\n const tabSettings = (state.user && state.user.interface) || getSiteSettingFromState(state, 'TabSettings', null);\n return tabSettings;\n};\n\nconst getEnabledTabsFromState = state => {\n const tabSettings = getTabSettingsFromState(state);\n return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];\n};\n\nconst getReactions = () => {\n return [\n {\n key: 'heart',\n icon: require('./assets/icons/reactions/heart.png'),\n },\n {\n key: 'smile',\n icon: require('./assets/icons/reactions/smile.png'),\n },\n {\n key: 'sad',\n icon: require('./assets/icons/reactions/sad.png'),\n },\n {\n key: 'party',\n icon: require('./assets/icons/reactions/party.png'),\n },\n ];\n};\n\nconst hasReacted = (reactions, userId) => {\n return _.some(reactions, r => {\n return !!r[userId];\n });\n};\n\nconst isTablet = () => {\n return Dimensions.get('screen').width > 600;\n};\n\nconst isVimeo = url => {\n if (_.isEmpty(url)) {\n return false;\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n return true;\n }\n if (url.indexOf('https://player.vimeo.com/video/') === 0) {\n return true;\n }\n};\n\nconst getVimeoEmbed = url => {\n if (_.isEmpty(url)) {\n return '';\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n const vimeoId = 'lol'; //TODO\n return `https://player.vimeo.com/video/${vimeoId}`;\n }\n return url; //TODO\n};\n\nconst isYoutube = url => {\n if (_.isUndefined(url) || _.isEmpty(url)) {\n return false;\n }\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n if (match && match[2].length === 11) {\n return true;\n }\n return false;\n};\n\nconst getYoutubeEmbed = url => {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n};\n\nconst getValidUrl = (url = '') => {\n let newUrl = decodeURIComponent(url);\n newUrl = newUrl.trim().replace(/\\s/g, '');\n\n if (/^(:\\/\\/)/.test(newUrl)) {\n return `https${newUrl}`;\n }\n if (!/^(f|ht)tps?:\\/\\//i.test(newUrl)) {\n return `https://${newUrl}`;\n }\n\n return newUrl;\n};\n\nconst getUserPreview = user => {\n return {\n id: user.uid,\n displayName: user.displayName,\n profilePic: user.profilePic || null,\n };\n};\n\nconst allowComments = canComment => {\n if (canComment === false) {\n return false;\n }\n if (canComment === true) {\n return true;\n }\n return Config.env.defaultAllowComments;\n};\n\nexport {\n TIMESTAMP_FORMAT,\n DATE_FORMAT,\n getUrl,\n getAuthTokenHeader,\n getShadowStyle,\n StatusBarHeight,\n getStatusBarHeight,\n getSiteSettingFromState,\n getValueOrDefault,\n getExtension,\n getFileName,\n isVideo,\n getThumb300,\n get1400,\n getMimeType,\n getCompressed,\n imageExists,\n getPluralS,\n getPluralOptions,\n randomString,\n generateImageName,\n getSite,\n getImageSource,\n getFirstName,\n usersToSearchResult,\n searchUsers,\n getEnabledTabsFromState,\n getReactions,\n hasReacted,\n isTablet,\n isYoutube,\n getYoutubeEmbed,\n getValidUrl,\n getUserPreview,\n allowComments,\n isVideoUrl,\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Config from './config';
|
|
2
|
+
import Styles from './styles';
|
|
3
|
+
import * as Session from './session';
|
|
4
|
+
import * as Helper from './helper';
|
|
5
|
+
import * as Colours from './colours';
|
|
6
|
+
import * as Actions from './actions';
|
|
7
|
+
import * as ActionTypes from './actions/types';
|
|
8
|
+
import * as Apis from './apis';
|
|
9
|
+
import * as Components from './components';
|
|
10
|
+
import * as Fonts from './fonts';
|
|
11
|
+
import * as Constants from './constants';
|
|
12
|
+
export { Config, Styles, Session, Helper, Colours, Actions, ActionTypes, Apis, Components, Fonts, Constants };
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":["Config","Styles","Session","Helper","Colours","Actions","ActionTypes","Apis","Components","Fonts","Constants"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,UAAnB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAO,KAAKC,OAAZ,MAAyB,WAAzB;AACA,OAAO,KAAKC,MAAZ,MAAwB,UAAxB;AACA,OAAO,KAAKC,OAAZ,MAAyB,WAAzB;AACA,OAAO,KAAKC,OAAZ,MAAyB,WAAzB;AACA,OAAO,KAAKC,WAAZ,MAA6B,iBAA7B;AACA,OAAO,KAAKC,IAAZ,MAAsB,QAAtB;AACA,OAAO,KAAKC,UAAZ,MAA4B,cAA5B;AACA,OAAO,KAAKC,KAAZ,MAAuB,SAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AAEA,SAASV,MAAT,EAAiBC,MAAjB,EAAyBC,OAAzB,EAAkCC,MAAlC,EAA0CC,OAA1C,EAAmDC,OAAnD,EAA4DC,WAA5D,EAAyEC,IAAzE,EAA+EC,UAA/E,EAA2FC,KAA3F,EAAkGC,SAAlG","sourcesContent":["import Config from './config';\nimport Styles from './styles';\nimport * as Session from './session';\nimport * as Helper from './helper';\nimport * as Colours from './colours';\nimport * as Actions from './actions';\nimport * as ActionTypes from './actions/types';\nimport * as Apis from './apis';\nimport * as Components from './components';\nimport * as Fonts from './fonts';\nimport * as Constants from './constants';\n\nexport { Config, Styles, Session, Helper, Colours, Actions, ActionTypes, Apis, Components, Fonts, Constants };\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { Auth } from 'aws-amplify';
|
|
4
|
+
export const getSessionTokenAWS = async prefix => {
|
|
5
|
+
const data = await Auth.currentSession();
|
|
6
|
+
const token = data.accessToken.jwtToken;
|
|
7
|
+
if (_.isUndefined(prefix)) return token;
|
|
8
|
+
return `${prefix} ${token}`;
|
|
9
|
+
}; // export const getRefreshTokenAWS = async () => {
|
|
10
|
+
// const data = await Auth.currentSession();
|
|
11
|
+
// return data.getRefreshToken().token;
|
|
12
|
+
// };
|
|
13
|
+
|
|
14
|
+
export const getSessionUidAWS = () => {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
Auth.currentSession().then(data => {
|
|
17
|
+
resolve(data.accessToken.payload.username);
|
|
18
|
+
}).catch(err => {
|
|
19
|
+
console.log('getSessionUidAWS error', err);
|
|
20
|
+
reject(err);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
export const authedFunction = async request => {
|
|
25
|
+
const authkey = await getSessionTokenAWS();
|
|
26
|
+
if (!request.headers) request.headers = {};
|
|
27
|
+
request.headers.authkey = authkey;
|
|
28
|
+
return axios(request);
|
|
29
|
+
}; // export const LogoutAWS = () => {
|
|
30
|
+
// return new Promise((resolve, reject) => {
|
|
31
|
+
// Auth.signOut()
|
|
32
|
+
// .then(() => {
|
|
33
|
+
// resolve();
|
|
34
|
+
// })
|
|
35
|
+
// .catch(err => {
|
|
36
|
+
// reject(err);
|
|
37
|
+
// });
|
|
38
|
+
// });
|
|
39
|
+
// };
|
|
40
|
+
// export const isTheBest = auth => {
|
|
41
|
+
// return auth && auth.site === 'plussSpace' && auth.type === 'master';
|
|
42
|
+
// };
|
|
43
|
+
|
|
44
|
+
export const getApiError = error => {
|
|
45
|
+
if (!__DEV__) return error;
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const errorData = error.response.data;
|
|
49
|
+
return errorData || error;
|
|
50
|
+
} catch (e) {
|
|
51
|
+
return error;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["session.js"],"names":["_","axios","Auth","getSessionTokenAWS","prefix","data","currentSession","token","accessToken","jwtToken","isUndefined","getSessionUidAWS","Promise","resolve","reject","then","payload","username","catch","err","console","log","authedFunction","request","authkey","headers","getApiError","error","__DEV__","errorData","response","e"],"mappings":"AAAA,OAAOA,CAAP,MAAc,QAAd;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,aAArB;AAEA,OAAO,MAAMC,kBAAkB,GAAG,MAAMC,MAAN,IAAgB;AAChD,QAAMC,IAAI,GAAG,MAAMH,IAAI,CAACI,cAAL,EAAnB;AACA,QAAMC,KAAK,GAAGF,IAAI,CAACG,WAAL,CAAiBC,QAA/B;AACA,MAAIT,CAAC,CAACU,WAAF,CAAcN,MAAd,CAAJ,EAA2B,OAAOG,KAAP;AAC3B,SAAQ,GAAEH,MAAO,IAAGG,KAAM,EAA1B;AACD,CALM,C,CAOP;AACA;AACA;AACA;;AAEA,OAAO,MAAMI,gBAAgB,GAAG,MAAM;AACpC,SAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtCZ,IAAAA,IAAI,CAACI,cAAL,GACGS,IADH,CACQV,IAAI,IAAI;AACZQ,MAAAA,OAAO,CAACR,IAAI,CAACG,WAAL,CAAiBQ,OAAjB,CAAyBC,QAA1B,CAAP;AACD,KAHH,EAIGC,KAJH,CAISC,GAAG,IAAI;AACZC,MAAAA,OAAO,CAACC,GAAR,CAAY,wBAAZ,EAAsCF,GAAtC;AACAL,MAAAA,MAAM,CAACK,GAAD,CAAN;AACD,KAPH;AAQD,GATM,CAAP;AAUD,CAXM;AAaP,OAAO,MAAMG,cAAc,GAAG,MAAMC,OAAN,IAAiB;AAC7C,QAAMC,OAAO,GAAG,MAAMrB,kBAAkB,EAAxC;AACA,MAAI,CAACoB,OAAO,CAACE,OAAb,EAAsBF,OAAO,CAACE,OAAR,GAAkB,EAAlB;AACtBF,EAAAA,OAAO,CAACE,OAAR,CAAgBD,OAAhB,GAA0BA,OAA1B;AAEA,SAAOvB,KAAK,CAACsB,OAAD,CAAZ;AACD,CANM,C,CAQP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA,OAAO,MAAMG,WAAW,GAAGC,KAAK,IAAI;AAClC,MAAI,CAACC,OAAL,EAAc,OAAOD,KAAP;;AACd,MAAI;AACF,UAAME,SAAS,GAAGF,KAAK,CAACG,QAAN,CAAezB,IAAjC;AACA,WAAOwB,SAAS,IAAIF,KAApB;AACD,GAHD,CAGE,OAAOI,CAAP,EAAU;AACV,WAAOJ,KAAP;AACD;AACF,CARM","sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport { Auth } from 'aws-amplify';\n\nexport const getSessionTokenAWS = async prefix => {\n const data = await Auth.currentSession();\n const token = data.accessToken.jwtToken;\n if (_.isUndefined(prefix)) return token;\n return `${prefix} ${token}`;\n};\n\n// export const getRefreshTokenAWS = async () => {\n// const data = await Auth.currentSession();\n// return data.getRefreshToken().token;\n// };\n\nexport const getSessionUidAWS = () => {\n return new Promise((resolve, reject) => {\n Auth.currentSession()\n .then(data => {\n resolve(data.accessToken.payload.username);\n })\n .catch(err => {\n console.log('getSessionUidAWS error', err);\n reject(err);\n });\n });\n};\n\nexport const authedFunction = async request => {\n const authkey = await getSessionTokenAWS();\n if (!request.headers) request.headers = {};\n request.headers.authkey = authkey;\n\n return axios(request);\n};\n\n// export const LogoutAWS = () => {\n// return new Promise((resolve, reject) => {\n// Auth.signOut()\n// .then(() => {\n// resolve();\n// })\n// .catch(err => {\n// reject(err);\n// });\n// });\n// };\n\n// export const isTheBest = auth => {\n// return auth && auth.site === 'plussSpace' && auth.type === 'master';\n// };\n\nexport const getApiError = error => {\n if (!__DEV__) return error;\n try {\n const errorData = error.response.data;\n return errorData || error;\n } catch (e) {\n return error;\n }\n};\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
import { COLOUR_GREEN } from './colours';
|
|
3
|
+
export default StyleSheet.create({
|
|
4
|
+
notificationBell: {
|
|
5
|
+
height: 70,
|
|
6
|
+
width: 55,
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
flexDirection: 'row',
|
|
9
|
+
justifyContent: 'space-between'
|
|
10
|
+
},
|
|
11
|
+
fill: {
|
|
12
|
+
flex: 1
|
|
13
|
+
},
|
|
14
|
+
genericPageContainer: {
|
|
15
|
+
flex: 1,
|
|
16
|
+
backgroundColor: '#fff'
|
|
17
|
+
},
|
|
18
|
+
addButton: {
|
|
19
|
+
position: 'absolute',
|
|
20
|
+
bottom: 16,
|
|
21
|
+
right: 16,
|
|
22
|
+
height: 48,
|
|
23
|
+
width: 48,
|
|
24
|
+
borderRadius: 23,
|
|
25
|
+
justifyContent: 'center',
|
|
26
|
+
zIndex: 200,
|
|
27
|
+
elevation: 2,
|
|
28
|
+
shadowColor: '#000',
|
|
29
|
+
shadowOffset: {
|
|
30
|
+
width: 0,
|
|
31
|
+
height: 2
|
|
32
|
+
},
|
|
33
|
+
shadowOpacity: 0.15,
|
|
34
|
+
shadowRadius: 6
|
|
35
|
+
},
|
|
36
|
+
addButtonIcon: {
|
|
37
|
+
color: '#fff',
|
|
38
|
+
fontSize: 16,
|
|
39
|
+
alignSelf: 'center'
|
|
40
|
+
},
|
|
41
|
+
backButton: {
|
|
42
|
+
height: 32,
|
|
43
|
+
width: 32,
|
|
44
|
+
borderRadius: 15,
|
|
45
|
+
justifyContent: 'center',
|
|
46
|
+
alignItems: 'center'
|
|
47
|
+
},
|
|
48
|
+
backButtonIcon: {
|
|
49
|
+
color: '#fff',
|
|
50
|
+
fontSize: 18
|
|
51
|
+
},
|
|
52
|
+
tickBox: {
|
|
53
|
+
height: 20,
|
|
54
|
+
width: 20,
|
|
55
|
+
backgroundColor: COLOUR_GREEN,
|
|
56
|
+
borderRadius: 10,
|
|
57
|
+
justifyContent: 'center',
|
|
58
|
+
alignItems: 'center'
|
|
59
|
+
},
|
|
60
|
+
tickIcon: {
|
|
61
|
+
color: '#fff',
|
|
62
|
+
fontSize: 17,
|
|
63
|
+
paddingTop: 1,
|
|
64
|
+
paddingLeft: 1
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["styles.js"],"names":["StyleSheet","COLOUR_GREEN","create","notificationBell","height","width","alignItems","flexDirection","justifyContent","fill","flex","genericPageContainer","backgroundColor","addButton","position","bottom","right","borderRadius","zIndex","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","addButtonIcon","color","fontSize","alignSelf","backButton","backButtonIcon","tickBox","tickIcon","paddingTop","paddingLeft"],"mappings":"AAAA,SAASA,UAAT,QAA2B,cAA3B;AACA,SAASC,YAAT,QAA6B,WAA7B;AAEA,eAAeD,UAAU,CAACE,MAAX,CAAkB;AAC/BC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,MAAM,EAAE,EADQ;AAEhBC,IAAAA,KAAK,EAAE,EAFS;AAGhBC,IAAAA,UAAU,EAAE,QAHI;AAIhBC,IAAAA,aAAa,EAAE,KAJC;AAKhBC,IAAAA,cAAc,EAAE;AALA,GADa;AAQ/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF,GARyB;AAW/BC,EAAAA,oBAAoB,EAAE;AACpBD,IAAAA,IAAI,EAAE,CADc;AAEpBE,IAAAA,eAAe,EAAE;AAFG,GAXS;AAe/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,QAAQ,EAAE,UADD;AAETC,IAAAA,MAAM,EAAE,EAFC;AAGTC,IAAAA,KAAK,EAAE,EAHE;AAITZ,IAAAA,MAAM,EAAE,EAJC;AAKTC,IAAAA,KAAK,EAAE,EALE;AAMTY,IAAAA,YAAY,EAAE,EANL;AAOTT,IAAAA,cAAc,EAAE,QAPP;AAQTU,IAAAA,MAAM,EAAE,GARC;AASTC,IAAAA,SAAS,EAAE,CATF;AAUTC,IAAAA,WAAW,EAAE,MAVJ;AAWTC,IAAAA,YAAY,EAAE;AAAEhB,MAAAA,KAAK,EAAE,CAAT;AAAYD,MAAAA,MAAM,EAAE;AAApB,KAXL;AAYTkB,IAAAA,aAAa,EAAE,IAZN;AAaTC,IAAAA,YAAY,EAAE;AAbL,GAfoB;AA8B/BC,EAAAA,aAAa,EAAE;AACbC,IAAAA,KAAK,EAAE,MADM;AAEbC,IAAAA,QAAQ,EAAE,EAFG;AAGbC,IAAAA,SAAS,EAAE;AAHE,GA9BgB;AAmC/BC,EAAAA,UAAU,EAAE;AACVxB,IAAAA,MAAM,EAAE,EADE;AAEVC,IAAAA,KAAK,EAAE,EAFG;AAGVY,IAAAA,YAAY,EAAE,EAHJ;AAIVT,IAAAA,cAAc,EAAE,QAJN;AAKVF,IAAAA,UAAU,EAAE;AALF,GAnCmB;AA0C/BuB,EAAAA,cAAc,EAAE;AACdJ,IAAAA,KAAK,EAAE,MADO;AAEdC,IAAAA,QAAQ,EAAE;AAFI,GA1Ce;AA8C/BI,EAAAA,OAAO,EAAE;AACP1B,IAAAA,MAAM,EAAE,EADD;AAEPC,IAAAA,KAAK,EAAE,EAFA;AAGPO,IAAAA,eAAe,EAAEX,YAHV;AAIPgB,IAAAA,YAAY,EAAE,EAJP;AAKPT,IAAAA,cAAc,EAAE,QALT;AAMPF,IAAAA,UAAU,EAAE;AANL,GA9CsB;AAsD/ByB,EAAAA,QAAQ,EAAE;AACRN,IAAAA,KAAK,EAAE,MADC;AAERC,IAAAA,QAAQ,EAAE,EAFF;AAGRM,IAAAA,UAAU,EAAE,CAHJ;AAIRC,IAAAA,WAAW,EAAE;AAJL;AAtDqB,CAAlB,CAAf","sourcesContent":["import { StyleSheet } from 'react-native';\nimport { COLOUR_GREEN } from './colours';\n\nexport default StyleSheet.create({\n notificationBell: {\n height: 70,\n width: 55,\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n fill: {\n flex: 1,\n },\n genericPageContainer: {\n flex: 1,\n backgroundColor: '#fff',\n },\n addButton: {\n position: 'absolute',\n bottom: 16,\n right: 16,\n height: 48,\n width: 48,\n borderRadius: 23,\n justifyContent: 'center',\n zIndex: 200,\n elevation: 2,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 6,\n },\n addButtonIcon: {\n color: '#fff',\n fontSize: 16,\n alignSelf: 'center',\n },\n backButton: {\n height: 32,\n width: 32,\n borderRadius: 15,\n justifyContent: 'center',\n alignItems: 'center',\n },\n backButtonIcon: {\n color: '#fff',\n fontSize: 18,\n },\n tickBox: {\n height: 20,\n width: 20,\n backgroundColor: COLOUR_GREEN,\n borderRadius: 10,\n justifyContent: 'center',\n alignItems: 'center',\n },\n tickIcon: {\n color: '#fff',\n fontSize: 17,\n paddingTop: 1,\n paddingLeft: 1,\n },\n});\n"]}
|