@plusscommunities/pluss-maintenance-app-a 6.0.20 → 6.0.21

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,11 +742,10 @@ 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,
750
749
  style: styles.jobDescriptionText
751
750
  }, job.description)) : null, /*#__PURE__*/React.createElement(Text, {
752
751
  style: styles.locationLabel
@@ -785,7 +784,7 @@ class RequestDetail extends Component {
785
784
  site: this.state.job.site || this.state.job.location,
786
785
  live: true,
787
786
  refreshFrequency: 10000,
788
- placeHolder: '',
787
+ placeHolder: "",
789
788
  style: {
790
789
  flex: 1,
791
790
  paddingHorizontal: 0,
@@ -805,7 +804,7 @@ class RequestDetail extends Component {
805
804
  height: 36
806
805
  },
807
806
  textStyle: {
808
- color: '#fff'
807
+ color: "#fff"
809
808
  },
810
809
  fullWidth: true
811
810
  }, "Leave Message"));
@@ -843,7 +842,7 @@ class RequestDetail extends Component {
843
842
  return /*#__PURE__*/React.createElement(Components.Forbidden, null);
844
843
  }
845
844
  return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
846
- behavior: Platform.OS === 'ios' && 'padding',
845
+ behavior: Platform.OS === "ios" && "padding",
847
846
  style: styles.container
848
847
  }, /*#__PURE__*/React.createElement(Components.Header, {
849
848
  leftIcon: "angle-left",
@@ -855,7 +854,7 @@ class RequestDetail extends Component {
855
854
  paddingBottom: 26
856
855
  },
857
856
  style: {
858
- height: '100%'
857
+ height: "100%"
859
858
  }
860
859
  }, /*#__PURE__*/React.createElement(View, {
861
860
  style: styles.innerContainer
@@ -871,7 +870,7 @@ class RequestDetail extends Component {
871
870
  const styles = StyleSheet.create({
872
871
  container: {
873
872
  flex: 1,
874
- backgroundColor: '#fff'
873
+ backgroundColor: "#fff"
875
874
  },
876
875
  innerContainer: {
877
876
  paddingTop: 23,
@@ -882,49 +881,49 @@ const styles = StyleSheet.create({
882
881
  paddingHorizontal: 12
883
882
  },
884
883
  jobIdText: {
885
- fontFamily: 'sf-medium',
884
+ fontFamily: "sf-medium",
886
885
  fontSize: 12,
887
886
  marginBottom: 4
888
887
  },
889
888
  jobTitleText: {
890
- fontFamily: 'sf-semibold',
889
+ fontFamily: "sf-semibold",
891
890
  fontSize: 20,
892
891
  color: Colours.TEXT_DARKEST,
893
892
  marginBottom: 8
894
893
  },
895
894
  jobTypeSeenContainer: {
896
- flexDirection: 'row',
897
- alignItems: 'center'
895
+ flexDirection: "row",
896
+ alignItems: "center"
898
897
  },
899
898
  jobTypeContainer: {
900
899
  padding: 4,
901
900
  minWidth: 80,
902
901
  maxWidth: 140,
903
902
  borderRadius: 4,
904
- justifyContent: 'center'
903
+ justifyContent: "center"
905
904
  },
906
905
  jobTypeText: {
907
- fontFamily: 'sf-semibold',
906
+ fontFamily: "sf-semibold",
908
907
  fontSize: 12,
909
- textAlign: 'center',
910
- maxWidth: '100%'
908
+ textAlign: "center",
909
+ maxWidth: "100%"
911
910
  },
912
911
  jobSeenContainer: {
913
- flexDirection: 'row',
914
- alignItems: 'center',
912
+ flexDirection: "row",
913
+ alignItems: "center",
915
914
  marginLeft: 10
916
915
  },
917
916
  jobSeenIcon: {
918
917
  fontSize: 12
919
918
  },
920
919
  jobSeenText: {
921
- fontFamily: 'sf-semibold',
920
+ fontFamily: "sf-semibold",
922
921
  fontSize: 12,
923
922
  marginLeft: 4
924
923
  },
925
924
  jobStatusDateText: {
926
925
  marginTop: 8,
927
- fontFamily: 'sf-medium',
926
+ fontFamily: "sf-medium",
928
927
  fontSize: 13,
929
928
  color: Colours.TEXT_LIGHT
930
929
  },
@@ -935,60 +934,60 @@ const styles = StyleSheet.create({
935
934
  paddingHorizontal: 12
936
935
  },
937
936
  jobStatusExpectedContainer: {
938
- flexDirection: 'row',
939
- alignItems: 'flex-start',
940
- justifyContent: 'space-between'
937
+ flexDirection: "row",
938
+ alignItems: "flex-start",
939
+ justifyContent: "space-between"
941
940
  },
942
941
  jobStatusOuterContainer: {
943
942
  // marginRight: 50,
944
943
  },
945
944
  jobStatusHeading: {
946
- fontFamily: 'sf-bold',
945
+ fontFamily: "sf-bold",
947
946
  fontSize: 11,
948
947
  letterSpacing: 0.8,
949
948
  color: Colours.TEXT_DARK,
950
949
  marginBottom: 6
951
950
  },
952
951
  jobStatusContainer: {
953
- flexDirection: 'row',
954
- alignItems: 'center',
952
+ flexDirection: "row",
953
+ alignItems: "center",
955
954
  width: 120,
956
955
  height: 30,
957
956
  paddingHorizontal: 8,
958
957
  borderRadius: 4
959
958
  },
960
959
  jobStatusIcon: {
961
- color: '#fff',
960
+ color: "#fff",
962
961
  fontSize: 14,
963
962
  marginRight: 8
964
963
  },
965
964
  jobStatusText: {
966
- color: '#fff',
967
- textAlign: 'center',
968
- fontFamily: 'sf-semibold',
965
+ color: "#fff",
966
+ textAlign: "center",
967
+ fontFamily: "sf-semibold",
969
968
  fontSize: 13,
970
969
  flex: 1,
971
- textAlign: 'center'
970
+ textAlign: "center"
972
971
  },
973
972
  jobPriorityOuterContainer: {
974
973
  marginTop: 12
975
974
  },
976
975
  jobExpectedDateContainer: {
977
976
  backgroundColor: Colours.BOXGREY,
978
- flexDirection: 'row',
977
+ flexDirection: "row",
979
978
  width: 115,
980
979
  height: 30,
981
980
  borderRadius: 4,
982
- alignItems: 'center',
981
+ alignItems: "center",
983
982
  paddingLeft: 8
984
983
  },
985
984
  jobExpectedDate: {
986
- fontFamily: 'sf-regular',
985
+ fontFamily: "sf-regular",
987
986
  fontSize: 13,
988
987
  color: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5)
989
988
  },
990
989
  detailsText: {
991
- fontFamily: 'sf-semibold',
990
+ fontFamily: "sf-semibold",
992
991
  fontSize: 16,
993
992
  color: Colours.TEXT_DARKEST
994
993
  },
@@ -999,55 +998,55 @@ const styles = StyleSheet.create({
999
998
  },
1000
999
  sideBySideImages: {
1001
1000
  flex: 1,
1002
- flexDirection: 'row',
1003
- justifyContent: 'space-between',
1001
+ flexDirection: "row",
1002
+ justifyContent: "space-between",
1004
1003
  marginBottom: 16
1005
1004
  },
1006
1005
  sideBySideImageContainer: {
1007
- backgroundColor: '#fff',
1008
- width: '48%',
1006
+ backgroundColor: "#fff",
1007
+ width: "48%",
1009
1008
  height: 150,
1010
1009
  borderRadius: 2,
1011
- overflow: 'hidden'
1010
+ overflow: "hidden"
1012
1011
  },
1013
1012
  singleImageContainer: {
1014
- backgroundColor: '#fff',
1015
- width: '100%',
1013
+ backgroundColor: "#fff",
1014
+ width: "100%",
1016
1015
  height: 150,
1017
1016
  flex: 1,
1018
1017
  borderRadius: 2,
1019
- overflow: 'hidden',
1018
+ overflow: "hidden",
1020
1019
  marginBottom: 16
1021
1020
  },
1022
1021
  imageContainer: {
1023
1022
  height: 150,
1024
- width: 'auto',
1025
- justifyContent: 'center'
1023
+ width: "auto",
1024
+ justifyContent: "center"
1026
1025
  },
1027
1026
  imagePlayContainer: {
1028
- position: 'absolute',
1027
+ position: "absolute",
1029
1028
  top: 0,
1030
1029
  left: 0,
1031
1030
  right: 0,
1032
1031
  bottom: 0,
1033
- alignItems: 'center',
1034
- justifyContent: 'center'
1032
+ alignItems: "center",
1033
+ justifyContent: "center"
1035
1034
  },
1036
1035
  imageControlIcon: {
1037
- color: '#fff',
1036
+ color: "#fff",
1038
1037
  fontSize: 30,
1039
- textShadowColor: 'rgba(0,0,0,0.3)',
1038
+ textShadowColor: "rgba(0,0,0,0.3)",
1040
1039
  textShadowOffset: {
1041
1040
  width: 2,
1042
1041
  height: 2
1043
1042
  }
1044
1043
  },
1045
1044
  plusImages: {
1046
- fontFamily: 'sf-bold',
1045
+ fontFamily: "sf-bold",
1047
1046
  fontSize: 32,
1048
- textAlign: 'center',
1049
- color: '#fff',
1050
- textShadowColor: 'rgba(0, 0, 0, 0.5)',
1047
+ textAlign: "center",
1048
+ color: "#fff",
1049
+ textShadowColor: "rgba(0, 0, 0, 0.5)",
1051
1050
  textShadowOffset: {
1052
1051
  width: 0,
1053
1052
  height: 2
@@ -1055,64 +1054,64 @@ const styles = StyleSheet.create({
1055
1054
  textShadowRadius: 8
1056
1055
  },
1057
1056
  jobDescriptionText: {
1058
- fontFamily: 'sf-medium',
1057
+ fontFamily: "sf-medium",
1059
1058
  fontSize: 14,
1060
1059
  color: Colours.TEXT_LIGHT,
1061
1060
  paddingBottom: 16
1062
1061
  },
1063
1062
  locationLabel: {
1064
- fontFamily: 'sf-bold',
1063
+ fontFamily: "sf-bold",
1065
1064
  fontSize: 14,
1066
1065
  color: Colours.TEXT_DARKEST
1067
1066
  },
1068
1067
  locationText: {
1069
- fontFamily: 'sf-regular',
1068
+ fontFamily: "sf-regular",
1070
1069
  fontSize: 16,
1071
1070
  color: Colours.TEXT_DARKEST,
1072
1071
  paddingVertical: 8
1073
1072
  },
1074
1073
  requesterLabel: {
1075
- fontFamily: 'sf-bold',
1074
+ fontFamily: "sf-bold",
1076
1075
  fontSize: 14,
1077
1076
  color: Colours.TEXT_DARKEST,
1078
1077
  paddingVertical: 10
1079
1078
  },
1080
1079
  profileContainer: {
1081
- flexDirection: 'row',
1082
- alignItems: 'center'
1080
+ flexDirection: "row",
1081
+ alignItems: "center"
1083
1082
  },
1084
1083
  nameContainer: {
1085
1084
  marginLeft: 18
1086
1085
  },
1087
1086
  nameText: {
1088
- fontSize: 'sf-semibold',
1087
+ fontSize: "sf-semibold",
1089
1088
  fontSize: 14,
1090
1089
  color: Colours.TEXT_DARKEST,
1091
1090
  marginBottom: 4
1092
1091
  },
1093
1092
  phoneText: {
1094
- fontSize: 'sf-medium',
1093
+ fontSize: "sf-medium",
1095
1094
  fontSize: 14,
1096
1095
  color: Colours.TEXT_LIGHT
1097
1096
  },
1098
1097
  textSectionInner: {
1099
- flexDirection: 'row',
1100
- justifyContent: 'space-between',
1101
- alignItems: 'center',
1098
+ flexDirection: "row",
1099
+ justifyContent: "space-between",
1100
+ alignItems: "center",
1102
1101
  marginTop: 8
1103
1102
  },
1104
1103
  textSectionLabel: {
1105
- fontFamily: 'sf-semibold',
1104
+ fontFamily: "sf-semibold",
1106
1105
  fontSize: 12,
1107
1106
  lineHeight: 24,
1108
1107
  color: Colours.TEXT_DARKEST
1109
1108
  },
1110
1109
  textSectionTextContainer: {
1111
- flexDirection: 'row',
1112
- alignItems: 'center'
1110
+ flexDirection: "row",
1111
+ alignItems: "center"
1113
1112
  },
1114
1113
  textSectionText: {
1115
- fontFamily: 'sf-regular',
1114
+ fontFamily: "sf-regular",
1116
1115
  fontSize: 13,
1117
1116
  lineHeight: 24,
1118
1117
  color: Colours.TEXT_LIGHT
@@ -1123,12 +1122,12 @@ const styles = StyleSheet.create({
1123
1122
  lineHeight: 24
1124
1123
  },
1125
1124
  customLabel: {
1126
- fontFamily: 'sf-bold',
1125
+ fontFamily: "sf-bold",
1127
1126
  fontSize: 14,
1128
1127
  color: Colours.TEXT_DARKEST
1129
1128
  },
1130
1129
  customText: {
1131
- fontFamily: 'sf-regular',
1130
+ fontFamily: "sf-regular",
1132
1131
  fontSize: 16,
1133
1132
  color: Colours.TEXT_DARKEST,
1134
1133
  paddingVertical: 8
@@ -1142,59 +1141,59 @@ const styles = StyleSheet.create({
1142
1141
  },
1143
1142
  customStaticTitle: {
1144
1143
  fontSize: 20,
1145
- fontFamily: 'sf-semibold',
1144
+ fontFamily: "sf-semibold",
1146
1145
  color: Colours.TEXT_DARKEST,
1147
1146
  marginBottom: 10
1148
1147
  },
1149
1148
  customStaticText: {
1150
1149
  fontSize: 17,
1151
- fontFamily: 'sf-regular',
1150
+ fontFamily: "sf-regular",
1152
1151
  color: Colours.TEXT_DARKEST,
1153
1152
  lineHeight: 24,
1154
1153
  marginBottom: 10
1155
1154
  },
1156
1155
  documentContainer: {
1157
- flexDirection: 'row',
1158
- alignItems: 'center',
1159
- justifyContent: 'space-between',
1156
+ flexDirection: "row",
1157
+ alignItems: "center",
1158
+ justifyContent: "space-between",
1160
1159
  paddingVertical: 4
1161
1160
  },
1162
1161
  documentTypeContainer: {
1163
1162
  width: 50,
1164
1163
  height: 60,
1165
- justifyContent: 'center',
1166
- alignItems: 'center',
1164
+ justifyContent: "center",
1165
+ alignItems: "center",
1167
1166
  borderRadius: 5,
1168
1167
  marginRight: 8
1169
1168
  },
1170
1169
  documentTypeText: {
1171
- color: '#fff',
1172
- fontFamily: 'sf-semibold',
1173
- textAlign: 'center'
1170
+ color: "#fff",
1171
+ fontFamily: "sf-semibold",
1172
+ textAlign: "center"
1174
1173
  },
1175
1174
  documentText: {
1176
1175
  flex: 1,
1177
- fontFamily: 'sf-semibold',
1176
+ fontFamily: "sf-semibold",
1178
1177
  fontSize: 16,
1179
- color: '#65686D'
1178
+ color: "#65686D"
1180
1179
  },
1181
1180
  externalSyncContainer: {
1182
- backgroundColor: '#fff',
1181
+ backgroundColor: "#fff",
1183
1182
  marginTop: 16,
1184
1183
  borderRadius: 8,
1185
1184
  padding: 16
1186
1185
  },
1187
1186
  externalSyncHeader: {
1188
- flexDirection: 'row',
1189
- justifyContent: 'space-between',
1190
- alignItems: 'center',
1187
+ flexDirection: "row",
1188
+ justifyContent: "space-between",
1189
+ alignItems: "center",
1191
1190
  marginBottom: 12,
1192
1191
  paddingBottom: 12,
1193
1192
  borderBottomWidth: 1,
1194
1193
  borderBottomColor: Colours.LINEGREY
1195
1194
  },
1196
1195
  externalSyncTitle: {
1197
- fontFamily: 'sf-semibold',
1196
+ fontFamily: "sf-semibold",
1198
1197
  fontSize: 16,
1199
1198
  color: Colours.TEXT_DARKEST
1200
1199
  },
@@ -1205,17 +1204,17 @@ const styles = StyleSheet.create({
1205
1204
  paddingTop: 4
1206
1205
  },
1207
1206
  externalSyncRow: {
1208
- flexDirection: 'row',
1207
+ flexDirection: "row",
1209
1208
  marginBottom: 10
1210
1209
  },
1211
1210
  externalSyncLabel: {
1212
- fontFamily: 'sf-semibold',
1211
+ fontFamily: "sf-semibold",
1213
1212
  fontSize: 14,
1214
1213
  color: Colours.TEXT_DARK,
1215
1214
  width: 100
1216
1215
  },
1217
1216
  externalSyncValue: {
1218
- fontFamily: 'sf-regular',
1217
+ fontFamily: "sf-regular",
1219
1218
  fontSize: 14,
1220
1219
  color: Colours.TEXT_DARKEST,
1221
1220
  flex: 1