@plusscommunities/pluss-maintenance-app 6.0.21 → 6.0.23-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.
@@ -1,21 +1,21 @@
1
1
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
2
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
3
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
- import React, { Component } from "react";
5
- import { ScrollView, View, StyleSheet, Text, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from "react-native";
6
- import DateTimePicker from "react-native-modal-datetime-picker";
7
- import { Icon } from "react-native-elements";
8
- import _ from "lodash";
9
- import moment from "moment";
10
- import { connect } from "react-redux";
11
- import { maintenanceActions } from "../apis";
12
- import { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from "../actions";
13
- import StatusSelectorPopup from "../components/StatusSelectorPopup";
14
- import PrioritySelectorPopup from "../components/PrioritySelectorPopup";
15
- import { getJobStatus, getJobPriority } from "../helper";
16
- import { Services } from "../feature.config";
17
- import { Colours, Helper, Components, Config } from "../core.config";
18
- import { values } from "../values.config";
4
+ import React, { Component } from 'react';
5
+ import { ScrollView, View, StyleSheet, Text, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from 'react-native';
6
+ import DateTimePicker from 'react-native-modal-datetime-picker';
7
+ import { Icon } from 'react-native-elements';
8
+ import _ from 'lodash';
9
+ import moment from 'moment';
10
+ import { connect } from 'react-redux';
11
+ import { maintenanceActions } from '../apis';
12
+ import { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from '../actions';
13
+ import StatusSelectorPopup from '../components/StatusSelectorPopup';
14
+ import PrioritySelectorPopup from '../components/PrioritySelectorPopup';
15
+ import { getJobStatus, getJobPriority } from '../helper';
16
+ import { Services } from '../feature.config';
17
+ import { Colours, Helper, Components, Config } from '../core.config';
18
+ import { values } from '../values.config';
19
19
  class RequestDetail extends Component {
20
20
  constructor(props) {
21
21
  super(props);
@@ -31,14 +31,14 @@ class RequestDetail extends Component {
31
31
  // Refresh external sync data when job is refreshed
32
32
  this.getExternalSync();
33
33
  } catch (error) {
34
- console.log("getJob error", error.toString());
34
+ console.log('getJob error', error.toString());
35
35
  // check for 403 or 404 error
36
36
  if (error.response.status === 403 || error.response.status === 404) {
37
37
  this.setState({
38
38
  forbidden: true
39
39
  });
40
40
  }
41
- console.log("getJob error", error);
41
+ console.log('getJob error', error);
42
42
  } finally {
43
43
  this.setState({
44
44
  loading: false
@@ -54,7 +54,7 @@ class RequestDetail extends Component {
54
54
  assignees: res.data.Users
55
55
  });
56
56
  } catch (error) {
57
- console.log("getAssignees error", error);
57
+ console.log('getAssignees error', error);
58
58
  }
59
59
  });
60
60
  _defineProperty(this, "getExternalSync", async () => {
@@ -75,7 +75,7 @@ class RequestDetail extends Component {
75
75
  var _error$response;
76
76
  // 404 is expected if no sync - don't show error
77
77
  if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) !== 404) {
78
- console.log("getExternalSync error", error);
78
+ console.log('getExternalSync error', error);
79
79
  }
80
80
  this.setState({
81
81
  loadingExternalSync: false
@@ -101,7 +101,7 @@ class RequestDetail extends Component {
101
101
  const updated = {
102
102
  id: job.id,
103
103
  seen: true,
104
- status: job.status || "Unassigned"
104
+ status: job.status || 'Unassigned'
105
105
  };
106
106
  const res = await maintenanceActions.editJob(updated, user.site);
107
107
  // console.log('markSeen updated');
@@ -112,7 +112,7 @@ class RequestDetail extends Component {
112
112
  seen: true
113
113
  });
114
114
  } catch (error) {
115
- console.log("markSeen error", error);
115
+ console.log('markSeen error', error);
116
116
  this.setState({
117
117
  loading: false
118
118
  });
@@ -140,7 +140,7 @@ class RequestDetail extends Component {
140
140
  this.props.jobAdded(res.data.job);
141
141
  this.getJob();
142
142
  } catch (error) {
143
- console.log("updateJob error", error);
143
+ console.log('updateJob error', error);
144
144
  } finally {
145
145
  this.setState({
146
146
  loading: false
@@ -157,7 +157,7 @@ class RequestDetail extends Component {
157
157
  this.props.jobAdded(res.data.job);
158
158
  this.getJob();
159
159
  } catch (error) {
160
- console.log("updateJobStatus error", error);
160
+ console.log('updateJobStatus error', error);
161
161
  } finally {
162
162
  this.setState({
163
163
  loading: false
@@ -174,7 +174,7 @@ class RequestDetail extends Component {
174
174
  this.props.jobAdded(res.data.job);
175
175
  this.getJob();
176
176
  } catch (error) {
177
- console.log("updateJobPriority error", error);
177
+ console.log('updateJobPriority error', error);
178
178
  } finally {
179
179
  this.setState({
180
180
  loading: false
@@ -231,7 +231,7 @@ class RequestDetail extends Component {
231
231
  });
232
232
  _defineProperty(this, "onOpenDatePicker", () => {
233
233
  this.setState({
234
- popUpType: "date",
234
+ popUpType: 'date',
235
235
  isDateTimePickerVisible: true
236
236
  });
237
237
  });
@@ -241,11 +241,11 @@ class RequestDetail extends Component {
241
241
  });
242
242
  });
243
243
  _defineProperty(this, "onDateSelected", date => {
244
- if (this.state.popUpType === "date") {
244
+ if (this.state.popUpType === 'date') {
245
245
  date = moment(date);
246
246
  this.setState({
247
247
  expectedDate: date,
248
- expectedDateText: date.format("DD/MM/YYYY"),
248
+ expectedDateText: date.format('DD/MM/YYYY'),
249
249
  isDateTimePickerVisible: false
250
250
  }, () => {
251
251
  this.updateJob();
@@ -279,7 +279,7 @@ class RequestDetail extends Component {
279
279
  this.props.jobAdded(job.data);
280
280
  this.getJob();
281
281
  } catch (error) {
282
- console.log("onCommentAdded error", error);
282
+ console.log('onCommentAdded error', error);
283
283
  } finally {
284
284
  this.setState({
285
285
  loading: false
@@ -303,7 +303,7 @@ class RequestDetail extends Component {
303
303
  return false;
304
304
  });
305
305
  _defineProperty(this, "toggleFullscreenVideo", url => {
306
- if (typeof url !== "string") url = "";
306
+ if (typeof url !== 'string') url = '';
307
307
  this.setState({
308
308
  showFullscreenVideo: url.length > 0,
309
309
  currentVideoUrl: url
@@ -316,10 +316,10 @@ class RequestDetail extends Component {
316
316
  name: a.displayName
317
317
  };
318
318
  });
319
- Services.navigation.navigate("optionSelector", {
319
+ Services.navigation.navigate('optionSelector', {
320
320
  options,
321
321
  selection: this.state.job.AssigneeId,
322
- title: "Assign request",
322
+ title: 'Assign request',
323
323
  onSelect: this.onSelectAssignee
324
324
  });
325
325
  });
@@ -328,12 +328,12 @@ class RequestDetail extends Component {
328
328
  loading: true
329
329
  }, async () => {
330
330
  try {
331
- console.log("onSelectAssignee", this.props.job.id, assignee.key);
331
+ console.log('onSelectAssignee', this.props.job.id, assignee.key);
332
332
  const res = await maintenanceActions.assignJob(this.props.job.id, assignee.key);
333
333
  this.props.jobAdded(res.data.job);
334
334
  this.getJob();
335
335
  } catch (error) {
336
- console.log("onSelectAssignee error", error);
336
+ console.log('onSelectAssignee error', error);
337
337
  } finally {
338
338
  this.setState({
339
339
  loading: false
@@ -344,18 +344,18 @@ class RequestDetail extends Component {
344
344
  this.state = {
345
345
  job: {},
346
346
  isDateTimePickerVisible: false,
347
- popUpType: "",
348
- status: "",
349
- priority: "",
347
+ popUpType: '',
348
+ status: '',
349
+ priority: '',
350
350
  expectedDate: null,
351
- expectedDateText: "",
351
+ expectedDateText: '',
352
352
  seen: false,
353
353
  showMore: true,
354
354
  showStatusPopup: false,
355
355
  showPriorityPopup: false,
356
356
  loading: false,
357
357
  showFullscreenVideo: false,
358
- currentVideoUrl: "",
358
+ currentVideoUrl: '',
359
359
  galleryOpen: false,
360
360
  galleryImages: [],
361
361
  showMessages: false,
@@ -388,7 +388,7 @@ class RequestDetail extends Component {
388
388
  };
389
389
  if (job.expectedDate) {
390
390
  newState.expectedDate = moment(job.expectedDate);
391
- newState.expectedDateText = newState.expectedDate.format("DD/MM/YYYY");
391
+ newState.expectedDateText = newState.expectedDate.format('DD/MM/YYYY');
392
392
  }
393
393
  if (job.seen) newState.seen = job.seen;
394
394
  this.setState(newState, () => {
@@ -420,7 +420,7 @@ class RequestDetail extends Component {
420
420
  const statusOption = getJobStatus(status, this.props);
421
421
  const priority = getJobPriority(job.priority);
422
422
  const canEdit = this.hasPermission();
423
- const isStaff = this.props.user.category === "staff";
423
+ const isStaff = this.props.user.category === 'staff';
424
424
  const showSeen = !status || status === getJobStatus(null, this.props).text;
425
425
  return /*#__PURE__*/React.createElement(View, {
426
426
  style: {
@@ -465,7 +465,7 @@ class RequestDetail extends Component {
465
465
  style: styles.textSectionTextContainer
466
466
  }, /*#__PURE__*/React.createElement(Text, {
467
467
  style: styles.textSectionText
468
- }, moment(job.lastActivityUnix).format("ddd D MMMM, h:mm A"))))), /*#__PURE__*/React.createElement(View, {
468
+ }, moment(job.lastActivityUnix).format('ddd D MMMM, h:mm A'))))), /*#__PURE__*/React.createElement(View, {
469
469
  style: styles.jobInfoContainer
470
470
  }, /*#__PURE__*/React.createElement(View, {
471
471
  style: styles.jobStatusExpectedContainer
@@ -587,7 +587,7 @@ class RequestDetail extends Component {
587
587
  style: styles.documentTypeText
588
588
  }, document.ext)), /*#__PURE__*/React.createElement(Text, {
589
589
  style: styles.documentText
590
- }, `${document.name}${document.uploading ? ` - ${document.uploadProgress}` : ""}`));
590
+ }, `${document.name}${document.uploading ? ` - ${document.uploadProgress}` : ''}`));
591
591
  });
592
592
  }
593
593
  return null;
@@ -632,7 +632,7 @@ class RequestDetail extends Component {
632
632
  return /*#__PURE__*/React.createElement(Components.FormCardSectionOptionLauncher, {
633
633
  onPress: this.onOpenAssigneePicker,
634
634
  title: "Assigned To",
635
- value: job.Assignee ? job.Assignee.displayName : "Unassigned",
635
+ value: job.Assignee ? job.Assignee.displayName : 'Unassigned',
636
636
  textStyle: styles.detailsText,
637
637
  sectionStyle: styles.detailsSection
638
638
  }, content);
@@ -680,7 +680,7 @@ class RequestDetail extends Component {
680
680
  style: styles.externalSyncLabel
681
681
  }, "Synced:"), /*#__PURE__*/React.createElement(Text, {
682
682
  style: styles.externalSyncValue
683
- }, moment(externalSync.syncedAt).format("D MMM YYYY h:mma")))));
683
+ }, moment(externalSync.syncedAt).format('D MMM YYYY h:mma')))));
684
684
  }
685
685
  renderCustomFields() {
686
686
  const {
@@ -691,27 +691,27 @@ class RequestDetail extends Component {
691
691
  } = job;
692
692
  const renderAnswer = field => {
693
693
  switch (field.type) {
694
- case "date":
694
+ case 'date':
695
695
  return /*#__PURE__*/React.createElement(Text, {
696
696
  style: styles.customText
697
- }, field.answer ? moment(field.answer, "YYYY-MM-DD").format("DD MMM YYYY") : "");
698
- case "time":
697
+ }, field.answer ? moment(field.answer, 'YYYY-MM-DD').format('DD MMM YYYY') : '');
698
+ case 'time':
699
699
  return /*#__PURE__*/React.createElement(Text, {
700
700
  style: styles.customText
701
- }, field.answer ? moment(field.answer, "HH:mm").format("h:mm a") : "");
702
- case "yn":
701
+ }, field.answer ? moment(field.answer, 'HH:mm').format('h:mm a') : '');
702
+ case 'yn':
703
703
  return /*#__PURE__*/React.createElement(Text, {
704
704
  style: styles.customText
705
- }, field.answer ? "Yes" : "No");
706
- case "checkbox":
705
+ }, field.answer ? 'Yes' : 'No');
706
+ case 'checkbox':
707
707
  return /*#__PURE__*/React.createElement(Text, {
708
708
  style: styles.customText
709
- }, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
710
- case "image":
709
+ }, field.answer && Array.isArray(field.answer) ? field.answer.join(', ') : '');
710
+ case 'image':
711
711
  return /*#__PURE__*/React.createElement(View, {
712
712
  style: styles.customImage
713
713
  }, this.renderImage(field.answer));
714
- case "document":
714
+ case 'document':
715
715
  return /*#__PURE__*/React.createElement(View, {
716
716
  style: styles.customDocument
717
717
  }, this.renderDocument(field.answer));
@@ -722,8 +722,8 @@ class RequestDetail extends Component {
722
722
  }
723
723
  };
724
724
  return customFields.map((field, index) => {
725
- if (["staticTitle", "staticText"].includes(field.type)) return null;
726
- if (_.isNil(field.answer) || field.answer === "" || Array.isArray(field.answer) && field.answer.length === 0) return null;
725
+ if (['staticTitle', 'staticText'].includes(field.type)) return null;
726
+ if (_.isNil(field.answer) || field.answer === '' || Array.isArray(field.answer) && field.answer.length === 0) return null;
727
727
  return /*#__PURE__*/React.createElement(View, {
728
728
  key: index
729
729
  }, /*#__PURE__*/React.createElement(Text, {
@@ -742,10 +742,11 @@ class RequestDetail extends Component {
742
742
  return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Components.FormCardSectionOptionLauncher, {
743
743
  onPress: this.onToggleDetails,
744
744
  title: "Details",
745
- icon: this.state.showMore ? "angle-up" : "angle-down",
745
+ icon: this.state.showMore ? 'angle-up' : 'angle-down',
746
746
  textStyle: styles.detailsText,
747
747
  sectionStyle: styles.detailsSection
748
748
  }), this.state.showMore && /*#__PURE__*/React.createElement(View, null, hasCustomFields ? this.renderCustomFields() : null, !hasCustomFields ? /*#__PURE__*/React.createElement(React.Fragment, null, this.renderImage(job.images, job.image), !_.isEmpty(job.description) && /*#__PURE__*/React.createElement(Text, {
749
+ numberOfLines: 10,
749
750
  style: styles.jobDescriptionText
750
751
  }, job.description)) : null, /*#__PURE__*/React.createElement(Text, {
751
752
  style: styles.locationLabel
@@ -784,7 +785,7 @@ class RequestDetail extends Component {
784
785
  site: this.state.job.site || this.state.job.location,
785
786
  live: true,
786
787
  refreshFrequency: 10000,
787
- placeHolder: "",
788
+ placeHolder: '',
788
789
  style: {
789
790
  flex: 1,
790
791
  paddingHorizontal: 0,
@@ -804,7 +805,7 @@ class RequestDetail extends Component {
804
805
  height: 36
805
806
  },
806
807
  textStyle: {
807
- color: "#fff"
808
+ color: '#fff'
808
809
  },
809
810
  fullWidth: true
810
811
  }, "Leave Message"));
@@ -842,7 +843,7 @@ class RequestDetail extends Component {
842
843
  return /*#__PURE__*/React.createElement(Components.Forbidden, null);
843
844
  }
844
845
  return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
845
- behavior: Platform.OS === "ios" && "padding",
846
+ behavior: Platform.OS === 'ios' && 'padding',
846
847
  style: styles.container
847
848
  }, /*#__PURE__*/React.createElement(Components.Header, {
848
849
  leftIcon: "angle-left",
@@ -854,7 +855,7 @@ class RequestDetail extends Component {
854
855
  paddingBottom: 26
855
856
  },
856
857
  style: {
857
- height: "100%"
858
+ height: '100%'
858
859
  }
859
860
  }, /*#__PURE__*/React.createElement(View, {
860
861
  style: styles.innerContainer
@@ -870,7 +871,7 @@ class RequestDetail extends Component {
870
871
  const styles = StyleSheet.create({
871
872
  container: {
872
873
  flex: 1,
873
- backgroundColor: "#fff"
874
+ backgroundColor: '#fff'
874
875
  },
875
876
  innerContainer: {
876
877
  paddingTop: 23,
@@ -881,49 +882,49 @@ const styles = StyleSheet.create({
881
882
  paddingHorizontal: 12
882
883
  },
883
884
  jobIdText: {
884
- fontFamily: "sf-medium",
885
+ fontFamily: 'sf-medium',
885
886
  fontSize: 12,
886
887
  marginBottom: 4
887
888
  },
888
889
  jobTitleText: {
889
- fontFamily: "sf-semibold",
890
+ fontFamily: 'sf-semibold',
890
891
  fontSize: 20,
891
892
  color: Colours.TEXT_DARKEST,
892
893
  marginBottom: 8
893
894
  },
894
895
  jobTypeSeenContainer: {
895
- flexDirection: "row",
896
- alignItems: "center"
896
+ flexDirection: 'row',
897
+ alignItems: 'center'
897
898
  },
898
899
  jobTypeContainer: {
899
900
  padding: 4,
900
901
  minWidth: 80,
901
902
  maxWidth: 140,
902
903
  borderRadius: 4,
903
- justifyContent: "center"
904
+ justifyContent: 'center'
904
905
  },
905
906
  jobTypeText: {
906
- fontFamily: "sf-semibold",
907
+ fontFamily: 'sf-semibold',
907
908
  fontSize: 12,
908
- textAlign: "center",
909
- maxWidth: "100%"
909
+ textAlign: 'center',
910
+ maxWidth: '100%'
910
911
  },
911
912
  jobSeenContainer: {
912
- flexDirection: "row",
913
- alignItems: "center",
913
+ flexDirection: 'row',
914
+ alignItems: 'center',
914
915
  marginLeft: 10
915
916
  },
916
917
  jobSeenIcon: {
917
918
  fontSize: 12
918
919
  },
919
920
  jobSeenText: {
920
- fontFamily: "sf-semibold",
921
+ fontFamily: 'sf-semibold',
921
922
  fontSize: 12,
922
923
  marginLeft: 4
923
924
  },
924
925
  jobStatusDateText: {
925
926
  marginTop: 8,
926
- fontFamily: "sf-medium",
927
+ fontFamily: 'sf-medium',
927
928
  fontSize: 13,
928
929
  color: Colours.TEXT_LIGHT
929
930
  },
@@ -934,60 +935,60 @@ const styles = StyleSheet.create({
934
935
  paddingHorizontal: 12
935
936
  },
936
937
  jobStatusExpectedContainer: {
937
- flexDirection: "row",
938
- alignItems: "flex-start",
939
- justifyContent: "space-between"
938
+ flexDirection: 'row',
939
+ alignItems: 'flex-start',
940
+ justifyContent: 'space-between'
940
941
  },
941
942
  jobStatusOuterContainer: {
942
943
  // marginRight: 50,
943
944
  },
944
945
  jobStatusHeading: {
945
- fontFamily: "sf-bold",
946
+ fontFamily: 'sf-bold',
946
947
  fontSize: 11,
947
948
  letterSpacing: 0.8,
948
949
  color: Colours.TEXT_DARK,
949
950
  marginBottom: 6
950
951
  },
951
952
  jobStatusContainer: {
952
- flexDirection: "row",
953
- alignItems: "center",
953
+ flexDirection: 'row',
954
+ alignItems: 'center',
954
955
  width: 120,
955
956
  height: 30,
956
957
  paddingHorizontal: 8,
957
958
  borderRadius: 4
958
959
  },
959
960
  jobStatusIcon: {
960
- color: "#fff",
961
+ color: '#fff',
961
962
  fontSize: 14,
962
963
  marginRight: 8
963
964
  },
964
965
  jobStatusText: {
965
- color: "#fff",
966
- textAlign: "center",
967
- fontFamily: "sf-semibold",
966
+ color: '#fff',
967
+ textAlign: 'center',
968
+ fontFamily: 'sf-semibold',
968
969
  fontSize: 13,
969
970
  flex: 1,
970
- textAlign: "center"
971
+ textAlign: 'center'
971
972
  },
972
973
  jobPriorityOuterContainer: {
973
974
  marginTop: 12
974
975
  },
975
976
  jobExpectedDateContainer: {
976
977
  backgroundColor: Colours.BOXGREY,
977
- flexDirection: "row",
978
+ flexDirection: 'row',
978
979
  width: 115,
979
980
  height: 30,
980
981
  borderRadius: 4,
981
- alignItems: "center",
982
+ alignItems: 'center',
982
983
  paddingLeft: 8
983
984
  },
984
985
  jobExpectedDate: {
985
- fontFamily: "sf-regular",
986
+ fontFamily: 'sf-regular',
986
987
  fontSize: 13,
987
988
  color: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5)
988
989
  },
989
990
  detailsText: {
990
- fontFamily: "sf-semibold",
991
+ fontFamily: 'sf-semibold',
991
992
  fontSize: 16,
992
993
  color: Colours.TEXT_DARKEST
993
994
  },
@@ -998,55 +999,55 @@ const styles = StyleSheet.create({
998
999
  },
999
1000
  sideBySideImages: {
1000
1001
  flex: 1,
1001
- flexDirection: "row",
1002
- justifyContent: "space-between",
1002
+ flexDirection: 'row',
1003
+ justifyContent: 'space-between',
1003
1004
  marginBottom: 16
1004
1005
  },
1005
1006
  sideBySideImageContainer: {
1006
- backgroundColor: "#fff",
1007
- width: "48%",
1007
+ backgroundColor: '#fff',
1008
+ width: '48%',
1008
1009
  height: 150,
1009
1010
  borderRadius: 2,
1010
- overflow: "hidden"
1011
+ overflow: 'hidden'
1011
1012
  },
1012
1013
  singleImageContainer: {
1013
- backgroundColor: "#fff",
1014
- width: "100%",
1014
+ backgroundColor: '#fff',
1015
+ width: '100%',
1015
1016
  height: 150,
1016
1017
  flex: 1,
1017
1018
  borderRadius: 2,
1018
- overflow: "hidden",
1019
+ overflow: 'hidden',
1019
1020
  marginBottom: 16
1020
1021
  },
1021
1022
  imageContainer: {
1022
1023
  height: 150,
1023
- width: "auto",
1024
- justifyContent: "center"
1024
+ width: 'auto',
1025
+ justifyContent: 'center'
1025
1026
  },
1026
1027
  imagePlayContainer: {
1027
- position: "absolute",
1028
+ position: 'absolute',
1028
1029
  top: 0,
1029
1030
  left: 0,
1030
1031
  right: 0,
1031
1032
  bottom: 0,
1032
- alignItems: "center",
1033
- justifyContent: "center"
1033
+ alignItems: 'center',
1034
+ justifyContent: 'center'
1034
1035
  },
1035
1036
  imageControlIcon: {
1036
- color: "#fff",
1037
+ color: '#fff',
1037
1038
  fontSize: 30,
1038
- textShadowColor: "rgba(0,0,0,0.3)",
1039
+ textShadowColor: 'rgba(0,0,0,0.3)',
1039
1040
  textShadowOffset: {
1040
1041
  width: 2,
1041
1042
  height: 2
1042
1043
  }
1043
1044
  },
1044
1045
  plusImages: {
1045
- fontFamily: "sf-bold",
1046
+ fontFamily: 'sf-bold',
1046
1047
  fontSize: 32,
1047
- textAlign: "center",
1048
- color: "#fff",
1049
- textShadowColor: "rgba(0, 0, 0, 0.5)",
1048
+ textAlign: 'center',
1049
+ color: '#fff',
1050
+ textShadowColor: 'rgba(0, 0, 0, 0.5)',
1050
1051
  textShadowOffset: {
1051
1052
  width: 0,
1052
1053
  height: 2
@@ -1054,64 +1055,64 @@ const styles = StyleSheet.create({
1054
1055
  textShadowRadius: 8
1055
1056
  },
1056
1057
  jobDescriptionText: {
1057
- fontFamily: "sf-medium",
1058
+ fontFamily: 'sf-medium',
1058
1059
  fontSize: 14,
1059
1060
  color: Colours.TEXT_LIGHT,
1060
1061
  paddingBottom: 16
1061
1062
  },
1062
1063
  locationLabel: {
1063
- fontFamily: "sf-bold",
1064
+ fontFamily: 'sf-bold',
1064
1065
  fontSize: 14,
1065
1066
  color: Colours.TEXT_DARKEST
1066
1067
  },
1067
1068
  locationText: {
1068
- fontFamily: "sf-regular",
1069
+ fontFamily: 'sf-regular',
1069
1070
  fontSize: 16,
1070
1071
  color: Colours.TEXT_DARKEST,
1071
1072
  paddingVertical: 8
1072
1073
  },
1073
1074
  requesterLabel: {
1074
- fontFamily: "sf-bold",
1075
+ fontFamily: 'sf-bold',
1075
1076
  fontSize: 14,
1076
1077
  color: Colours.TEXT_DARKEST,
1077
1078
  paddingVertical: 10
1078
1079
  },
1079
1080
  profileContainer: {
1080
- flexDirection: "row",
1081
- alignItems: "center"
1081
+ flexDirection: 'row',
1082
+ alignItems: 'center'
1082
1083
  },
1083
1084
  nameContainer: {
1084
1085
  marginLeft: 18
1085
1086
  },
1086
1087
  nameText: {
1087
- fontSize: "sf-semibold",
1088
+ fontSize: 'sf-semibold',
1088
1089
  fontSize: 14,
1089
1090
  color: Colours.TEXT_DARKEST,
1090
1091
  marginBottom: 4
1091
1092
  },
1092
1093
  phoneText: {
1093
- fontSize: "sf-medium",
1094
+ fontSize: 'sf-medium',
1094
1095
  fontSize: 14,
1095
1096
  color: Colours.TEXT_LIGHT
1096
1097
  },
1097
1098
  textSectionInner: {
1098
- flexDirection: "row",
1099
- justifyContent: "space-between",
1100
- alignItems: "center",
1099
+ flexDirection: 'row',
1100
+ justifyContent: 'space-between',
1101
+ alignItems: 'center',
1101
1102
  marginTop: 8
1102
1103
  },
1103
1104
  textSectionLabel: {
1104
- fontFamily: "sf-semibold",
1105
+ fontFamily: 'sf-semibold',
1105
1106
  fontSize: 12,
1106
1107
  lineHeight: 24,
1107
1108
  color: Colours.TEXT_DARKEST
1108
1109
  },
1109
1110
  textSectionTextContainer: {
1110
- flexDirection: "row",
1111
- alignItems: "center"
1111
+ flexDirection: 'row',
1112
+ alignItems: 'center'
1112
1113
  },
1113
1114
  textSectionText: {
1114
- fontFamily: "sf-regular",
1115
+ fontFamily: 'sf-regular',
1115
1116
  fontSize: 13,
1116
1117
  lineHeight: 24,
1117
1118
  color: Colours.TEXT_LIGHT
@@ -1122,12 +1123,12 @@ const styles = StyleSheet.create({
1122
1123
  lineHeight: 24
1123
1124
  },
1124
1125
  customLabel: {
1125
- fontFamily: "sf-bold",
1126
+ fontFamily: 'sf-bold',
1126
1127
  fontSize: 14,
1127
1128
  color: Colours.TEXT_DARKEST
1128
1129
  },
1129
1130
  customText: {
1130
- fontFamily: "sf-regular",
1131
+ fontFamily: 'sf-regular',
1131
1132
  fontSize: 16,
1132
1133
  color: Colours.TEXT_DARKEST,
1133
1134
  paddingVertical: 8
@@ -1141,59 +1142,59 @@ const styles = StyleSheet.create({
1141
1142
  },
1142
1143
  customStaticTitle: {
1143
1144
  fontSize: 20,
1144
- fontFamily: "sf-semibold",
1145
+ fontFamily: 'sf-semibold',
1145
1146
  color: Colours.TEXT_DARKEST,
1146
1147
  marginBottom: 10
1147
1148
  },
1148
1149
  customStaticText: {
1149
1150
  fontSize: 17,
1150
- fontFamily: "sf-regular",
1151
+ fontFamily: 'sf-regular',
1151
1152
  color: Colours.TEXT_DARKEST,
1152
1153
  lineHeight: 24,
1153
1154
  marginBottom: 10
1154
1155
  },
1155
1156
  documentContainer: {
1156
- flexDirection: "row",
1157
- alignItems: "center",
1158
- justifyContent: "space-between",
1157
+ flexDirection: 'row',
1158
+ alignItems: 'center',
1159
+ justifyContent: 'space-between',
1159
1160
  paddingVertical: 4
1160
1161
  },
1161
1162
  documentTypeContainer: {
1162
1163
  width: 50,
1163
1164
  height: 60,
1164
- justifyContent: "center",
1165
- alignItems: "center",
1165
+ justifyContent: 'center',
1166
+ alignItems: 'center',
1166
1167
  borderRadius: 5,
1167
1168
  marginRight: 8
1168
1169
  },
1169
1170
  documentTypeText: {
1170
- color: "#fff",
1171
- fontFamily: "sf-semibold",
1172
- textAlign: "center"
1171
+ color: '#fff',
1172
+ fontFamily: 'sf-semibold',
1173
+ textAlign: 'center'
1173
1174
  },
1174
1175
  documentText: {
1175
1176
  flex: 1,
1176
- fontFamily: "sf-semibold",
1177
+ fontFamily: 'sf-semibold',
1177
1178
  fontSize: 16,
1178
- color: "#65686D"
1179
+ color: '#65686D'
1179
1180
  },
1180
1181
  externalSyncContainer: {
1181
- backgroundColor: "#fff",
1182
+ backgroundColor: '#fff',
1182
1183
  marginTop: 16,
1183
1184
  borderRadius: 8,
1184
1185
  padding: 16
1185
1186
  },
1186
1187
  externalSyncHeader: {
1187
- flexDirection: "row",
1188
- justifyContent: "space-between",
1189
- alignItems: "center",
1188
+ flexDirection: 'row',
1189
+ justifyContent: 'space-between',
1190
+ alignItems: 'center',
1190
1191
  marginBottom: 12,
1191
1192
  paddingBottom: 12,
1192
1193
  borderBottomWidth: 1,
1193
1194
  borderBottomColor: Colours.LINEGREY
1194
1195
  },
1195
1196
  externalSyncTitle: {
1196
- fontFamily: "sf-semibold",
1197
+ fontFamily: 'sf-semibold',
1197
1198
  fontSize: 16,
1198
1199
  color: Colours.TEXT_DARKEST
1199
1200
  },
@@ -1204,17 +1205,17 @@ const styles = StyleSheet.create({
1204
1205
  paddingTop: 4
1205
1206
  },
1206
1207
  externalSyncRow: {
1207
- flexDirection: "row",
1208
+ flexDirection: 'row',
1208
1209
  marginBottom: 10
1209
1210
  },
1210
1211
  externalSyncLabel: {
1211
- fontFamily: "sf-semibold",
1212
+ fontFamily: 'sf-semibold',
1212
1213
  fontSize: 14,
1213
1214
  color: Colours.TEXT_DARK,
1214
1215
  width: 100
1215
1216
  },
1216
1217
  externalSyncValue: {
1217
- fontFamily: "sf-regular",
1218
+ fontFamily: 'sf-regular',
1218
1219
  fontSize: 14,
1219
1220
  color: Colours.TEXT_DARKEST,
1220
1221
  flex: 1