@plusscommunities/pluss-maintenance-app-forms 8.0.12-beta.0 → 8.0.13-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.
@@ -32,7 +32,7 @@ export const maintenanceActions = {
32
32
  }
33
33
  });
34
34
  },
35
- getJobs2: (site, status, priority, type, lastKey) => {
35
+ getJobs2: (site, status, priority, type, lastKey, assignee) => {
36
36
  const query = {
37
37
  site
38
38
  };
@@ -48,20 +48,28 @@ export const maintenanceActions = {
48
48
  if (lastKey) {
49
49
  query.lastKey = JSON.stringify(lastKey);
50
50
  }
51
+ if (assignee) {
52
+ query.assignee = assignee;
53
+ }
51
54
  return Session.authedFunction({
52
55
  method: "GET",
53
56
  url: Helper.getUrl(values.serviceKey, "get/requests", query)
54
57
  });
55
58
  },
59
+ /**
60
+ * @deprecated Use getJobs2 with pagination instead.
61
+ * This method recursively fetches ALL pages which can be slow for large datasets.
62
+ * For better performance, use getJobs2 directly and implement pagination in the UI.
63
+ */
56
64
  getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {
57
- return new Promise(resolve => {
65
+ return new Promise((resolve, reject) => {
58
66
  maintenanceActions.getJobs2(site, status, priority, type, lastKey).then(jobRes => {
59
67
  const newJobs = [...jobs, ...jobRes.data.Items];
60
68
  if (!jobRes.data.LastKey) {
61
69
  return resolve(newJobs);
62
70
  }
63
- return resolve(maintenanceActions.getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs));
64
- });
71
+ maintenanceActions.getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs).then(resolve).catch(reject);
72
+ }).catch(reject);
65
73
  });
66
74
  },
67
75
  sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText, customFields) => {
@@ -1 +1 @@
1
- {"version":3,"names":["Helper","Session","values","maintenanceActions","getJob","site","id","authedFunction","method","url","getUrl","serviceKey","data","getJobByJobId","jobId","getJobs","status","type","getJobs2","priority","lastKey","query","JSON","stringify","getJobsRecursive","jobs","Promise","resolve","then","jobRes","newJobs","Items","LastKey","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","customFields","request","editJob","job","editJobStatus","editJobPriority","assignJob","userId","getAssignees","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes","getExternalSync"],"sources":["maintenanceActions.js"],"sourcesContent":["import { Helper, Session } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nexport const maintenanceActions = {\n\tgetJob: (site, id) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJob\"),\n\t\t\tdata: { site, id },\n\t\t});\n\t},\n\tgetJobByJobId: (site, jobId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJob\"),\n\t\t\tdata: { site, jobId },\n\t\t});\n\t},\n\tgetJobs: (site, status = \"\", type = \"\") => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJobs\"),\n\t\t\tdata: { site, status, type },\n\t\t});\n\t},\n\tgetJobs2: (site, status, priority, type, lastKey) => {\n\t\tconst query = { site };\n\t\tif (status) {\n\t\t\tquery.status = status;\n\t\t}\n\t\tif (priority) {\n\t\t\tquery.priority = priority;\n\t\t}\n\t\tif (type) {\n\t\t\tquery.type = type;\n\t\t}\n\t\tif (lastKey) {\n\t\t\tquery.lastKey = JSON.stringify(lastKey);\n\t\t}\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/requests\", query),\n\t\t});\n\t},\n\tgetJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {\n\t\treturn new Promise((resolve) => {\n\t\t\tmaintenanceActions\n\t\t\t\t.getJobs2(site, status, priority, type, lastKey)\n\t\t\t\t.then((jobRes) => {\n\t\t\t\t\tconst newJobs = [...jobs, ...jobRes.data.Items];\n\t\t\t\t\tif (!jobRes.data.LastKey) {\n\t\t\t\t\t\treturn resolve(newJobs);\n\t\t\t\t\t}\n\t\t\t\t\treturn resolve(\n\t\t\t\t\t\tmaintenanceActions.getJobsRecursive(\n\t\t\t\t\t\t\tsite,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\tpriority,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tjobRes.data.LastKey,\n\t\t\t\t\t\t\tnewJobs,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t});\n\t},\n\tsendMaintenanceRequest: (\n\t\tuserID,\n\t\tuserName,\n\t\tphone,\n\t\troom,\n\t\ttitle,\n\t\tdescription,\n\t\tdate,\n\t\ttype,\n\t\timages,\n\t\tlocation,\n\t\tisHome,\n\t\thomeText,\n\t\tcustomFields,\n\t) => {\n\t\tconst request = {\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"sendMaintenance\"),\n\t\t\tdata: {\n\t\t\t\tuserID,\n\t\t\t\tuserName,\n\t\t\t\tphone,\n\t\t\t\troom,\n\t\t\t\ttitle,\n\t\t\t\tdescription,\n\t\t\t\tdate,\n\t\t\t\ttype,\n\t\t\t\timages,\n\t\t\t\tlocation,\n\t\t\t\tisHome,\n\t\t\t\thomeText,\n\t\t\t\tcustomFields,\n\t\t\t},\n\t\t};\n\t\treturn Session.authedFunction(request);\n\t},\n\teditJob: (job, site) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"editJob\"),\n\t\t\tdata: { job, site },\n\t\t});\n\t},\n\teditJobStatus: (id, status) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"editJobStatus\"),\n\t\t\tdata: { id, status },\n\t\t});\n\t},\n\teditJobPriority: (id, priority) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"update/priority\"),\n\t\t\tdata: { id, priority },\n\t\t});\n\t},\n\tassignJob: (jobId, userId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"update/assign\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tuserId,\n\t\t\t},\n\t\t});\n\t},\n\tgetAssignees: (site) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/assignees\", { site }),\n\t\t});\n\t},\n\taddNote: (jobId, note, attachments, images) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnote,\n\t\t\t\tattachments,\n\t\t\t\timages,\n\t\t\t\taction: \"AddNote\",\n\t\t\t},\n\t\t});\n\t},\n\teditNote: (jobId, noteId, note, attachments, images) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnote,\n\t\t\t\tattachments,\n\t\t\t\timages,\n\t\t\t\tnoteId,\n\t\t\t\taction: \"EditNote\",\n\t\t\t},\n\t\t});\n\t},\n\tdeleteNote: (jobId, noteId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnoteId,\n\t\t\t\taction: \"DeleteNote\",\n\t\t\t},\n\t\t});\n\t},\n\tgetJobTypes: async (site) => {\n\t\tconst url = Helper.getUrl(values.serviceKey, \"getjobtypes\");\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl,\n\t\t\tdata: { site },\n\t\t});\n\t},\n\tgetExternalSync: (jobId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/externalsync\", { id: jobId }),\n\t\t});\n\t},\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Helper","Session","values","maintenanceActions","getJob","site","id","authedFunction","method","url","getUrl","serviceKey","data","getJobByJobId","jobId","getJobs","status","type","getJobs2","priority","lastKey","assignee","query","JSON","stringify","getJobsRecursive","jobs","Promise","resolve","reject","then","jobRes","newJobs","Items","LastKey","catch","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","customFields","request","editJob","job","editJobStatus","editJobPriority","assignJob","userId","getAssignees","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes","getExternalSync"],"sources":["maintenanceActions.js"],"sourcesContent":["import { Helper, Session } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nexport const maintenanceActions = {\n\tgetJob: (site, id) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJob\"),\n\t\t\tdata: { site, id },\n\t\t});\n\t},\n\tgetJobByJobId: (site, jobId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJob\"),\n\t\t\tdata: { site, jobId },\n\t\t});\n\t},\n\tgetJobs: (site, status = \"\", type = \"\") => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"getJobs\"),\n\t\t\tdata: { site, status, type },\n\t\t});\n\t},\n\tgetJobs2: (site, status, priority, type, lastKey, assignee) => {\n\t\tconst query = { site };\n\t\tif (status) {\n\t\t\tquery.status = status;\n\t\t}\n\t\tif (priority) {\n\t\t\tquery.priority = priority;\n\t\t}\n\t\tif (type) {\n\t\t\tquery.type = type;\n\t\t}\n\t\tif (lastKey) {\n\t\t\tquery.lastKey = JSON.stringify(lastKey);\n\t\t}\n\t\tif (assignee) {\n\t\t\tquery.assignee = assignee;\n\t\t}\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/requests\", query),\n\t\t});\n\t},\n\t/**\n\t * @deprecated Use getJobs2 with pagination instead.\n\t * This method recursively fetches ALL pages which can be slow for large datasets.\n\t * For better performance, use getJobs2 directly and implement pagination in the UI.\n\t */\n\tgetJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tmaintenanceActions\n\t\t\t\t.getJobs2(site, status, priority, type, lastKey)\n\t\t\t\t.then((jobRes) => {\n\t\t\t\t\tconst newJobs = [...jobs, ...jobRes.data.Items];\n\t\t\t\t\tif (!jobRes.data.LastKey) {\n\t\t\t\t\t\treturn resolve(newJobs);\n\t\t\t\t\t}\n\t\t\t\t\tmaintenanceActions\n\t\t\t\t\t\t.getJobsRecursive(\n\t\t\t\t\t\t\tsite,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\tpriority,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tjobRes.data.LastKey,\n\t\t\t\t\t\t\tnewJobs,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t.catch(reject);\n\t\t\t\t})\n\t\t\t\t.catch(reject);\n\t\t});\n\t},\n\tsendMaintenanceRequest: (\n\t\tuserID,\n\t\tuserName,\n\t\tphone,\n\t\troom,\n\t\ttitle,\n\t\tdescription,\n\t\tdate,\n\t\ttype,\n\t\timages,\n\t\tlocation,\n\t\tisHome,\n\t\thomeText,\n\t\tcustomFields,\n\t) => {\n\t\tconst request = {\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"sendMaintenance\"),\n\t\t\tdata: {\n\t\t\t\tuserID,\n\t\t\t\tuserName,\n\t\t\t\tphone,\n\t\t\t\troom,\n\t\t\t\ttitle,\n\t\t\t\tdescription,\n\t\t\t\tdate,\n\t\t\t\ttype,\n\t\t\t\timages,\n\t\t\t\tlocation,\n\t\t\t\tisHome,\n\t\t\t\thomeText,\n\t\t\t\tcustomFields,\n\t\t\t},\n\t\t};\n\t\treturn Session.authedFunction(request);\n\t},\n\teditJob: (job, site) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"editJob\"),\n\t\t\tdata: { job, site },\n\t\t});\n\t},\n\teditJobStatus: (id, status) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"editJobStatus\"),\n\t\t\tdata: { id, status },\n\t\t});\n\t},\n\teditJobPriority: (id, priority) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"update/priority\"),\n\t\t\tdata: { id, priority },\n\t\t});\n\t},\n\tassignJob: (jobId, userId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"update/assign\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tuserId,\n\t\t\t},\n\t\t});\n\t},\n\tgetAssignees: (site) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/assignees\", { site }),\n\t\t});\n\t},\n\taddNote: (jobId, note, attachments, images) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnote,\n\t\t\t\tattachments,\n\t\t\t\timages,\n\t\t\t\taction: \"AddNote\",\n\t\t\t},\n\t\t});\n\t},\n\teditNote: (jobId, noteId, note, attachments, images) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnote,\n\t\t\t\tattachments,\n\t\t\t\timages,\n\t\t\t\tnoteId,\n\t\t\t\taction: \"EditNote\",\n\t\t\t},\n\t\t});\n\t},\n\tdeleteNote: (jobId, noteId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"requests/note\"),\n\t\t\tdata: {\n\t\t\t\tid: jobId,\n\t\t\t\tnoteId,\n\t\t\t\taction: \"DeleteNote\",\n\t\t\t},\n\t\t});\n\t},\n\tgetJobTypes: async (site) => {\n\t\tconst url = Helper.getUrl(values.serviceKey, \"getjobtypes\");\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"POST\",\n\t\t\turl,\n\t\t\tdata: { site },\n\t\t});\n\t},\n\tgetExternalSync: (jobId) => {\n\t\treturn Session.authedFunction({\n\t\t\tmethod: \"GET\",\n\t\t\turl: Helper.getUrl(values.serviceKey, \"get/externalsync\", { id: jobId }),\n\t\t});\n\t},\n};\n"],"mappings":"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","ignoreList":[]}
@@ -21,13 +21,18 @@ class MaintenanceList extends Component {
21
21
  const {
22
22
  jobfilters
23
23
  } = this.props;
24
- const res = await maintenanceActions.getJobsRecursive(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type);
25
- // console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);
26
- if (!_.isEmpty(jobfilters.status) || !_.isEmpty(jobfilters.priority) || !_.isEmpty(jobfilters.type)) {
27
- this.props.jobsAdded(res);
28
- } else {
29
- this.props.jobsLoaded(res);
30
- }
24
+ const res = await maintenanceActions.getJobs2(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type, null,
25
+ // No lastKey = first page
26
+ jobfilters.assignee);
27
+ const jobs = res.data.Items;
28
+ const lastKey = res.data.LastKey;
29
+
30
+ // Always replace jobs on refresh (filters are server-side)
31
+ this.props.jobsLoaded(jobs);
32
+ this.setState({
33
+ lastKey,
34
+ hasMore: !!lastKey
35
+ });
31
36
  } catch (error) {
32
37
  console.log("refresh error", error);
33
38
  } finally {
@@ -35,6 +40,43 @@ class MaintenanceList extends Component {
35
40
  }
36
41
  });
37
42
  });
43
+ _defineProperty(this, "loadMore", () => {
44
+ const {
45
+ loading,
46
+ loadingMore,
47
+ hasMore,
48
+ lastKey,
49
+ searchText
50
+ } = this.state;
51
+
52
+ // Don't load if already loading, no more pages, or during search
53
+ if (loading || loadingMore || !hasMore || !lastKey || searchText) return;
54
+ this.setState({
55
+ loadingMore: true
56
+ }, async () => {
57
+ try {
58
+ const {
59
+ jobfilters
60
+ } = this.props;
61
+ const res = await maintenanceActions.getJobs2(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type, lastKey, jobfilters.assignee);
62
+ const newJobs = res.data.Items;
63
+ const newLastKey = res.data.LastKey;
64
+
65
+ // Append to existing jobs
66
+ this.props.jobsAdded(newJobs);
67
+ this.setState({
68
+ lastKey: newLastKey,
69
+ hasMore: !!newLastKey
70
+ });
71
+ } catch (error) {
72
+ console.log("loadMore error", error);
73
+ } finally {
74
+ this.setState({
75
+ loadingMore: false
76
+ });
77
+ }
78
+ });
79
+ });
38
80
  _defineProperty(this, "refreshTypes", async () => {
39
81
  const {
40
82
  data
@@ -69,9 +111,6 @@ class MaintenanceList extends Component {
69
111
  });
70
112
  });
71
113
  _defineProperty(this, "resetDataSource", (source = "") => {
72
- const {
73
- jobfilters
74
- } = this.props;
75
114
  const {
76
115
  searchText
77
116
  } = this.state;
@@ -80,6 +119,8 @@ class MaintenanceList extends Component {
80
119
  } = this.props;
81
120
  let filteredList = jobs;
82
121
  let jobIdMatch = null;
122
+
123
+ // Client-side search filtering (search is not supported server-side)
83
124
  if (searchText) {
84
125
  jobIdMatch = _.find(jobs, j => j.jobId === searchText);
85
126
  filteredList = jobs.filter(j => {
@@ -90,10 +131,10 @@ class MaintenanceList extends Component {
90
131
  });
91
132
  if (!jobIdMatch) this.fetchJob(searchText);
92
133
  }
93
- if (jobfilters.status) filteredList = filteredList.filter(j => jobfilters.status.includes(j.status));
94
- if (jobfilters.priority) filteredList = filteredList.filter(j => jobfilters.priority.includes(j.priority));
95
- if (jobfilters.type) filteredList = filteredList.filter(j => jobfilters.type.includes(j.type));
96
- if (jobfilters.assignee) filteredList = filteredList.filter(j => jobfilters.assignee.includes(j.AssigneeId));
134
+
135
+ // Note: status, priority, type, and assignee filters are applied server-side
136
+ // via getJobs2, so no client-side filtering needed for those
137
+
97
138
  if (jobIdMatch) {
98
139
  const jobIndex = filteredList.indexOf(jobIdMatch);
99
140
  if (jobIndex > -1) {
@@ -101,7 +142,8 @@ class MaintenanceList extends Component {
101
142
  }
102
143
  filteredList.unshift(jobIdMatch);
103
144
  }
104
- if (source !== "search") this.refresh();
145
+ // Only refresh on initial load, not on filter changes (pagination handles data)
146
+ if (source !== "search" && source !== "filter") this.refresh();
105
147
  this.setState({
106
148
  filteredList
107
149
  });
@@ -132,6 +174,14 @@ class MaintenanceList extends Component {
132
174
  _defineProperty(this, "onSelectFilter", selected => {
133
175
  this.props.jobsFilterLoaded(selected);
134
176
  this.onToggleFilter();
177
+ // Reset pagination and clear existing list before refresh
178
+ this.setState({
179
+ lastKey: null,
180
+ hasMore: true,
181
+ filteredList: []
182
+ }, () => {
183
+ this.refresh();
184
+ });
135
185
  });
136
186
  _defineProperty(this, "getFilterButtonText", () => {
137
187
  const {
@@ -155,10 +205,21 @@ class MaintenanceList extends Component {
155
205
  }
156
206
  return `Filtering by ${filterTexts.join(", ")}`;
157
207
  });
208
+ _defineProperty(this, "renderListFooter", () => {
209
+ if (!this.state.loadingMore) return null;
210
+ return /*#__PURE__*/React.createElement(View, {
211
+ style: styles.loadingMore
212
+ }, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
213
+ visible: true
214
+ }));
215
+ });
158
216
  this.state = {
159
217
  types: [],
160
218
  filteredList: props.jobs,
161
219
  loading: false,
220
+ loadingMore: false,
221
+ hasMore: true,
222
+ lastKey: null,
162
223
  searchText: "",
163
224
  showFilterPopup: false
164
225
  };
@@ -246,7 +307,10 @@ class MaintenanceList extends Component {
246
307
  job: item
247
308
  }),
248
309
  ListEmptyComponent: this.renderEmptyList(),
249
- ListHeaderComponent: this.renderListHeader()
310
+ ListHeaderComponent: this.renderListHeader(),
311
+ ListFooterComponent: this.renderListFooter(),
312
+ onEndReached: this.loadMore,
313
+ onEndReachedThreshold: 0.5
250
314
  });
251
315
  }
252
316
  renderFilterPopup() {
@@ -318,6 +382,10 @@ const styles = StyleSheet.create({
318
382
  filterButtonText: {
319
383
  fontFamily: "sf-semibold",
320
384
  fontSize: 16
385
+ },
386
+ loadingMore: {
387
+ paddingVertical: 20,
388
+ alignItems: "center"
321
389
  }
322
390
  });
323
391
  const mapStateToProps = state => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","getJobsRecursive","site","status","priority","type","isEmpty","error","console","log","data","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","state","loading","job","getJobByJobId","source","searchText","jobs","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","includes","assignee","AssigneeId","jobIndex","unshift","refresh","callback","resetDataSource","showFilterPopup","selected","onToggleFilter","filterTexts","push","statusText","priorityText","assigneeName","join","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","createElement","EmptyStateMain","title","style","marginHorizontal","renderFilterButton","onPress","styles","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport { View, StyleSheet, FlatList, TouchableOpacity } from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} from \"../actions\";\nimport MaintenanceListItem from \"../components/MaintenanceListItem\";\nimport FilterPopupMenu from \"./FilterPopupMenu\";\nimport { Components, Colours, Helper } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobsRecursive(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobfilters.status,\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t);\n\t\t\t\t// console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);\n\t\t\t\tif (\n\t\t\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t\t\t!_.isEmpty(jobfilters.type)\n\t\t\t\t) {\n\t\t\t\t\tthis.props.jobsAdded(res);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.jobsLoaded(res);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\t\tif (jobfilters.status)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.status.includes(j.status),\n\t\t\t);\n\t\tif (jobfilters.priority)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.priority.includes(j.priority),\n\t\t\t);\n\t\tif (jobfilters.type)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.type.includes(j.type),\n\t\t\t);\n\t\tif (jobfilters.assignee)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.assignee.includes(j.AssigneeId),\n\t\t\t);\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\t\tif (source !== \"search\") this.refresh();\n\n\t\tthis.setState({ filteredList });\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\trenderEmptyList() {\n\t\treturn this.state.loading ? null : (\n\t\t\t<Components.EmptyStateMain\n\t\t\t\ttitle={this.getEmptyStateText()}\n\t\t\t\tstyle={{ marginHorizontal: 16 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","getJobs2","site","status","priority","type","assignee","jobs","data","Items","lastKey","LastKey","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","map","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","filterTexts","push","statusText","priorityText","assigneeName","join","createElement","style","styles","LoadingIndicator","visible","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","EmptyStateMain","title","marginHorizontal","renderFilterButton","onPress","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport { View, StyleSheet, FlatList, TouchableOpacity } from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} from \"../actions\";\nimport MaintenanceListItem from \"../components/MaintenanceListItem\";\nimport FilterPopupMenu from \"./FilterPopupMenu\";\nimport { Components, Colours, Helper } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\thasMore: true,\n\t\t\tlastKey: null,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobfilters.status,\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tnull, // No lastKey = first page\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst jobs = res.data.Items;\n\t\t\t\tconst lastKey = res.data.LastKey;\n\n\t\t\t\t// Always replace jobs on refresh (filters are server-side)\n\t\t\t\tthis.props.jobsLoaded(jobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey,\n\t\t\t\t\thasMore: !!lastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tloadMore = () => {\n\t\tconst { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n\t\t// Don't load if already loading, no more pages, or during search\n\t\tif (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n\t\tthis.setState({ loadingMore: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobfilters.status,\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst newJobs = res.data.Items;\n\t\t\t\tconst newLastKey = res.data.LastKey;\n\n\t\t\t\t// Append to existing jobs\n\t\t\t\tthis.props.jobsAdded(newJobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey: newLastKey,\n\t\t\t\t\thasMore: !!newLastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"loadMore error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loadingMore: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\n\t\t// Client-side search filtering (search is not supported server-side)\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\n\t\t// Note: status, priority, type, and assignee filters are applied server-side\n\t\t// via getJobs2, so no client-side filtering needed for those\n\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\t\t// Only refresh on initial load, not on filter changes (pagination handles data)\n\t\tif (source !== \"search\" && source !== \"filter\") this.refresh();\n\n\t\tthis.setState({ filteredList });\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t\t// Reset pagination and clear existing list before refresh\n\t\tthis.setState({ lastKey: null, hasMore: true, filteredList: [] }, () => {\n\t\t\tthis.refresh();\n\t\t});\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\trenderEmptyList() {\n\t\treturn this.state.loading ? null : (\n\t\t\t<Components.EmptyStateMain\n\t\t\t\ttitle={this.getEmptyStateText()}\n\t\t\t\tstyle={{ marginHorizontal: 16 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t\tListFooterComponent={this.renderListFooter()}\n\t\t\t\tonEndReached={this.loadMore}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderListFooter = () => {\n\t\tif (!this.state.loadingMore) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.loadingMore}>\n\t\t\t\t<Components.LoadingIndicator visible={true} />\n\t\t\t</View>\n\t\t);\n\t};\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n\tloadingMore: {\n\t\tpaddingVertical: 20,\n\t\talignItems: \"center\",\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
@@ -32,14 +32,21 @@ class RequestDetail extends Component {
32
32
  // Refresh external sync data when job is refreshed
33
33
  this.getExternalSync();
34
34
  } catch (error) {
35
+ var _error$response, _error$response2, _error$response3, _error$response4;
35
36
  console.log("getJob error", error.toString());
36
- // check for 403 or 404 error
37
- if (error.response.status === 403 || error.response.status === 404) {
37
+ // Log full error details for debugging
38
+ console.log("getJob error details:", {
39
+ message: error.message,
40
+ code: error.code,
41
+ responseStatus: (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status,
42
+ responseData: (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data
43
+ });
44
+ // check for 403 or 404 error (use optional chaining to prevent crash)
45
+ if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 403 || ((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404) {
38
46
  this.setState({
39
47
  forbidden: true
40
48
  });
41
49
  }
42
- console.log("getJob error", error);
43
50
  } finally {
44
51
  this.setState({
45
52
  loading: false
@@ -73,9 +80,9 @@ class RequestDetail extends Component {
73
80
  loadingExternalSync: false
74
81
  });
75
82
  } catch (error) {
76
- var _error$response;
83
+ var _error$response5;
77
84
  // 404 is expected if no sync - don't show error
78
- if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) !== 404) {
85
+ if (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.status) !== 404) {
79
86
  console.log("getExternalSync error", error);
80
87
  }
81
88
  this.setState({
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Text","ScrollView","View","StyleSheet","KeyboardAvoidingView","TouchableOpacity","ImageBackground","Platform","DateTimePicker","Icon","_","moment","connect","maintenanceActions","jobAdded","jobStatusesUpdate","jobHideSeenUpdate","StatusSelectorPopup","PrioritySelectorPopup","getJobStatus","getJobPriority","Services","Colours","Helper","Components","Config","values","RequestDetail","constructor","props","_defineProperty","setState","loading","res","getJob","job","site","id","data","updateJobState","getExternalSync","error","console","log","toString","response","status","forbidden","hasPermission","getAssignees","user","assignees","Users","_this$props$job","loadingExternalSync","externalSync","_error$response","state","seen","Id","userID","updated","editJob","expectedDate","utc","toISOString","editJobStatus","editJobPriority","priority","navigation","goBack","showStatusPopup","updateJobStatus","showPriorityPopup","updateJobPriority","navigate","screenRequestNotes","onChange","popUpType","isDateTimePickerVisible","date","expectedDateText","format","updateJob","showMore","showMessages","count","permissions","includes","permissionMaintenanceTracking","permissionMaintenanceAssignment","AssigneeId","url","showFullscreenVideo","length","currentVideoUrl","options","map","a","key","name","displayName","selection","title","onSelect","onSelectAssignee","assignee","assignJob","galleryOpen","galleryImages","selectedPDF","scrollView","createRef","commentReply","commentSection","imagePopup","componentDidMount","defaultJob","find","jobs","j","newState","markSeen","openGallery","index","refs","scrollTo","closeGallery","renderLoading","createElement","LoadingIndicator","visible","renderTop","statusOption","canEdit","isStaff","category","showSeen","text","style","getShadowStyle","styles","jobTitleContainer","jobId","jobIdText","color","colourBrandingMain","textEntityName","jobTitleText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","type","hideSeen","jobSeenContainer","iconStyle","jobSeenIcon","jobSeenText","lastActivityUnix","textSectionInner","textSectionLabel","textSectionTextContainer","textSectionText","jobInfoContainer","jobStatusExpectedContainer","jobStatusOuterContainer","jobStatusHeading","onPress","onOpenStatusPicker","jobStatusContainer","jobStatusText","openStaffNotes","jobStatusIcon","Notes","jobPriorityOuterContainer","onOpenPriorityPicker","label","renderPlayableImageUrl","images","containerStyle","thumbUrl","getThumb300","isVideo","flex","source","uri","imagePlayContainer","toggleFullscreenVideo","bind","imageControlIcon","imageUrl","get1400","imageContainer","plusImages","renderPlayableImage","renderImage","image","isNil","isEmpty","sideBySideImages","sideBySideImageContainer","singleImageContainer","renderDocument","documents","document","documentContainer","documentTypeContainer","documentTypeText","ext","documentText","uploading","uploadProgress","renderImagePopup","ImagePopup","onClose","ref","renderDocumentPopup","PDFPopup","pdfCount","renderAssignee","Assignee","content","locationLabel","profileContainer","ProfilePic","profilePic","Diameter","nameContainer","nameText","FormCardSectionOptionLauncher","onOpenAssigneePicker","value","textStyle","detailsText","sectionStyle","detailsSection","renderExternalSync","externalSyncContainer","externalSyncHeader","externalSyncTitle","externalSyncIcon","externalSyncContent","systemType","externalSyncRow","externalSyncLabel","externalSyncValue","externalId","syncedAt","renderCustomFields","customFields","renderAnswer","field","customText","answer","Array","isArray","join","customImage","customDocument","customLabel","rendeDetails","hasCustomFields","onToggleDetails","icon","Fragment","description","jobDescriptionText","locationText","room","isHome","homeText","requesterLabel","userProfilePic","userName","phone","phoneText","renderMessages","CommentSection","adminPermission","entityType","commentKey","entityId","entityName","location","live","refreshFrequency","placeHolder","paddingHorizontal","paddingTop","onCommentsLoaded","onCommentAdded","hideAddComment","disableFlag","InlineButton","onLeaveMessage","touchableStyle","marginTop","height","fullWidth","renderMessagesReply","CommentReply","renderStatusPopup","onCloseStatusPopup","onSelectStatus","renderPriorityPopup","onClosePriorityPopup","onSelectPriority","render","Forbidden","behavior","container","Header","leftIcon","onPressLeft","onPressBack","env","strings","MAINTENANCE_REQUEST_DETAILS","contentContainerStyle","paddingBottom","innerContainer","isVisible","onConfirm","onDateSelected","onCancel","onCloseDatePicker","mode","headerTextIOS","Date","create","paddingVertical","fontFamily","fontSize","marginBottom","TEXT_DARKEST","flexDirection","alignItems","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","jobStatusDateText","TEXT_LIGHT","borderTopWidth","borderTopColor","LINEGREY","letterSpacing","TEXT_DARK","width","marginRight","jobExpectedDateContainer","BOXGREY","paddingLeft","jobExpectedDate","overflow","position","top","left","right","bottom","textShadowColor","textShadowOffset","textShadowRadius","lineHeight","textSectionAngleRight","customStaticTitle","customStaticText","borderBottomWidth","borderBottomColor","mapStateToProps","getMainBrandingColourFromState","reducerKey","statusTypes","jobstatuses"],"sources":["RequestDetail.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tScrollView,\n\tView,\n\tStyleSheet,\n\tKeyboardAvoidingView,\n\tTouchableOpacity,\n\tImageBackground,\n\tPlatform,\n} from \"react-native\";\nimport DateTimePicker from \"react-native-modal-datetime-picker\";\nimport { Icon } from \"@rneui/themed\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from \"../actions\";\nimport StatusSelectorPopup from \"../components/StatusSelectorPopup\";\nimport PrioritySelectorPopup from \"../components/PrioritySelectorPopup\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Colours, Helper, Components, Config } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass RequestDetail extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tjob: {},\n\t\t\tisDateTimePickerVisible: false,\n\t\t\tpopUpType: \"\",\n\t\t\tstatus: \"\",\n\t\t\tpriority: \"\",\n\t\t\texpectedDate: null,\n\t\t\texpectedDateText: \"\",\n\t\t\tseen: false,\n\t\t\tshowMore: true,\n\t\t\tshowStatusPopup: false,\n\t\t\tshowPriorityPopup: false,\n\t\t\tloading: false,\n\t\t\tshowFullscreenVideo: false,\n\t\t\tcurrentVideoUrl: \"\",\n\t\t\tgalleryOpen: false,\n\t\t\tgalleryImages: [],\n\t\t\tshowMessages: false,\n\t\t\tassignees: [],\n\t\t\tselectedPDF: null,\n\t\t\texternalSync: null,\n\t\t\tloadingExternalSync: false,\n\t\t};\n\n\t\tthis.scrollView = React.createRef();\n\t\tthis.commentReply = React.createRef();\n\t\tthis.commentSection = React.createRef();\n\t\tthis.imagePopup = React.createRef();\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.job.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.job.site);\n\t\tthis.getJob();\n\t\tthis.updateJobState(this.props.job);\n\t\tthis.getAssignees();\n\t\tthis.getExternalSync();\n\t}\n\n\tgetJob = async () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.job.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('getJob', JSON.stringify(res.data, null, 2));\n\t\t\t\tthis.props.jobAdded(res.data);\n\t\t\t\tthis.updateJobState(res.data);\n\t\t\t\t// Refresh external sync data when job is refreshed\n\t\t\t\tthis.getExternalSync();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"getJob error\", error.toString());\n\t\t\t\t// check for 403 or 404 error\n\t\t\t\tif (error.response.status === 403 || error.response.status === 404) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tforbidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconsole.log(\"getJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tgetAssignees = async () => {\n\t\tif (!this.hasPermission()) return;\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.user.site);\n\t\t\tthis.setState({ assignees: res.data.Users });\n\t\t} catch (error) {\n\t\t\tconsole.log(\"getAssignees error\", error);\n\t\t}\n\t};\n\n\tgetExternalSync = async () => {\n\t\t// Only fetch if user has maintenance tracking permission\n\t\tif (!this.hasPermission()) return;\n\t\tif (!this.props.job?.id) return;\n\n\t\ttry {\n\t\t\tthis.setState({ loadingExternalSync: true });\n\t\t\tconst res = await maintenanceActions.getExternalSync(this.props.job.id);\n\t\t\tthis.setState({ externalSync: res.data, loadingExternalSync: false });\n\t\t} catch (error) {\n\t\t\t// 404 is expected if no sync - don't show error\n\t\t\tif (error.response?.status !== 404) {\n\t\t\t\tconsole.log(\"getExternalSync error\", error);\n\t\t\t}\n\t\t\tthis.setState({ loadingExternalSync: false });\n\t\t}\n\t};\n\n\tupdateJobState(defaultJob) {\n\t\tconst job =\n\t\t\t_.find(this.props.jobs, (j) => j.id === this.props.job.id) || defaultJob;\n\t\tif (!job) {\n\t\t\tthis.getJob();\n\t\t\treturn;\n\t\t}\n\t\tconst newState = { job, status: job.status };\n\t\tif (job.expectedDate) {\n\t\t\tnewState.expectedDate = moment(job.expectedDate);\n\t\t\tnewState.expectedDateText = newState.expectedDate.format(\"DD/MM/YYYY\");\n\t\t}\n\t\tif (job.seen) newState.seen = job.seen;\n\t\tthis.setState(newState, () => {\n\t\t\tthis.markSeen();\n\t\t});\n\t}\n\n\tmarkSeen = () => {\n\t\tconst { user } = this.props;\n\t\tconst { job } = this.state;\n\t\t// Must have maintenance permission and not the requester\n\t\t// console.log('markSeen check', job.userID, user.Id);\n\t\tif (job.seen === true) return;\n\t\tif (!this.hasPermission()) return;\n\t\tif (user.Id === job.userID) return;\n\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst updated = {\n\t\t\t\t\tid: job.id,\n\t\t\t\t\tseen: true,\n\t\t\t\t\tstatus: job.status || \"Unassigned\",\n\t\t\t\t};\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\t// console.log('markSeen updated');\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t\tthis.setState({ loading: false, seen: true });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"markSeen error\", error);\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJob = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\tconst { user } = this.props;\n\t\t\tconst { job } = this.state;\n\t\t\ttry {\n\t\t\t\tconst updated = { id: job.id };\n\t\t\t\tif (this.state.expectedDate) {\n\t\t\t\t\tupdated.expectedDate = moment(this.state.expectedDate)\n\t\t\t\t\t\t.utc()\n\t\t\t\t\t\t.toISOString();\n\t\t\t\t}\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobStatus = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobStatus(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.status,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobStatus error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobPriority = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobPriority(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.priority,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobPriority error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\tonOpenStatusPicker = () => {\n\t\tthis.setState({ showStatusPopup: true });\n\t};\n\n\tonCloseStatusPopup = () => {\n\t\tthis.setState({ showStatusPopup: false });\n\t};\n\n\tonSelectStatus = (status) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ status, showStatusPopup: false }, () => {\n\t\t\tthis.updateJobStatus();\n\t\t});\n\t};\n\n\tonOpenPriorityPicker = () => {\n\t\tthis.setState({ showPriorityPopup: true });\n\t};\n\n\tonClosePriorityPopup = () => {\n\t\tthis.setState({ showPriorityPopup: false });\n\t};\n\n\tonSelectPriority = (priority) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ priority, showPriorityPopup: false }, () => {\n\t\t\tthis.updateJobPriority();\n\t\t});\n\t};\n\n\topenStaffNotes = () => {\n\t\tServices.navigation.navigate(values.screenRequestNotes, {\n\t\t\tjob: this.state.job,\n\t\t\tonChange: this.getJob,\n\t\t});\n\t};\n\n\tonOpenDatePicker = () => {\n\t\tthis.setState({ popUpType: \"date\", isDateTimePickerVisible: true });\n\t};\n\n\tonCloseDatePicker = () => {\n\t\tthis.setState({ isDateTimePickerVisible: false });\n\t};\n\n\tonDateSelected = (date) => {\n\t\tif (this.state.popUpType === \"date\") {\n\t\t\tdate = moment(date);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\texpectedDate: date,\n\t\t\t\t\texpectedDateText: date.format(\"DD/MM/YYYY\"),\n\t\t\t\t\tisDateTimePickerVisible: false,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.updateJob();\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t};\n\n\tonToggleDetails = () => {\n\t\tthis.setState({ showMore: !this.state.showMore });\n\t};\n\n\tonLeaveMessage = () => {\n\t\tthis.setState({ showMessages: true });\n\t};\n\n\tonCommentsLoaded = (count) => {\n\t\tif (count > 0) {\n\t\t\tthis.setState({ showMessages: true });\n\t\t}\n\t};\n\n\tonCommentAdded = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.user.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('onCommentAdded', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onCommentAdded error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\thasPermission = () => {\n\t\tconst { job } = this.state;\n\t\tconst { permissions } = this.props.user;\n\t\tif (_.includes(permissions, values.permissionMaintenanceTracking)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (_.includes(permissions, values.permissionMaintenanceAssignment)) {\n\t\t\treturn job.AssigneeId === this.props.user.Id;\n\t\t}\n\t\treturn false;\n\t};\n\n\ttoggleFullscreenVideo = (url) => {\n\t\tif (typeof url !== \"string\") url = \"\";\n\t\tthis.setState({\n\t\t\tshowFullscreenVideo: url.length > 0,\n\t\t\tcurrentVideoUrl: url,\n\t\t});\n\t};\n\n\topenGallery(galleryImages, index) {\n\t\tthis.setState({\n\t\t\tgalleryOpen: true,\n\t\t\tgalleryImages,\n\t\t});\n\t\tthis.refs.imagePopup.scrollTo(index);\n\t}\n\n\tcloseGallery() {\n\t\tthis.setState({\n\t\t\tgalleryOpen: false,\n\t\t});\n\t}\n\n\tonOpenAssigneePicker = () => {\n\t\tconst options = this.state.assignees.map((a) => {\n\t\t\treturn { key: a.id, name: a.displayName };\n\t\t});\n\t\tServices.navigation.navigate(\"optionSelector\", {\n\t\t\toptions,\n\t\t\tselection: this.state.job.AssigneeId,\n\t\t\ttitle: \"Assign request\",\n\t\t\tonSelect: this.onSelectAssignee,\n\t\t});\n\t};\n\n\tonSelectAssignee = (assignee) => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconsole.log(\"onSelectAssignee\", this.props.job.id, assignee.key);\n\t\t\t\tconst res = await maintenanceActions.assignJob(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tassignee.key,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onSelectAssignee error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trenderLoading() {\n\t\treturn <Components.LoadingIndicator visible={this.state.loading} />;\n\t}\n\n\trenderTop() {\n\t\tconst { status, job } = this.state;\n\t\tconst statusOption = getJobStatus(status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst canEdit = this.hasPermission();\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst showSeen = !status || status === getJobStatus(null, this.props).text;\n\n\t\treturn (\n\t\t\t<View style={{ ...Helper.getShadowStyle() }}>\n\t\t\t\t<View style={styles.jobTitleContainer}>\n\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobTypeContainer,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{job.type}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{!this.props.hideSeen && showSeen && this.state.seen && (\n\t\t\t\t\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"check\"\n\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenText,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tSeen\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\n\t\t\t\t\t{job.lastActivityUnix && (\n\t\t\t\t\t\t<View style={styles.textSectionInner}>\n\t\t\t\t\t\t\t<Text style={styles.textSectionLabel}>Last Updated On</Text>\n\t\t\t\t\t\t\t<View style={styles.textSectionTextContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.textSectionText}>\n\t\t\t\t\t\t\t\t\t{moment(job.lastActivityUnix).format(\"ddd D MMMM, h:mm A\")}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Expected Date</Text>\n <TouchableOpacity onPress={this.onOpenDatePicker}>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{this.state.expectedDateText || 'Select Date'}</Text>\n <Icon\n name=\"angle-right\"\n type=\"font-awesome\"\n iconStyle={[styles.textSectionAngleRight, { color: this.props.colourBrandingMain }]}\n />\n </View>\n </TouchableOpacity>\n </View> */}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.jobInfoContainer}>\n\t\t\t\t\t<View style={styles.jobStatusExpectedContainer}>\n\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STATUS</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenStatusPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: statusOption.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{statusOption?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.hasPermission() && (\n\t\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>\n\t\t\t\t\t\t\t\t<TouchableOpacity onPress={this.openStaffNotes}>\n\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tname=\"pencil-square-o\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.jobStatusIcon}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>\n\t\t\t\t\t\t\t\t\t\t\tNotes ({(job.Notes || []).length})\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t\t{isStaff && (\n\t\t\t\t\t\t<View style={styles.jobPriorityOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>PRIORITY</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenPriorityPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: priority.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderPlayableImageUrl(images, index, containerStyle, showMore) {\n\t\tconst url = images[index || 0];\n\t\tconst thumbUrl = Helper.getThumb300(url);\n\n\t\tif (Helper.isVideo(url)) {\n\t\t\treturn (\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={[{ flex: 1 }, containerStyle]}\n\t\t\t\t\tsource={{ uri: thumbUrl }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, url)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t</View>\n\t\t\t\t</ImageBackground>\n\t\t\t);\n\t\t}\n\n\t\tconst imageUrl = Helper.get1400(url);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={containerStyle}\n\t\t\t\tonPress={this.openGallery.bind(this, images, index || 0)}\n\t\t\t>\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={styles.imageContainer}\n\t\t\t\t\tsource={{ uri: imageUrl }}\n\t\t\t\t>\n\t\t\t\t\t{showMore && (\n\t\t\t\t\t\t<Text style={styles.plusImages}>\n\t\t\t\t\t\t\t+{this.state.job.images.length - 2}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ImageBackground>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderPlayableImage(images, index, containerStyle, showMore) {\n\t\treturn this.renderPlayableImageUrl(images, index, containerStyle, showMore);\n\t}\n\n\trenderImage(images, image = null) {\n\t\tif (!_.isNil(images) && !_.isEmpty(images)) {\n\t\t\tif (images.length >= 2) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.sideBySideImages}>\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t\timages.length > 2,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t\t{this.renderPlayableImage(images, 0)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (!_.isNil(image)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t{this.renderPlayableImageUrl([image], 0)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderDocument(documents) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tif (!_.isNil(documents) && !_.isEmpty(documents)) {\n\t\t\treturn documents.map((document, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tstyle={styles.documentContainer}\n\t\t\t\t\t\tonPress={() => this.setState({ selectedPDF: document })}\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...styles.documentTypeContainer,\n\t\t\t\t\t\t\t\tbackgroundColor: colourBrandingMain,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.documentTypeText}>{document.ext}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={styles.documentText}\n\t\t\t\t\t\t>{`${document.name}${document.uploading ? ` - ${document.uploadProgress}` : \"\"}`}</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderImagePopup() {\n\t\treturn (\n\t\t\t<Components.ImagePopup\n\t\t\t\tvisible={this.state.galleryOpen}\n\t\t\t\timages={this.state.galleryImages}\n\t\t\t\tonClose={this.closeGallery.bind(this)}\n\t\t\t\tref={this.imagePopup}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDocumentPopup() {\n\t\tif (_.isEmpty(this.state.selectedPDF)) return null;\n\t\treturn (\n\t\t\t<Components.PDFPopup\n\t\t\t\tsource={this.state.selectedPDF.url}\n\t\t\t\tonClose={() => this.setState({ selectedPDF: null })}\n\t\t\t\ttitle={this.state.selectedPDF.name}\n\t\t\t\tpdfCount={1}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderAssignee() {\n\t\tconst { job } = this.state;\n\t\tif (!this.hasPermission() && !job.Assignee) return null;\n\n\t\tconst content = (\n\t\t\t<View>\n\t\t\t\t<Text style={styles.locationLabel}>Assigned To</Text>\n\t\t\t\t<View>\n\t\t\t\t\t{job.Assignee && (\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.Assignee.profilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.Assignee.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\n\t\tif (this.hasPermission()) {\n\t\t\treturn (\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onOpenAssigneePicker}\n\t\t\t\t\ttitle=\"Assigned To\"\n\t\t\t\t\tvalue={job.Assignee ? job.Assignee.displayName : \"Unassigned\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Components.FormCardSectionOptionLauncher>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\trenderExternalSync() {\n\t\tconst { externalSync, loadingExternalSync } = this.state;\n\n\t\t// Only show if user has permission and external sync data exists\n\t\tif (!this.hasPermission()) return null;\n\t\tif (!externalSync || loadingExternalSync) return null;\n\n\t\treturn (\n\t\t\t<View style={[styles.externalSyncContainer, Helper.getShadowStyle()]}>\n\t\t\t\t<View style={styles.externalSyncHeader}>\n\t\t\t\t\t<Text style={styles.externalSyncTitle}>External Sync</Text>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"sync\"\n\t\t\t\t\t\ttype=\"material\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.externalSyncIcon,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.externalSyncContent}>\n\t\t\t\t\t{externalSync.systemType && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>System:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.systemType}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.externalId && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>External ID:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.externalId}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.syncedAt && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>Synced:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{moment(externalSync.syncedAt).format(\"D MMM YYYY h:mma\")}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCustomFields() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\n\t\tconst renderAnswer = (field) => {\n\t\t\tswitch (field.type) {\n\t\t\t\tcase \"date\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"YYYY-MM-DD\").format(\"DD MMM YYYY\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"time\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"HH:mm\").format(\"h:mm a\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"yn\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>{field.answer ? \"Yes\" : \"No\"}</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"checkbox\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer && Array.isArray(field.answer)\n\t\t\t\t\t\t\t\t? field.answer.join(\", \")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"image\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customImage}>\n\t\t\t\t\t\t\t{this.renderImage(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tcase \"document\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customDocument}>\n\t\t\t\t\t\t\t{this.renderDocument(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tdefault:\n\t\t\t\t\treturn <Text style={styles.customText}>{field.answer}</Text>;\n\t\t\t}\n\t\t};\n\n\t\treturn customFields.map((field, index) => {\n\t\t\tif ([\"staticTitle\", \"staticText\"].includes(field.type)) return null;\n\t\t\tif (\n\t\t\t\t_.isNil(field.answer) ||\n\t\t\t\tfield.answer === \"\" ||\n\t\t\t\t(Array.isArray(field.answer) && field.answer.length === 0)\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\treturn (\n\t\t\t\t<View key={index}>\n\t\t\t\t\t<Text style={styles.customLabel}>{field.label}</Text>\n\t\t\t\t\t{renderAnswer(field)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\trendeDetails() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\t\tconst hasCustomFields = customFields && customFields.length > 0;\n\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onToggleDetails}\n\t\t\t\t\ttitle=\"Details\"\n\t\t\t\t\ticon={this.state.showMore ? \"angle-up\" : \"angle-down\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t/>\n\t\t\t\t{this.state.showMore && (\n\t\t\t\t\t<View>\n\t\t\t\t\t\t{hasCustomFields ? this.renderCustomFields() : null}\n\t\t\t\t\t\t{!hasCustomFields ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{this.renderImage(job.images, job.image)}\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.description) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobDescriptionText}>\n\t\t\t\t\t\t\t\t\t\t{job.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.locationLabel}>Address</Text>\n\t\t\t\t\t\t<Text style={styles.locationText}>{job.room}</Text>\n\t\t\t\t\t\t{!hasCustomFields && job.isHome ? (\n\t\t\t\t\t\t\t<View style={styles.detailsSection}>\n\t\t\t\t\t\t\t\t<Text style={styles.locationLabel}>Must be home</Text>\n\t\t\t\t\t\t\t\t<Text style={styles.locationText}>{job.homeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.requesterLabel}>Submitted By</Text>\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.userProfilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.userName}</Text>\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.phone) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.phoneText}>{job.phone}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.renderExternalSync()}\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessages() {\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.CommentSection\n\t\t\t\t\tref={this.commentSection}\n\t\t\t\t\tcommentReply={this.commentReply}\n\t\t\t\t\tscrollView={this.scrollView}\n\t\t\t\t\tadminPermission={values.permissionMaintenanceTracking}\n\t\t\t\t\tentityType={values.commentKey}\n\t\t\t\t\tentityId={this.props.job.id}\n\t\t\t\t\tentityName={this.props.job.title}\n\t\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t\tlive\n\t\t\t\t\trefreshFrequency={10000}\n\t\t\t\t\tplaceHolder={\"\"}\n\t\t\t\t\tstyle={{ flex: 1, paddingHorizontal: 0, paddingTop: 16 }}\n\t\t\t\t\tonCommentsLoaded={this.onCommentsLoaded}\n\t\t\t\t\tonCommentAdded={this.onCommentAdded}\n\t\t\t\t\thideAddComment\n\t\t\t\t\tdisableFlag\n\t\t\t\t/>\n\t\t\t\t{!this.state.showMessages && (\n\t\t\t\t\t<Components.InlineButton\n\t\t\t\t\t\tonPress={this.onLeaveMessage}\n\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\ttouchableStyle={{ marginTop: 10 }}\n\t\t\t\t\t\tstyle={{ height: 36 }}\n\t\t\t\t\t\ttextStyle={{ color: \"#fff\" }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t>\n\t\t\t\t\t\tLeave Message\n\t\t\t\t\t</Components.InlineButton>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessagesReply() {\n\t\tif (!this.state.showMessages) return null;\n\n\t\treturn (\n\t\t\t<Components.CommentReply\n\t\t\t\tref={this.commentReply}\n\t\t\t\tcommentSection={this.commentSection}\n\t\t\t\tscrollView={this.scrollView}\n\t\t\t\tentityType={values.commentKey}\n\t\t\t\tentityId={this.props.job.id}\n\t\t\t\tentityName={this.props.job.title}\n\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t// noScroll={true}\n\t\t\t\t// style={{ position: 'absolute', bottom: 0, left: 0, right: 0 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderStatusPopup() {\n\t\tif (!this.state.showStatusPopup) return null;\n\t\treturn (\n\t\t\t<StatusSelectorPopup\n\t\t\t\tonClose={this.onCloseStatusPopup}\n\t\t\t\tonSelect={this.onSelectStatus}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderPriorityPopup() {\n\t\tif (!this.state.showPriorityPopup) return null;\n\t\treturn (\n\t\t\t<PrioritySelectorPopup\n\t\t\t\tonClose={this.onClosePriorityPopup}\n\t\t\t\tonSelect={this.onSelectPriority}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tif (this.state.forbidden) {\n\t\t\treturn <Components.Forbidden />;\n\t\t}\n\t\treturn (\n\t\t\t<KeyboardAvoidingView behavior={\"padding\"} style={styles.container}>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack}\n\t\t\t\t\ttext={Config.env.strings.MAINTENANCE_REQUEST_DETAILS}\n\t\t\t\t/>\n\t\t\t\t{this.renderLoading()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tref={this.scrollView}\n\t\t\t\t\tcontentContainerStyle={{ paddingBottom: 26 }}\n\t\t\t\t\tstyle={{ height: \"100%\" }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.innerContainer}>\n\t\t\t\t\t\t{this.renderTop()}\n\t\t\t\t\t\t{this.renderAssignee()}\n\t\t\t\t\t\t{this.rendeDetails()}\n\t\t\t\t\t\t{this.renderMessages()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\t\t\t\t{this.renderMessagesReply()}\n\t\t\t\t{this.renderStatusPopup()}\n\t\t\t\t{this.renderPriorityPopup()}\n\t\t\t\t{this.renderImagePopup()}\n\t\t\t\t{this.renderDocumentPopup()}\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tisVisible={this.state.isDateTimePickerVisible}\n\t\t\t\t\tonConfirm={this.onDateSelected}\n\t\t\t\t\tonCancel={this.onCloseDatePicker}\n\t\t\t\t\tmode={this.state.popUpType}\n\t\t\t\t\theaderTextIOS={`Pick a ${this.state.popUpType}`}\n\t\t\t\t\tdate={new Date()}\n\t\t\t\t/>\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tinnerContainer: {\n\t\tpaddingTop: 23,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobTitleContainer: {\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobIdText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tmarginBottom: 4,\n\t},\n\tjobTitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 20,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 8,\n\t},\n\tjobTypeSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobTypeContainer: {\n\t\tpadding: 4,\n\t\tminWidth: 80,\n\t\tmaxWidth: 140,\n\t\tborderRadius: 4,\n\t\tjustifyContent: \"center\",\n\t},\n\tjobTypeText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: \"100%\",\n\t},\n\tjobSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginLeft: 10,\n\t},\n\tjobSeenIcon: {\n\t\tfontSize: 12,\n\t},\n\tjobSeenText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tmarginLeft: 4,\n\t},\n\tjobStatusDateText: {\n\t\tmarginTop: 8,\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\tjobInfoContainer: {\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: Colours.LINEGREY,\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobStatusExpectedContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-start\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tjobStatusOuterContainer: {\n\t\t// marginRight: 50,\n\t},\n\tjobStatusHeading: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 6,\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\twidth: 120,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t},\n\tjobStatusIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 14,\n\t\tmarginRight: 8,\n\t},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t\tflex: 1,\n\t\ttextAlign: \"center\",\n\t},\n\tjobPriorityOuterContainer: {\n\t\tmarginTop: 12,\n\t},\n\tjobExpectedDateContainer: {\n\t\tbackgroundColor: Colours.BOXGREY,\n\t\tflexDirection: \"row\",\n\t\twidth: 115,\n\t\theight: 30,\n\t\tborderRadius: 4,\n\t\talignItems: \"center\",\n\t\tpaddingLeft: 8,\n\t},\n\tjobExpectedDate: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5),\n\t},\n\tdetailsText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tdetailsSection: {\n\t\tmarginTop: 8,\n\t\tpaddingHorizontal: 0,\n\t\tpaddingBottom: 12,\n\t},\n\tsideBySideImages: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\tmarginBottom: 16,\n\t},\n\tsideBySideImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"48%\",\n\t\theight: 150,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t},\n\tsingleImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"100%\",\n\t\theight: 150,\n\t\tflex: 1,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t\tmarginBottom: 16,\n\t},\n\timageContainer: {\n\t\theight: 150,\n\t\twidth: \"auto\",\n\t\tjustifyContent: \"center\",\n\t},\n\timagePlayContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageControlIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 30,\n\t\ttextShadowColor: \"rgba(0,0,0,0.3)\",\n\t\ttextShadowOffset: { width: 2, height: 2 },\n\t},\n\tplusImages: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 32,\n\t\ttextAlign: \"center\",\n\t\tcolor: \"#fff\",\n\t\ttextShadowColor: \"rgba(0, 0, 0, 0.5)\",\n\t\ttextShadowOffset: { width: 0, height: 2 },\n\t\ttextShadowRadius: 8,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tpaddingBottom: 16,\n\t},\n\tlocationLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tlocationText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\trequesterLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 10,\n\t},\n\tprofileContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tnameContainer: {\n\t\tmarginLeft: 18,\n\t},\n\tnameText: {\n\t\tfontSize: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 4,\n\t},\n\tphoneText: {\n\t\tfontSize: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionInner: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n\ttextSectionLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\ttextSectionTextContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextSectionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionAngleRight: {\n\t\tfontSize: 24,\n\t\tmarginLeft: 10,\n\t\tlineHeight: 24,\n\t},\n\tcustomLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tcustomText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\tcustomImage: {\n\t\tmarginTop: 8,\n\t},\n\tcustomDocument: {\n\t\tmarginTop: 8,\n\t\tmarginBottom: 16,\n\t},\n\tcustomStaticTitle: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 10,\n\t},\n\tcustomStaticText: {\n\t\tfontSize: 17,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tlineHeight: 24,\n\t\tmarginBottom: 10,\n\t},\n\tdocumentContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"space-between\",\n\t\tpaddingVertical: 4,\n\t},\n\tdocumentTypeContainer: {\n\t\twidth: 50,\n\t\theight: 60,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 5,\n\t\tmarginRight: 8,\n\t},\n\tdocumentTypeText: {\n\t\tcolor: \"#fff\",\n\t\tfontFamily: \"sf-semibold\",\n\t\ttextAlign: \"center\",\n\t},\n\tdocumentText: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: \"#65686D\",\n\t},\n\texternalSyncContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tmarginTop: 16,\n\t\tborderRadius: 8,\n\t\tpadding: 16,\n\t},\n\texternalSyncHeader: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginBottom: 12,\n\t\tpaddingBottom: 12,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\texternalSyncTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\texternalSyncIcon: {\n\t\tfontSize: 20,\n\t},\n\texternalSyncContent: {\n\t\tpaddingTop: 4,\n\t},\n\texternalSyncRow: {\n\t\tflexDirection: \"row\",\n\t\tmarginBottom: 10,\n\t},\n\texternalSyncLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\twidth: 100,\n\t},\n\texternalSyncValue: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tflex: 1,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tjobs: state[values.reducerKey].jobs,\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {\n\tjobAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n})(RequestDetail);\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,QAAQ,6CAA6C;AAClE,SACCC,UAAU,EACVC,IAAI,EACJC,UAAU,EACVC,oBAAoB,EACpBC,gBAAgB,EAChBC,eAAe,EACfC,QAAQ,QACF,cAAc;AACrB,OAAOC,cAAc,MAAM,oCAAoC;AAC/D,SAASC,IAAI,QAAQ,eAAe;AACpC,OAAOC,CAAC,MAAM,QAAQ;AACtB,OAAOC,MAAM,MAAM,QAAQ;AAC3B,SAASC,OAAO,QAAQ,aAAa;AACrC,SAASC,kBAAkB,QAAQ,SAAS;AAC5C,SAASC,QAAQ,EAAEC,iBAAiB,EAAEC,iBAAiB,QAAQ,YAAY;AAC3E,OAAOC,mBAAmB,MAAM,mCAAmC;AACnE,OAAOC,qBAAqB,MAAM,qCAAqC;AACvE,SAASC,YAAY,EAAEC,cAAc,QAAQ,WAAW;AACxD,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,OAAO,EAAEC,MAAM,EAAEC,UAAU,EAAEC,MAAM,QAAQ,gBAAgB;AACpE,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,MAAMC,aAAa,SAAS5B,SAAS,CAAC;EACrC6B,WAAWA,CAACC,KAAK,EAAE;IAClB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,iBAyCL,YAAY;MACpB,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACH,MAAMC,GAAG,GAAG,MAAMpB,kBAAkB,CAACqB,MAAM,CAC1C,IAAI,CAACL,KAAK,CAACM,GAAG,CAACC,IAAI,EACnB,IAAI,CAACP,KAAK,CAACM,GAAG,CAACE,EAChB,CAAC;UACD;UACA,IAAI,CAACR,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAAC;UAC7B,IAAI,CAACC,cAAc,CAACN,GAAG,CAACK,IAAI,CAAC;UAC7B;UACA,IAAI,CAACE,eAAe,CAAC,CAAC;QACvB,CAAC,CAAC,OAAOC,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,cAAc,EAAEF,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC;UAC7C;UACA,IAAIH,KAAK,CAACI,QAAQ,CAACC,MAAM,KAAK,GAAG,IAAIL,KAAK,CAACI,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;YACnE,IAAI,CAACf,QAAQ,CAAC;cACbgB,SAAS,EAAE;YACZ,CAAC,CAAC;UACH;UACAL,OAAO,CAACC,GAAG,CAAC,cAAc,EAAEF,KAAK,CAAC;QACnC,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,uBAEc,YAAY;MAC1B,IAAI,CAAC,IAAI,CAACkB,aAAa,CAAC,CAAC,EAAE;MAC3B,IAAI;QACH,MAAMf,GAAG,GAAG,MAAMpB,kBAAkB,CAACoC,YAAY,CAAC,IAAI,CAACpB,KAAK,CAACqB,IAAI,CAACd,IAAI,CAAC;QACvE,IAAI,CAACL,QAAQ,CAAC;UAAEoB,SAAS,EAAElB,GAAG,CAACK,IAAI,CAACc;QAAM,CAAC,CAAC;MAC7C,CAAC,CAAC,OAAOX,KAAK,EAAE;QACfC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,KAAK,CAAC;MACzC;IACD,CAAC;IAAAX,eAAA,0BAEiB,YAAY;MAAA,IAAAuB,eAAA;MAC7B;MACA,IAAI,CAAC,IAAI,CAACL,aAAa,CAAC,CAAC,EAAE;MAC3B,IAAI,GAAAK,eAAA,GAAC,IAAI,CAACxB,KAAK,CAACM,GAAG,cAAAkB,eAAA,eAAdA,eAAA,CAAgBhB,EAAE,GAAE;MAEzB,IAAI;QACH,IAAI,CAACN,QAAQ,CAAC;UAAEuB,mBAAmB,EAAE;QAAK,CAAC,CAAC;QAC5C,MAAMrB,GAAG,GAAG,MAAMpB,kBAAkB,CAAC2B,eAAe,CAAC,IAAI,CAACX,KAAK,CAACM,GAAG,CAACE,EAAE,CAAC;QACvE,IAAI,CAACN,QAAQ,CAAC;UAAEwB,YAAY,EAAEtB,GAAG,CAACK,IAAI;UAAEgB,mBAAmB,EAAE;QAAM,CAAC,CAAC;MACtE,CAAC,CAAC,OAAOb,KAAK,EAAE;QAAA,IAAAe,eAAA;QACf;QACA,IAAI,EAAAA,eAAA,GAAAf,KAAK,CAACI,QAAQ,cAAAW,eAAA,uBAAdA,eAAA,CAAgBV,MAAM,MAAK,GAAG,EAAE;UACnCJ,OAAO,CAACC,GAAG,CAAC,uBAAuB,EAAEF,KAAK,CAAC;QAC5C;QACA,IAAI,CAACV,QAAQ,CAAC;UAAEuB,mBAAmB,EAAE;QAAM,CAAC,CAAC;MAC9C;IACD,CAAC;IAAAxB,eAAA,mBAoBU,MAAM;MAChB,MAAM;QAAEoB;MAAK,CAAC,GAAG,IAAI,CAACrB,KAAK;MAC3B,MAAM;QAAEM;MAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;MAC1B;MACA;MACA,IAAItB,GAAG,CAACuB,IAAI,KAAK,IAAI,EAAE;MACvB,IAAI,CAAC,IAAI,CAACV,aAAa,CAAC,CAAC,EAAE;MAC3B,IAAIE,IAAI,CAACS,EAAE,KAAKxB,GAAG,CAACyB,MAAM,EAAE;MAE5B,IAAI,CAAC7B,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACH,MAAM6B,OAAO,GAAG;YACfxB,EAAE,EAAEF,GAAG,CAACE,EAAE;YACVqB,IAAI,EAAE,IAAI;YACVZ,MAAM,EAAEX,GAAG,CAACW,MAAM,IAAI;UACvB,CAAC;UACD,MAAMb,GAAG,GAAG,MAAMpB,kBAAkB,CAACiD,OAAO,CAACD,OAAO,EAAEX,IAAI,CAACd,IAAI,CAAC;UAChE;UACA,IAAI,CAACP,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAACH,GAAG,CAAC;UACjC,IAAI,CAACD,MAAM,CAAC,CAAC;UACb,IAAI,CAACH,QAAQ,CAAC;YAAEC,OAAO,EAAE,KAAK;YAAE0B,IAAI,EAAE;UAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,OAAOjB,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEF,KAAK,CAAC;UACpC,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,oBAEW,MAAM;MACjB,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,MAAM;UAAEkB;QAAK,CAAC,GAAG,IAAI,CAACrB,KAAK;QAC3B,MAAM;UAAEM;QAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;QAC1B,IAAI;UACH,MAAMI,OAAO,GAAG;YAAExB,EAAE,EAAEF,GAAG,CAACE;UAAG,CAAC;UAC9B,IAAI,IAAI,CAACoB,KAAK,CAACM,YAAY,EAAE;YAC5BF,OAAO,CAACE,YAAY,GAAGpD,MAAM,CAAC,IAAI,CAAC8C,KAAK,CAACM,YAAY,CAAC,CACpDC,GAAG,CAAC,CAAC,CACLC,WAAW,CAAC,CAAC;UAChB;UACA,MAAMhC,GAAG,GAAG,MAAMpB,kBAAkB,CAACiD,OAAO,CAACD,OAAO,EAAEX,IAAI,CAACd,IAAI,CAAC;UAChE,IAAI,CAACP,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAACH,GAAG,CAAC;UACjC,IAAI,CAACD,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,OAAOO,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEF,KAAK,CAAC;QACtC,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,0BAEiB,MAAM;MACvB,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACH,MAAMC,GAAG,GAAG,MAAMpB,kBAAkB,CAACqD,aAAa,CACjD,IAAI,CAACrC,KAAK,CAACM,GAAG,CAACE,EAAE,EACjB,IAAI,CAACoB,KAAK,CAACX,MACZ,CAAC;UACD,IAAI,CAACjB,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAACH,GAAG,CAAC;UACjC,IAAI,CAACD,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,OAAOO,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,uBAAuB,EAAEF,KAAK,CAAC;QAC5C,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,4BAEmB,MAAM;MACzB,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACH,MAAMC,GAAG,GAAG,MAAMpB,kBAAkB,CAACsD,eAAe,CACnD,IAAI,CAACtC,KAAK,CAACM,GAAG,CAACE,EAAE,EACjB,IAAI,CAACoB,KAAK,CAACW,QACZ,CAAC;UACD,IAAI,CAACvC,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAACH,GAAG,CAAC;UACjC,IAAI,CAACD,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,OAAOO,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEF,KAAK,CAAC;QAC9C,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,sBAEa,MAAM;MACnBT,QAAQ,CAACgD,UAAU,CAACC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAAxC,eAAA,6BAEoB,MAAM;MAC1B,IAAI,CAACC,QAAQ,CAAC;QAAEwC,eAAe,EAAE;MAAK,CAAC,CAAC;IACzC,CAAC;IAAAzC,eAAA,6BAEoB,MAAM;MAC1B,IAAI,CAACC,QAAQ,CAAC;QAAEwC,eAAe,EAAE;MAAM,CAAC,CAAC;IAC1C,CAAC;IAAAzC,eAAA,yBAEiBgB,MAAM,IAAK;MAC5B,IAAI,IAAI,CAACW,KAAK,CAACzB,OAAO,EAAE;MACxB,IAAI,CAACD,QAAQ,CAAC;QAAEe,MAAM;QAAEyB,eAAe,EAAE;MAAM,CAAC,EAAE,MAAM;QACvD,IAAI,CAACC,eAAe,CAAC,CAAC;MACvB,CAAC,CAAC;IACH,CAAC;IAAA1C,eAAA,+BAEsB,MAAM;MAC5B,IAAI,CAACC,QAAQ,CAAC;QAAE0C,iBAAiB,EAAE;MAAK,CAAC,CAAC;IAC3C,CAAC;IAAA3C,eAAA,+BAEsB,MAAM;MAC5B,IAAI,CAACC,QAAQ,CAAC;QAAE0C,iBAAiB,EAAE;MAAM,CAAC,CAAC;IAC5C,CAAC;IAAA3C,eAAA,2BAEmBsC,QAAQ,IAAK;MAChC,IAAI,IAAI,CAACX,KAAK,CAACzB,OAAO,EAAE;MACxB,IAAI,CAACD,QAAQ,CAAC;QAAEqC,QAAQ;QAAEK,iBAAiB,EAAE;MAAM,CAAC,EAAE,MAAM;QAC3D,IAAI,CAACC,iBAAiB,CAAC,CAAC;MACzB,CAAC,CAAC;IACH,CAAC;IAAA5C,eAAA,yBAEgB,MAAM;MACtBT,QAAQ,CAACgD,UAAU,CAACM,QAAQ,CAACjD,MAAM,CAACkD,kBAAkB,EAAE;QACvDzC,GAAG,EAAE,IAAI,CAACsB,KAAK,CAACtB,GAAG;QACnB0C,QAAQ,EAAE,IAAI,CAAC3C;MAChB,CAAC,CAAC;IACH,CAAC;IAAAJ,eAAA,2BAEkB,MAAM;MACxB,IAAI,CAACC,QAAQ,CAAC;QAAE+C,SAAS,EAAE,MAAM;QAAEC,uBAAuB,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC;IAAAjD,eAAA,4BAEmB,MAAM;MACzB,IAAI,CAACC,QAAQ,CAAC;QAAEgD,uBAAuB,EAAE;MAAM,CAAC,CAAC;IAClD,CAAC;IAAAjD,eAAA,yBAEiBkD,IAAI,IAAK;MAC1B,IAAI,IAAI,CAACvB,KAAK,CAACqB,SAAS,KAAK,MAAM,EAAE;QACpCE,IAAI,GAAGrE,MAAM,CAACqE,IAAI,CAAC;QACnB,IAAI,CAACjD,QAAQ,CACZ;UACCgC,YAAY,EAAEiB,IAAI;UAClBC,gBAAgB,EAAED,IAAI,CAACE,MAAM,CAAC,YAAY,CAAC;UAC3CH,uBAAuB,EAAE;QAC1B,CAAC,EACD,MAAM;UACL,IAAI,CAACI,SAAS,CAAC,CAAC;QACjB,CACD,CAAC;MACF;IACD,CAAC;IAAArD,eAAA,0BAEiB,MAAM;MACvB,IAAI,CAACC,QAAQ,CAAC;QAAEqD,QAAQ,EAAE,CAAC,IAAI,CAAC3B,KAAK,CAAC2B;MAAS,CAAC,CAAC;IAClD,CAAC;IAAAtD,eAAA,yBAEgB,MAAM;MACtB,IAAI,CAACC,QAAQ,CAAC;QAAEsD,YAAY,EAAE;MAAK,CAAC,CAAC;IACtC,CAAC;IAAAvD,eAAA,2BAEmBwD,KAAK,IAAK;MAC7B,IAAIA,KAAK,GAAG,CAAC,EAAE;QACd,IAAI,CAACvD,QAAQ,CAAC;UAAEsD,YAAY,EAAE;QAAK,CAAC,CAAC;MACtC;IACD,CAAC;IAAAvD,eAAA,yBAEgB,MAAM;MACtB,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACH,MAAMG,GAAG,GAAG,MAAMtB,kBAAkB,CAACqB,MAAM,CAC1C,IAAI,CAACL,KAAK,CAACqB,IAAI,CAACd,IAAI,EACpB,IAAI,CAACP,KAAK,CAACM,GAAG,CAACE,EAChB,CAAC;UACD;UACA,IAAI,CAACR,KAAK,CAACf,QAAQ,CAACqB,GAAG,CAACG,IAAI,CAAC;UAC7B,IAAI,CAACJ,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,OAAOO,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEF,KAAK,CAAC;QAC3C,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAAAF,eAAA,wBAEe,MAAM;MACrB,MAAM;QAAEK;MAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;MAC1B,MAAM;QAAE8B;MAAY,CAAC,GAAG,IAAI,CAAC1D,KAAK,CAACqB,IAAI;MACvC,IAAIxC,CAAC,CAAC8E,QAAQ,CAACD,WAAW,EAAE7D,MAAM,CAAC+D,6BAA6B,CAAC,EAAE;QAClE,OAAO,IAAI;MACZ;MACA,IAAI/E,CAAC,CAAC8E,QAAQ,CAACD,WAAW,EAAE7D,MAAM,CAACgE,+BAA+B,CAAC,EAAE;QACpE,OAAOvD,GAAG,CAACwD,UAAU,KAAK,IAAI,CAAC9D,KAAK,CAACqB,IAAI,CAACS,EAAE;MAC7C;MACA,OAAO,KAAK;IACb,CAAC;IAAA7B,eAAA,gCAEwB8D,GAAG,IAAK;MAChC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAEA,GAAG,GAAG,EAAE;MACrC,IAAI,CAAC7D,QAAQ,CAAC;QACb8D,mBAAmB,EAAED,GAAG,CAACE,MAAM,GAAG,CAAC;QACnCC,eAAe,EAAEH;MAClB,CAAC,CAAC;IACH,CAAC;IAAA9D,eAAA,+BAgBsB,MAAM;MAC5B,MAAMkE,OAAO,GAAG,IAAI,CAACvC,KAAK,CAACN,SAAS,CAAC8C,GAAG,CAAEC,CAAC,IAAK;QAC/C,OAAO;UAAEC,GAAG,EAAED,CAAC,CAAC7D,EAAE;UAAE+D,IAAI,EAAEF,CAAC,CAACG;QAAY,CAAC;MAC1C,CAAC,CAAC;MACFhF,QAAQ,CAACgD,UAAU,CAACM,QAAQ,CAAC,gBAAgB,EAAE;QAC9CqB,OAAO;QACPM,SAAS,EAAE,IAAI,CAAC7C,KAAK,CAACtB,GAAG,CAACwD,UAAU;QACpCY,KAAK,EAAE,gBAAgB;QACvBC,QAAQ,EAAE,IAAI,CAACC;MAChB,CAAC,CAAC;IACH,CAAC;IAAA3E,eAAA,2BAEmB4E,QAAQ,IAAK;MAChC,IAAI,CAAC3E,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,EAAE,YAAY;QAC5C,IAAI;UACHU,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAACd,KAAK,CAACM,GAAG,CAACE,EAAE,EAAEqE,QAAQ,CAACP,GAAG,CAAC;UAChE,MAAMlE,GAAG,GAAG,MAAMpB,kBAAkB,CAAC8F,SAAS,CAC7C,IAAI,CAAC9E,KAAK,CAACM,GAAG,CAACE,EAAE,EACjBqE,QAAQ,CAACP,GACV,CAAC;UACD,IAAI,CAACtE,KAAK,CAACf,QAAQ,CAACmB,GAAG,CAACK,IAAI,CAACH,GAAG,CAAC;UACjC,IAAI,CAACD,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,OAAOO,KAAK,EAAE;UACfC,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEF,KAAK,CAAC;QAC7C,CAAC,SAAS;UACT,IAAI,CAACV,QAAQ,CAAC;YAAEC,OAAO,EAAE;UAAM,CAAC,CAAC;QAClC;MACD,CAAC,CAAC;IACH,CAAC;IAnWA,IAAI,CAACyB,KAAK,GAAG;MACZtB,GAAG,EAAE,CAAC,CAAC;MACP4C,uBAAuB,EAAE,KAAK;MAC9BD,SAAS,EAAE,EAAE;MACbhC,MAAM,EAAE,EAAE;MACVsB,QAAQ,EAAE,EAAE;MACZL,YAAY,EAAE,IAAI;MAClBkB,gBAAgB,EAAE,EAAE;MACpBvB,IAAI,EAAE,KAAK;MACX0B,QAAQ,EAAE,IAAI;MACdb,eAAe,EAAE,KAAK;MACtBE,iBAAiB,EAAE,KAAK;MACxBzC,OAAO,EAAE,KAAK;MACd6D,mBAAmB,EAAE,KAAK;MAC1BE,eAAe,EAAE,EAAE;MACnBa,WAAW,EAAE,KAAK;MAClBC,aAAa,EAAE,EAAE;MACjBxB,YAAY,EAAE,KAAK;MACnBlC,SAAS,EAAE,EAAE;MACb2D,WAAW,EAAE,IAAI;MACjBvD,YAAY,EAAE,IAAI;MAClBD,mBAAmB,EAAE;IACtB,CAAC;IAED,IAAI,CAACyD,UAAU,gBAAGjH,KAAK,CAACkH,SAAS,CAAC,CAAC;IACnC,IAAI,CAACC,YAAY,gBAAGnH,KAAK,CAACkH,SAAS,CAAC,CAAC;IACrC,IAAI,CAACE,cAAc,gBAAGpH,KAAK,CAACkH,SAAS,CAAC,CAAC;IACvC,IAAI,CAACG,UAAU,gBAAGrH,KAAK,CAACkH,SAAS,CAAC,CAAC;EACpC;EAEAI,iBAAiBA,CAAA,EAAG;IACnB,IAAI,CAACvF,KAAK,CAACd,iBAAiB,CAAC,IAAI,CAACc,KAAK,CAACM,GAAG,CAACC,IAAI,CAAC;IACjD,IAAI,CAACP,KAAK,CAACb,iBAAiB,CAAC,IAAI,CAACa,KAAK,CAACM,GAAG,CAACC,IAAI,CAAC;IACjD,IAAI,CAACF,MAAM,CAAC,CAAC;IACb,IAAI,CAACK,cAAc,CAAC,IAAI,CAACV,KAAK,CAACM,GAAG,CAAC;IACnC,IAAI,CAACc,YAAY,CAAC,CAAC;IACnB,IAAI,CAACT,eAAe,CAAC,CAAC;EACvB;EAyDAD,cAAcA,CAAC8E,UAAU,EAAE;IAC1B,MAAMlF,GAAG,GACRzB,CAAC,CAAC4G,IAAI,CAAC,IAAI,CAACzF,KAAK,CAAC0F,IAAI,EAAGC,CAAC,IAAKA,CAAC,CAACnF,EAAE,KAAK,IAAI,CAACR,KAAK,CAACM,GAAG,CAACE,EAAE,CAAC,IAAIgF,UAAU;IACzE,IAAI,CAAClF,GAAG,EAAE;MACT,IAAI,CAACD,MAAM,CAAC,CAAC;MACb;IACD;IACA,MAAMuF,QAAQ,GAAG;MAAEtF,GAAG;MAAEW,MAAM,EAAEX,GAAG,CAACW;IAAO,CAAC;IAC5C,IAAIX,GAAG,CAAC4B,YAAY,EAAE;MACrB0D,QAAQ,CAAC1D,YAAY,GAAGpD,MAAM,CAACwB,GAAG,CAAC4B,YAAY,CAAC;MAChD0D,QAAQ,CAACxC,gBAAgB,GAAGwC,QAAQ,CAAC1D,YAAY,CAACmB,MAAM,CAAC,YAAY,CAAC;IACvE;IACA,IAAI/C,GAAG,CAACuB,IAAI,EAAE+D,QAAQ,CAAC/D,IAAI,GAAGvB,GAAG,CAACuB,IAAI;IACtC,IAAI,CAAC3B,QAAQ,CAAC0F,QAAQ,EAAE,MAAM;MAC7B,IAAI,CAACC,QAAQ,CAAC,CAAC;IAChB,CAAC,CAAC;EACH;EA2MAC,WAAWA,CAACd,aAAa,EAAEe,KAAK,EAAE;IACjC,IAAI,CAAC7F,QAAQ,CAAC;MACb6E,WAAW,EAAE,IAAI;MACjBC;IACD,CAAC,CAAC;IACF,IAAI,CAACgB,IAAI,CAACV,UAAU,CAACW,QAAQ,CAACF,KAAK,CAAC;EACrC;EAEAG,YAAYA,CAAA,EAAG;IACd,IAAI,CAAChG,QAAQ,CAAC;MACb6E,WAAW,EAAE;IACd,CAAC,CAAC;EACH;EAgCAoB,aAAaA,CAAA,EAAG;IACf,oBAAOlI,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAAC0G,gBAAgB;MAACC,OAAO,EAAE,IAAI,CAAC1E,KAAK,CAACzB;IAAQ,CAAE,CAAC;EACpE;EAEAoG,SAASA,CAAA,EAAG;IACX,MAAM;MAAEtF,MAAM;MAAEX;IAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;IAClC,MAAM4E,YAAY,GAAGlH,YAAY,CAAC2B,MAAM,EAAE,IAAI,CAACjB,KAAK,CAAC;IACrD,MAAMuC,QAAQ,GAAGhD,cAAc,CAACe,GAAG,CAACiC,QAAQ,CAAC;IAC7C,MAAMkE,OAAO,GAAG,IAAI,CAACtF,aAAa,CAAC,CAAC;IACpC,MAAMuF,OAAO,GAAG,IAAI,CAAC1G,KAAK,CAACqB,IAAI,CAACsF,QAAQ,KAAK,OAAO;IACpD,MAAMC,QAAQ,GAAG,CAAC3F,MAAM,IAAIA,MAAM,KAAK3B,YAAY,CAAC,IAAI,EAAE,IAAI,CAACU,KAAK,CAAC,CAAC6G,IAAI;IAE1E,oBACC5I,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAE;QAAE,GAAGpH,MAAM,CAACqH,cAAc,CAAC;MAAE;IAAE,gBAC3C9I,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACC;IAAkB,GACpC3G,GAAG,CAAC4G,KAAK,gBACTjJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MACJ2I,KAAK,EAAE,CACNE,MAAM,CAACG,SAAS,EAChB;QAAEC,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH;MAAmB,CAAC;IACvC,GACD,GAAGxH,MAAM,CAACyH,cAAc,KAAKhH,GAAG,CAAC4G,KAAK,EAAS,CAAC,GAC/C,IAAI,eACRjJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACO;IAAa,GAAEjH,GAAG,CAACoE,KAAY,CAAC,eACpDzG,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACQ;IAAqB,gBACxCvJ,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MACJyI,KAAK,EAAE,CACNE,MAAM,CAACS,gBAAgB,EACvB;QACCC,eAAe,EAAEjI,OAAO,CAACkI,eAAe,CACvC,IAAI,CAAC3H,KAAK,CAACqH,kBAAkB,EAC7B,GACD;MACD,CAAC;IACA,gBAEFpJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MACJ2I,KAAK,EAAE,CACNE,MAAM,CAACY,WAAW,EAClB;QAAER,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH;MAAmB,CAAC,CACvC;MACFQ,aAAa,EAAE;IAAE,GAEhBvH,GAAG,CAACwH,IACA,CACD,CAAC,EACN,CAAC,IAAI,CAAC9H,KAAK,CAAC+H,QAAQ,IAAInB,QAAQ,IAAI,IAAI,CAAChF,KAAK,CAACC,IAAI,iBACnD5D,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACgB;IAAiB,gBACpC/J,KAAA,CAAAmI,aAAA,CAACxH,IAAI;MACJ2F,IAAI,EAAC,OAAO;MACZuD,IAAI,EAAC,cAAc;MACnBG,SAAS,EAAE,CACVjB,MAAM,CAACkB,WAAW,EAClB;QAAEd,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH;MAAmB,CAAC;IACvC,CACF,CAAC,eACFpJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MACJ2I,KAAK,EAAE,CACNE,MAAM,CAACmB,WAAW,EAClB;QAAEf,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH;MAAmB,CAAC;IACvC,GACF,MAEK,CACD,CAEF,CAAC,EAEN/G,GAAG,CAAC8H,gBAAgB,iBACpBnK,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACqB;IAAiB,gBACpCpK,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACsB;IAAiB,GAAC,iBAAqB,CAAC,eAC5DrK,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACuB;IAAyB,gBAC5CtK,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACwB;IAAgB,GAClC1J,MAAM,CAACwB,GAAG,CAAC8H,gBAAgB,CAAC,CAAC/E,MAAM,CAAC,oBAAoB,CACpD,CACD,CACD,CAeF,CAAC,eACPpF,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyB;IAAiB,gBACpCxK,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAAC0B;IAA2B,gBAC9CzK,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAAC2B;IAAwB,gBAC3C1K,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC4B;IAAiB,GAAC,QAAY,CAAC,eACnD3K,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;MAChBqK,OAAO,EAAEpC,OAAO,GAAG,IAAI,CAACqC,kBAAkB,GAAG;IAAK,gBAElD7K,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MACJyI,KAAK,EAAE,CACNE,MAAM,CAAC+B,kBAAkB,EACzB;QAAErB,eAAe,EAAElB,YAAY,CAACY;MAAM,CAAC;IACtC,gBAEFnJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACgC;IAAc,GAAExC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEK,IAAW,CACxD,CACW,CACb,CAAC,EACN,IAAI,CAAC1F,aAAa,CAAC,CAAC,iBACpBlD,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAAC2B;IAAwB,gBAC3C1K,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC4B;IAAiB,GAAC,aAAiB,CAAC,eACxD3K,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;MAACqK,OAAO,EAAE,IAAI,CAACI;IAAe,gBAC9ChL,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MACJyI,KAAK,EAAE,CACNE,MAAM,CAAC+B,kBAAkB,EACzB;QAAErB,eAAe,EAAE,IAAI,CAAC1H,KAAK,CAACqH;MAAmB,CAAC;IACjD,gBAEFpJ,KAAA,CAAAmI,aAAA,CAACxH,IAAI;MACJ2F,IAAI,EAAC,iBAAiB;MACtBuD,IAAI,EAAC,cAAc;MACnBG,SAAS,EAAEjB,MAAM,CAACkC;IAAc,CAChC,CAAC,eACFjL,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACgC;IAAc,GAAC,SAC3B,EAAC,CAAC1I,GAAG,CAAC6I,KAAK,IAAI,EAAE,EAAElF,MAAM,EAAC,GAC5B,CACD,CACW,CACb,CAEF,CAAC,EACNyC,OAAO,iBACPzI,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACoC;IAA0B,gBAC7CnL,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC4B;IAAiB,GAAC,UAAc,CAAC,eACrD3K,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;MAChBqK,OAAO,EAAEpC,OAAO,GAAG,IAAI,CAAC4C,oBAAoB,GAAG;IAAK,gBAEpDpL,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MACJyI,KAAK,EAAE,CACNE,MAAM,CAAC+B,kBAAkB,EACzB;QAAErB,eAAe,EAAEnF,QAAQ,CAAC6E;MAAM,CAAC;IAClC,gBAEFnJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACgC;IAAc,GAAEzG,QAAQ,CAAC+G,KAAY,CACpD,CACW,CACb,CAEF,CACD,CAAC;EAET;EAEAC,sBAAsBA,CAACC,MAAM,EAAEzD,KAAK,EAAE0D,cAAc,EAAElG,QAAQ,EAAE;IAC/D,MAAMQ,GAAG,GAAGyF,MAAM,CAACzD,KAAK,IAAI,CAAC,CAAC;IAC9B,MAAM2D,QAAQ,GAAGhK,MAAM,CAACiK,WAAW,CAAC5F,GAAG,CAAC;IAExC,IAAIrE,MAAM,CAACkK,OAAO,CAAC7F,GAAG,CAAC,EAAE;MACxB,oBACC9F,KAAA,CAAAmI,aAAA,CAAC3H,eAAe;QACfqI,KAAK,EAAE,CAAC;UAAE+C,IAAI,EAAE;QAAE,CAAC,EAAEJ,cAAc,CAAE;QACrCK,MAAM,EAAE;UAAEC,GAAG,EAAEL;QAAS;MAAE,gBAE1BzL,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;QAACyI,KAAK,EAAEE,MAAM,CAACgD;MAAmB,gBACtC/L,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;QAChBqK,OAAO,EAAE,IAAI,CAACoB,qBAAqB,CAACC,IAAI,CAAC,IAAI,EAAEnG,GAAG;MAAE,gBAEpD9F,KAAA,CAAAmI,aAAA,CAACxH,IAAI;QACJ2F,IAAI,EAAC,MAAM;QACXuD,IAAI,EAAC,cAAc;QACnBG,SAAS,EAAEjB,MAAM,CAACmD;MAAiB,CACnC,CACgB,CACb,CACU,CAAC;IAEpB;IAEA,MAAMC,QAAQ,GAAG1K,MAAM,CAAC2K,OAAO,CAACtG,GAAG,CAAC;IACpC,oBACC9F,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;MAChBsI,KAAK,EAAE2C,cAAe;MACtBZ,OAAO,EAAE,IAAI,CAAC/C,WAAW,CAACoE,IAAI,CAAC,IAAI,EAAEV,MAAM,EAAEzD,KAAK,IAAI,CAAC;IAAE,gBAEzD9H,KAAA,CAAAmI,aAAA,CAAC3H,eAAe;MACfqI,KAAK,EAAEE,MAAM,CAACsD,cAAe;MAC7BR,MAAM,EAAE;QAAEC,GAAG,EAAEK;MAAS;IAAE,GAEzB7G,QAAQ,iBACRtF,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACuD;IAAW,GAAC,GAC9B,EAAC,IAAI,CAAC3I,KAAK,CAACtB,GAAG,CAACkJ,MAAM,CAACvF,MAAM,GAAG,CAC5B,CAES,CACA,CAAC;EAErB;EAEAuG,mBAAmBA,CAAChB,MAAM,EAAEzD,KAAK,EAAE0D,cAAc,EAAElG,QAAQ,EAAE;IAC5D,OAAO,IAAI,CAACgG,sBAAsB,CAACC,MAAM,EAAEzD,KAAK,EAAE0D,cAAc,EAAElG,QAAQ,CAAC;EAC5E;EAEAkH,WAAWA,CAACjB,MAAM,EAAEkB,KAAK,GAAG,IAAI,EAAE;IACjC,IAAI,CAAC7L,CAAC,CAAC8L,KAAK,CAACnB,MAAM,CAAC,IAAI,CAAC3K,CAAC,CAAC+L,OAAO,CAACpB,MAAM,CAAC,EAAE;MAC3C,IAAIA,MAAM,CAACvF,MAAM,IAAI,CAAC,EAAE;QACvB,oBACChG,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;UAACyI,KAAK,EAAEE,MAAM,CAAC6D;QAAiB,GACnC,IAAI,CAACL,mBAAmB,CACxBhB,MAAM,EACN,CAAC,EACDxC,MAAM,CAAC8D,wBACR,CAAC,EACA,IAAI,CAACN,mBAAmB,CACxBhB,MAAM,EACN,CAAC,EACDxC,MAAM,CAAC8D,wBAAwB,EAC/BtB,MAAM,CAACvF,MAAM,GAAG,CACjB,CACK,CAAC;MAET,CAAC,MAAM;QACN,oBACChG,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;UAACyI,KAAK,EAAEE,MAAM,CAAC+D;QAAqB,GACvC,IAAI,CAACP,mBAAmB,CAAChB,MAAM,EAAE,CAAC,CAC9B,CAAC;MAET;IACD,CAAC,MAAM,IAAI,CAAC3K,CAAC,CAAC8L,KAAK,CAACD,KAAK,CAAC,EAAE;MAC3B,oBACCzM,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;QAACyI,KAAK,EAAEE,MAAM,CAAC+D;MAAqB,GACvC,IAAI,CAACxB,sBAAsB,CAAC,CAACmB,KAAK,CAAC,EAAE,CAAC,CAClC,CAAC;IAET;IACA,OAAO,IAAI;EACZ;EAEAM,cAAcA,CAACC,SAAS,EAAE;IACzB,MAAM;MAAE5D;IAAmB,CAAC,GAAG,IAAI,CAACrH,KAAK;IAEzC,IAAI,CAACnB,CAAC,CAAC8L,KAAK,CAACM,SAAS,CAAC,IAAI,CAACpM,CAAC,CAAC+L,OAAO,CAACK,SAAS,CAAC,EAAE;MACjD,OAAOA,SAAS,CAAC7G,GAAG,CAAC,CAAC8G,QAAQ,EAAEnF,KAAK,KAAK;QACzC,oBACC9H,KAAA,CAAAmI,aAAA,CAAC5H,gBAAgB;UAChB8F,GAAG,EAAEyB,KAAM;UACXe,KAAK,EAAEE,MAAM,CAACmE,iBAAkB;UAChCtC,OAAO,EAAEA,CAAA,KAAM,IAAI,CAAC3I,QAAQ,CAAC;YAAE+E,WAAW,EAAEiG;UAAS,CAAC;QAAE,gBAExDjN,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;UACJyI,KAAK,EAAE;YACN,GAAGE,MAAM,CAACoE,qBAAqB;YAC/B1D,eAAe,EAAEL;UAClB;QAAE,gBAEFpJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;UAAC2I,KAAK,EAAEE,MAAM,CAACqE;QAAiB,GAAEH,QAAQ,CAACI,GAAU,CACrD,CAAC,eACPrN,KAAA,CAAAmI,aAAA,CAACjI,IAAI;UACJ2I,KAAK,EAAEE,MAAM,CAACuE;QAAa,GAC1B,GAAGL,QAAQ,CAAC3G,IAAI,GAAG2G,QAAQ,CAACM,SAAS,GAAG,MAAMN,QAAQ,CAACO,cAAc,EAAE,GAAG,EAAE,EAAS,CACtE,CAAC;MAErB,CAAC,CAAC;IACH;IACA,OAAO,IAAI;EACZ;EAEAC,gBAAgBA,CAAA,EAAG;IAClB,oBACCzN,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACgM,UAAU;MACrBrF,OAAO,EAAE,IAAI,CAAC1E,KAAK,CAACmD,WAAY;MAChCyE,MAAM,EAAE,IAAI,CAAC5H,KAAK,CAACoD,aAAc;MACjC4G,OAAO,EAAE,IAAI,CAAC1F,YAAY,CAACgE,IAAI,CAAC,IAAI,CAAE;MACtC2B,GAAG,EAAE,IAAI,CAACvG;IAAW,CACrB,CAAC;EAEJ;EAEAwG,mBAAmBA,CAAA,EAAG;IACrB,IAAIjN,CAAC,CAAC+L,OAAO,CAAC,IAAI,CAAChJ,KAAK,CAACqD,WAAW,CAAC,EAAE,OAAO,IAAI;IAClD,oBACChH,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACoM,QAAQ;MACnBjC,MAAM,EAAE,IAAI,CAAClI,KAAK,CAACqD,WAAW,CAAClB,GAAI;MACnC6H,OAAO,EAAEA,CAAA,KAAM,IAAI,CAAC1L,QAAQ,CAAC;QAAE+E,WAAW,EAAE;MAAK,CAAC,CAAE;MACpDP,KAAK,EAAE,IAAI,CAAC9C,KAAK,CAACqD,WAAW,CAACV,IAAK;MACnCyH,QAAQ,EAAE;IAAE,CACZ,CAAC;EAEJ;EAEAC,cAAcA,CAAA,EAAG;IAChB,MAAM;MAAE3L;IAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;IAC1B,IAAI,CAAC,IAAI,CAACT,aAAa,CAAC,CAAC,IAAI,CAACb,GAAG,CAAC4L,QAAQ,EAAE,OAAO,IAAI;IAEvD,MAAMC,OAAO,gBACZlO,KAAA,CAAAmI,aAAA,CAAC/H,IAAI,qBACJJ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACoF;IAAc,GAAC,aAAiB,CAAC,eACrDnO,KAAA,CAAAmI,aAAA,CAAC/H,IAAI,QACHiC,GAAG,CAAC4L,QAAQ,iBACZjO,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACqF;IAAiB,gBACpCpO,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAAC2M,UAAU;MACrBA,UAAU,EAAEhM,GAAG,CAAC4L,QAAQ,CAACK,UAAW;MACpCC,QAAQ,EAAE;IAAG,CACb,CAAC,eACFvO,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyF;IAAc,gBACjCxO,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC0F;IAAS,GAAEpM,GAAG,CAAC4L,QAAQ,CAAC1H,WAAkB,CACzD,CACD,CAEF,CACD,CACN;IAED,IAAI,IAAI,CAACrD,aAAa,CAAC,CAAC,EAAE;MACzB,oBACClD,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACgN,6BAA6B;QACxC9D,OAAO,EAAE,IAAI,CAAC+D,oBAAqB;QACnClI,KAAK,EAAC,aAAa;QACnBmI,KAAK,EAAEvM,GAAG,CAAC4L,QAAQ,GAAG5L,GAAG,CAAC4L,QAAQ,CAAC1H,WAAW,GAAG,YAAa;QAC9DsI,SAAS,EAAE9F,MAAM,CAAC+F,WAAY;QAC9BC,YAAY,EAAEhG,MAAM,CAACiG;MAAe,GAEnCd,OACwC,CAAC;IAE7C;IACA,OAAOA,OAAO;EACf;EAEAe,kBAAkBA,CAAA,EAAG;IACpB,MAAM;MAAExL,YAAY;MAAED;IAAoB,CAAC,GAAG,IAAI,CAACG,KAAK;;IAExD;IACA,IAAI,CAAC,IAAI,CAACT,aAAa,CAAC,CAAC,EAAE,OAAO,IAAI;IACtC,IAAI,CAACO,YAAY,IAAID,mBAAmB,EAAE,OAAO,IAAI;IAErD,oBACCxD,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAE,CAACE,MAAM,CAACmG,qBAAqB,EAAEzN,MAAM,CAACqH,cAAc,CAAC,CAAC;IAAE,gBACpE9I,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACoG;IAAmB,gBACtCnP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACqG;IAAkB,GAAC,eAAmB,CAAC,eAC3DpP,KAAA,CAAAmI,aAAA,CAACxH,IAAI;MACJ2F,IAAI,EAAC,MAAM;MACXuD,IAAI,EAAC,UAAU;MACfG,SAAS,EAAE,CACVjB,MAAM,CAACsG,gBAAgB,EACvB;QAAElG,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH;MAAmB,CAAC;IACvC,CACF,CACI,CAAC,eACPpJ,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACuG;IAAoB,GACtC7L,YAAY,CAAC8L,UAAU,iBACvBvP,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyG;IAAgB,gBACnCxP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC0G;IAAkB,GAAC,SAAa,CAAC,eACrDzP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC2G;IAAkB,GACpCjM,YAAY,CAAC8L,UACT,CACD,CACN,EACA9L,YAAY,CAACkM,UAAU,iBACvB3P,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyG;IAAgB,gBACnCxP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC0G;IAAkB,GAAC,cAAkB,CAAC,eAC1DzP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC2G;IAAkB,GACpCjM,YAAY,CAACkM,UACT,CACD,CACN,EACAlM,YAAY,CAACmM,QAAQ,iBACrB5P,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyG;IAAgB,gBACnCxP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC0G;IAAkB,GAAC,SAAa,CAAC,eACrDzP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC2G;IAAkB,GACpC7O,MAAM,CAAC4C,YAAY,CAACmM,QAAQ,CAAC,CAACxK,MAAM,CAAC,kBAAkB,CACnD,CACD,CAEF,CACD,CAAC;EAET;EAEAyK,kBAAkBA,CAAA,EAAG;IACpB,MAAM;MAAExN;IAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;IAC1B,MAAM;MAAEmM;IAAa,CAAC,GAAGzN,GAAG;IAE5B,MAAM0N,YAAY,GAAIC,KAAK,IAAK;MAC/B,QAAQA,KAAK,CAACnG,IAAI;QACjB,KAAK,MAAM;UACV,oBACC7J,KAAA,CAAAmI,aAAA,CAACjI,IAAI;YAAC2I,KAAK,EAAEE,MAAM,CAACkH;UAAW,GAC7BD,KAAK,CAACE,MAAM,GACVrP,MAAM,CAACmP,KAAK,CAACE,MAAM,EAAE,YAAY,CAAC,CAAC9K,MAAM,CAAC,aAAa,CAAC,GACxD,EACE,CAAC;QAET,KAAK,MAAM;UACV,oBACCpF,KAAA,CAAAmI,aAAA,CAACjI,IAAI;YAAC2I,KAAK,EAAEE,MAAM,CAACkH;UAAW,GAC7BD,KAAK,CAACE,MAAM,GACVrP,MAAM,CAACmP,KAAK,CAACE,MAAM,EAAE,OAAO,CAAC,CAAC9K,MAAM,CAAC,QAAQ,CAAC,GAC9C,EACE,CAAC;QAET,KAAK,IAAI;UACR,oBACCpF,KAAA,CAAAmI,aAAA,CAACjI,IAAI;YAAC2I,KAAK,EAAEE,MAAM,CAACkH;UAAW,GAAED,KAAK,CAACE,MAAM,GAAG,KAAK,GAAG,IAAW,CAAC;QAEtE,KAAK,UAAU;UACd,oBACClQ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;YAAC2I,KAAK,EAAEE,MAAM,CAACkH;UAAW,GAC7BD,KAAK,CAACE,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAACE,MAAM,CAAC,GACzCF,KAAK,CAACE,MAAM,CAACG,IAAI,CAAC,IAAI,CAAC,GACvB,EACE,CAAC;QAET,KAAK,OAAO;UACX,oBACCrQ,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;YAACyI,KAAK,EAAEE,MAAM,CAACuH;UAAY,GAC9B,IAAI,CAAC9D,WAAW,CAACwD,KAAK,CAACE,MAAM,CACzB,CAAC;QAET,KAAK,UAAU;UACd,oBACClQ,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;YAACyI,KAAK,EAAEE,MAAM,CAACwH;UAAe,GACjC,IAAI,CAACxD,cAAc,CAACiD,KAAK,CAACE,MAAM,CAC5B,CAAC;QAET;UACC,oBAAOlQ,KAAA,CAAAmI,aAAA,CAACjI,IAAI;YAAC2I,KAAK,EAAEE,MAAM,CAACkH;UAAW,GAAED,KAAK,CAACE,MAAa,CAAC;MAC9D;IACD,CAAC;IAED,OAAOJ,YAAY,CAAC3J,GAAG,CAAC,CAAC6J,KAAK,EAAElI,KAAK,KAAK;MACzC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAACpC,QAAQ,CAACsK,KAAK,CAACnG,IAAI,CAAC,EAAE,OAAO,IAAI;MACnE,IACCjJ,CAAC,CAAC8L,KAAK,CAACsD,KAAK,CAACE,MAAM,CAAC,IACrBF,KAAK,CAACE,MAAM,KAAK,EAAE,IAClBC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAACE,MAAM,CAAC,IAAIF,KAAK,CAACE,MAAM,CAAClK,MAAM,KAAK,CAAE,EAE1D,OAAO,IAAI;MACZ,oBACChG,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;QAACiG,GAAG,EAAEyB;MAAM,gBAChB9H,KAAA,CAAAmI,aAAA,CAACjI,IAAI;QAAC2I,KAAK,EAAEE,MAAM,CAACyH;MAAY,GAAER,KAAK,CAAC3E,KAAY,CAAC,EACpD0E,YAAY,CAACC,KAAK,CACd,CAAC;IAET,CAAC,CAAC;EACH;EAEAS,YAAYA,CAAA,EAAG;IACd,MAAM;MAAEpO;IAAI,CAAC,GAAG,IAAI,CAACsB,KAAK;IAC1B,MAAM;MAAEmM;IAAa,CAAC,GAAGzN,GAAG;IAC5B,MAAMqO,eAAe,GAAGZ,YAAY,IAAIA,YAAY,CAAC9J,MAAM,GAAG,CAAC;IAE/D,oBACChG,KAAA,CAAAmI,aAAA,CAAC/H,IAAI,qBACJJ,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACgN,6BAA6B;MACxC9D,OAAO,EAAE,IAAI,CAAC+F,eAAgB;MAC9BlK,KAAK,EAAC,SAAS;MACfmK,IAAI,EAAE,IAAI,CAACjN,KAAK,CAAC2B,QAAQ,GAAG,UAAU,GAAG,YAAa;MACtDuJ,SAAS,EAAE9F,MAAM,CAAC+F,WAAY;MAC9BC,YAAY,EAAEhG,MAAM,CAACiG;IAAe,CACpC,CAAC,EACD,IAAI,CAACrL,KAAK,CAAC2B,QAAQ,iBACnBtF,KAAA,CAAAmI,aAAA,CAAC/H,IAAI,QACHsQ,eAAe,GAAG,IAAI,CAACb,kBAAkB,CAAC,CAAC,GAAG,IAAI,EAClD,CAACa,eAAe,gBAChB1Q,KAAA,CAAAmI,aAAA,CAAAnI,KAAA,CAAA6Q,QAAA,QACE,IAAI,CAACrE,WAAW,CAACnK,GAAG,CAACkJ,MAAM,EAAElJ,GAAG,CAACoK,KAAK,CAAC,EACvC,CAAC7L,CAAC,CAAC+L,OAAO,CAACtK,GAAG,CAACyO,WAAW,CAAC,iBAC3B9Q,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACgI;IAAmB,GACrC1O,GAAG,CAACyO,WACA,CAEN,CAAC,GACA,IAAI,eACR9Q,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACoF;IAAc,GAAC,SAAa,CAAC,eACjDnO,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACiI;IAAa,GAAE3O,GAAG,CAAC4O,IAAW,CAAC,EAClD,CAACP,eAAe,IAAIrO,GAAG,CAAC6O,MAAM,gBAC9BlR,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACiG;IAAe,gBAClChP,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACoF;IAAc,GAAC,cAAkB,CAAC,eACtDnO,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACiI;IAAa,GAAE3O,GAAG,CAAC8O,QAAe,CACjD,CAAC,GACJ,IAAI,eACRnR,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACqI;IAAe,GAAC,cAAkB,CAAC,eACvDpR,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACqF;IAAiB,gBACpCpO,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAAC2M,UAAU;MACrBA,UAAU,EAAEhM,GAAG,CAACgP,cAAe;MAC/B9C,QAAQ,EAAE;IAAG,CACb,CAAC,eACFvO,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACyF;IAAc,gBACjCxO,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAAC0F;IAAS,GAAEpM,GAAG,CAACiP,QAAe,CAAC,EAClD,CAAC1Q,CAAC,CAAC+L,OAAO,CAACtK,GAAG,CAACkP,KAAK,CAAC,iBACrBvR,KAAA,CAAAmI,aAAA,CAACjI,IAAI;MAAC2I,KAAK,EAAEE,MAAM,CAACyI;IAAU,GAAEnP,GAAG,CAACkP,KAAY,CAE5C,CACD,CAAC,EACN,IAAI,CAACtC,kBAAkB,CAAC,CACpB,CAEF,CAAC;EAET;EAEAwC,cAAcA,CAAA,EAAG;IAChB,oBACCzR,KAAA,CAAAmI,aAAA,CAAC/H,IAAI,qBACJJ,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACgQ,cAAc;MACzB9D,GAAG,EAAE,IAAI,CAACxG,cAAe;MACzBD,YAAY,EAAE,IAAI,CAACA,YAAa;MAChCF,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5B0K,eAAe,EAAE/P,MAAM,CAAC+D,6BAA8B;MACtDiM,UAAU,EAAEhQ,MAAM,CAACiQ,UAAW;MAC9BC,QAAQ,EAAE,IAAI,CAAC/P,KAAK,CAACM,GAAG,CAACE,EAAG;MAC5BwP,UAAU,EAAE,IAAI,CAAChQ,KAAK,CAACM,GAAG,CAACoE,KAAM;MACjCnE,IAAI,EAAE,IAAI,CAACqB,KAAK,CAACtB,GAAG,CAACC,IAAI,IAAI,IAAI,CAACqB,KAAK,CAACtB,GAAG,CAAC2P,QAAS;MACrDC,IAAI;MACJC,gBAAgB,EAAE,KAAM;MACxBC,WAAW,EAAE,EAAG;MAChBtJ,KAAK,EAAE;QAAE+C,IAAI,EAAE,CAAC;QAAEwG,iBAAiB,EAAE,CAAC;QAAEC,UAAU,EAAE;MAAG,CAAE;MACzDC,gBAAgB,EAAE,IAAI,CAACA,gBAAiB;MACxCC,cAAc,EAAE,IAAI,CAACA,cAAe;MACpCC,cAAc;MACdC,WAAW;IAAA,CACX,CAAC,EACD,CAAC,IAAI,CAAC9O,KAAK,CAAC4B,YAAY,iBACxBvF,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACgR,YAAY;MACvB9H,OAAO,EAAE,IAAI,CAAC+H,cAAe;MAC7BxJ,KAAK,EAAE,IAAI,CAACpH,KAAK,CAACqH,kBAAmB;MACrCwJ,cAAc,EAAE;QAAEC,SAAS,EAAE;MAAG,CAAE;MAClChK,KAAK,EAAE;QAAEiK,MAAM,EAAE;MAAG,CAAE;MACtBjE,SAAS,EAAE;QAAE1F,KAAK,EAAE;MAAO,CAAE;MAC7B4J,SAAS;IAAA,GACT,eAEwB,CAErB,CAAC;EAET;EAEAC,mBAAmBA,CAAA,EAAG;IACrB,IAAI,CAAC,IAAI,CAACrP,KAAK,CAAC4B,YAAY,EAAE,OAAO,IAAI;IAEzC,oBACCvF,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACuR,YAAY;MACvBrF,GAAG,EAAE,IAAI,CAACzG,YAAa;MACvBC,cAAc,EAAE,IAAI,CAACA,cAAe;MACpCH,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5B2K,UAAU,EAAEhQ,MAAM,CAACiQ,UAAW;MAC9BC,QAAQ,EAAE,IAAI,CAAC/P,KAAK,CAACM,GAAG,CAACE,EAAG;MAC5BwP,UAAU,EAAE,IAAI,CAAChQ,KAAK,CAACM,GAAG,CAACoE,KAAM;MACjCnE,IAAI,EAAE,IAAI,CAACqB,KAAK,CAACtB,GAAG,CAACC,IAAI,IAAI,IAAI,CAACqB,KAAK,CAACtB,GAAG,CAAC2P;MAC5C;MACA;IAAA,CACA,CAAC;EAEJ;EAEAkB,iBAAiBA,CAAA,EAAG;IACnB,IAAI,CAAC,IAAI,CAACvP,KAAK,CAACc,eAAe,EAAE,OAAO,IAAI;IAC5C,oBACCzE,KAAA,CAAAmI,aAAA,CAAChH,mBAAmB;MACnBwM,OAAO,EAAE,IAAI,CAACwF,kBAAmB;MACjCzM,QAAQ,EAAE,IAAI,CAAC0M;IAAe,CAC9B,CAAC;EAEJ;EAEAC,mBAAmBA,CAAA,EAAG;IACrB,IAAI,CAAC,IAAI,CAAC1P,KAAK,CAACgB,iBAAiB,EAAE,OAAO,IAAI;IAC9C,oBACC3E,KAAA,CAAAmI,aAAA,CAAC/G,qBAAqB;MACrBuM,OAAO,EAAE,IAAI,CAAC2F,oBAAqB;MACnC5M,QAAQ,EAAE,IAAI,CAAC6M;IAAiB,CAChC,CAAC;EAEJ;EAEAC,MAAMA,CAAA,EAAG;IACR,IAAI,IAAI,CAAC7P,KAAK,CAACV,SAAS,EAAE;MACzB,oBAAOjD,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAAC+R,SAAS,MAAE,CAAC;IAChC;IACA,oBACCzT,KAAA,CAAAmI,aAAA,CAAC7H,oBAAoB;MAACoT,QAAQ,EAAE,SAAU;MAAC7K,KAAK,EAAEE,MAAM,CAAC4K;IAAU,gBAClE3T,KAAA,CAAAmI,aAAA,CAACzG,UAAU,CAACkS,MAAM;MACjBC,QAAQ,EAAC,YAAY;MACrBC,WAAW,EAAE,IAAI,CAACC,WAAY;MAC9BnL,IAAI,EAAEjH,MAAM,CAACqS,GAAG,CAACC,OAAO,CAACC;IAA4B,CACrD,CAAC,EACD,IAAI,CAAChM,aAAa,CAAC,CAAC,eACrBlI,KAAA,CAAAmI,aAAA,CAAChI,UAAU;MACVyN,GAAG,EAAE,IAAI,CAAC3G,UAAW;MACrBkN,qBAAqB,EAAE;QAAEC,aAAa,EAAE;MAAG,CAAE;MAC7CvL,KAAK,EAAE;QAAEiK,MAAM,EAAE;MAAO;IAAE,gBAE1B9S,KAAA,CAAAmI,aAAA,CAAC/H,IAAI;MAACyI,KAAK,EAAEE,MAAM,CAACsL;IAAe,GACjC,IAAI,CAAC/L,SAAS,CAAC,CAAC,EAChB,IAAI,CAAC0F,cAAc,CAAC,CAAC,EACrB,IAAI,CAACyC,YAAY,CAAC,CAAC,EACnB,IAAI,CAACgB,cAAc,CAAC,CAChB,CACK,CAAC,EACZ,IAAI,CAACuB,mBAAmB,CAAC,CAAC,EAC1B,IAAI,CAACE,iBAAiB,CAAC,CAAC,EACxB,IAAI,CAACG,mBAAmB,CAAC,CAAC,EAC1B,IAAI,CAAC5F,gBAAgB,CAAC,CAAC,EACvB,IAAI,CAACI,mBAAmB,CAAC,CAAC,eAC3B7N,KAAA,CAAAmI,aAAA,CAACzH,cAAc;MACd4T,SAAS,EAAE,IAAI,CAAC3Q,KAAK,CAACsB,uBAAwB;MAC9CsP,SAAS,EAAE,IAAI,CAACC,cAAe;MAC/BC,QAAQ,EAAE,IAAI,CAACC,iBAAkB;MACjCC,IAAI,EAAE,IAAI,CAAChR,KAAK,CAACqB,SAAU;MAC3B4P,aAAa,EAAE,UAAU,IAAI,CAACjR,KAAK,CAACqB,SAAS,EAAG;MAChDE,IAAI,EAAE,IAAI2P,IAAI,CAAC;IAAE,CACjB,CACoB,CAAC;EAEzB;AACD;AAEA,MAAM9L,MAAM,GAAG1I,UAAU,CAACyU,MAAM,CAAC;EAChCnB,SAAS,EAAE;IACV/H,IAAI,EAAE,CAAC;IACPnC,eAAe,EAAE;EAClB,CAAC;EACD4K,cAAc,EAAE;IACfhC,UAAU,EAAE,EAAE;IACdD,iBAAiB,EAAE;EACpB,CAAC;EACDpJ,iBAAiB,EAAE;IAClB+L,eAAe,EAAE,EAAE;IACnB3C,iBAAiB,EAAE;EACpB,CAAC;EACDlJ,SAAS,EAAE;IACV8L,UAAU,EAAE,WAAW;IACvBC,QAAQ,EAAE,EAAE;IACZC,YAAY,EAAE;EACf,CAAC;EACD5L,YAAY,EAAE;IACb0L,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BD,YAAY,EAAE;EACf,CAAC;EACD3L,oBAAoB,EAAE;IACrB6L,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACb,CAAC;EACD7L,gBAAgB,EAAE;IACjB8L,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE,GAAG;IACbC,YAAY,EAAE,CAAC;IACfC,cAAc,EAAE;EACjB,CAAC;EACD/L,WAAW,EAAE;IACZqL,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZU,SAAS,EAAE,QAAQ;IACnBH,QAAQ,EAAE;EACX,CAAC;EACDzL,gBAAgB,EAAE;IACjBqL,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBO,UAAU,EAAE;EACb,CAAC;EACD3L,WAAW,EAAE;IACZgL,QAAQ,EAAE;EACX,CAAC;EACD/K,WAAW,EAAE;IACZ8K,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZW,UAAU,EAAE;EACb,CAAC;EACDC,iBAAiB,EAAE;IAClBhD,SAAS,EAAE,CAAC;IACZmC,UAAU,EAAE,WAAW;IACvBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAACsU;EAChB,CAAC;EACDtL,gBAAgB,EAAE;IACjBuL,cAAc,EAAE,CAAC;IACjBC,cAAc,EAAExU,OAAO,CAACyU,QAAQ;IAChClB,eAAe,EAAE,EAAE;IACnB3C,iBAAiB,EAAE;EACpB,CAAC;EACD3H,0BAA0B,EAAE;IAC3B2K,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,YAAY;IACxBK,cAAc,EAAE;EACjB,CAAC;EACDhL,uBAAuB,EAAE;IACxB;EAAA,CACA;EACDC,gBAAgB,EAAE;IACjBqK,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZiB,aAAa,EAAE,GAAG;IAClB/M,KAAK,EAAE3H,OAAO,CAAC2U,SAAS;IACxBjB,YAAY,EAAE;EACf,CAAC;EACDpK,kBAAkB,EAAE;IACnBsK,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBe,KAAK,EAAE,GAAG;IACVtD,MAAM,EAAE,EAAE;IACVV,iBAAiB,EAAE,CAAC;IACpBqD,YAAY,EAAE;EACf,CAAC;EACDxK,aAAa,EAAE;IACd9B,KAAK,EAAE,MAAM;IACb8L,QAAQ,EAAE,EAAE;IACZoB,WAAW,EAAE;EACd,CAAC;EACDtL,aAAa,EAAE;IACd5B,KAAK,EAAE,MAAM;IACbwM,SAAS,EAAE,QAAQ;IACnBX,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZrJ,IAAI,EAAE,CAAC;IACP+J,SAAS,EAAE;EACZ,CAAC;EACDxK,yBAAyB,EAAE;IAC1B0H,SAAS,EAAE;EACZ,CAAC;EACDyD,wBAAwB,EAAE;IACzB7M,eAAe,EAAEjI,OAAO,CAAC+U,OAAO;IAChCnB,aAAa,EAAE,KAAK;IACpBgB,KAAK,EAAE,GAAG;IACVtD,MAAM,EAAE,EAAE;IACV2C,YAAY,EAAE,CAAC;IACfJ,UAAU,EAAE,QAAQ;IACpBmB,WAAW,EAAE;EACd,CAAC;EACDC,eAAe,EAAE;IAChBzB,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAACkI,eAAe,CAAClI,OAAO,CAAC2T,YAAY,EAAE,GAAG;EACzD,CAAC;EACDrG,WAAW,EAAE;IACZkG,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T;EAChB,CAAC;EACDnG,cAAc,EAAE;IACf6D,SAAS,EAAE,CAAC;IACZT,iBAAiB,EAAE,CAAC;IACpBgC,aAAa,EAAE;EAChB,CAAC;EACDxH,gBAAgB,EAAE;IACjBhB,IAAI,EAAE,CAAC;IACPwJ,aAAa,EAAE,KAAK;IACpBM,cAAc,EAAE,eAAe;IAC/BR,YAAY,EAAE;EACf,CAAC;EACDrI,wBAAwB,EAAE;IACzBpD,eAAe,EAAE,MAAM;IACvB2M,KAAK,EAAE,KAAK;IACZtD,MAAM,EAAE,GAAG;IACX2C,YAAY,EAAE,CAAC;IACfiB,QAAQ,EAAE;EACX,CAAC;EACD5J,oBAAoB,EAAE;IACrBrD,eAAe,EAAE,MAAM;IACvB2M,KAAK,EAAE,MAAM;IACbtD,MAAM,EAAE,GAAG;IACXlH,IAAI,EAAE,CAAC;IACP6J,YAAY,EAAE,CAAC;IACfiB,QAAQ,EAAE,QAAQ;IAClBxB,YAAY,EAAE;EACf,CAAC;EACD7I,cAAc,EAAE;IACfyG,MAAM,EAAE,GAAG;IACXsD,KAAK,EAAE,MAAM;IACbV,cAAc,EAAE;EACjB,CAAC;EACD3J,kBAAkB,EAAE;IACnB4K,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACT1B,UAAU,EAAE,QAAQ;IACpBK,cAAc,EAAE;EACjB,CAAC;EACDxJ,gBAAgB,EAAE;IACjB/C,KAAK,EAAE,MAAM;IACb8L,QAAQ,EAAE,EAAE;IACZ+B,eAAe,EAAE,iBAAiB;IAClCC,gBAAgB,EAAE;MAAEb,KAAK,EAAE,CAAC;MAAEtD,MAAM,EAAE;IAAE;EACzC,CAAC;EACDxG,UAAU,EAAE;IACX0I,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZU,SAAS,EAAE,QAAQ;IACnBxM,KAAK,EAAE,MAAM;IACb6N,eAAe,EAAE,oBAAoB;IACrCC,gBAAgB,EAAE;MAAEb,KAAK,EAAE,CAAC;MAAEtD,MAAM,EAAE;IAAE,CAAC;IACzCoE,gBAAgB,EAAE;EACnB,CAAC;EACDnG,kBAAkB,EAAE;IACnBiE,UAAU,EAAE,WAAW;IACvBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAACsU,UAAU;IACzB1B,aAAa,EAAE;EAChB,CAAC;EACDjG,aAAa,EAAE;IACd6G,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T;EAChB,CAAC;EACDnE,YAAY,EAAE;IACbgE,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BJ,eAAe,EAAE;EAClB,CAAC;EACD3D,cAAc,EAAE;IACf4D,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BJ,eAAe,EAAE;EAClB,CAAC;EACD3G,gBAAgB,EAAE;IACjBgH,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACb,CAAC;EACD7G,aAAa,EAAE;IACdoH,UAAU,EAAE;EACb,CAAC;EACDnH,QAAQ,EAAE;IACTwG,QAAQ,EAAE,aAAa;IACvBA,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BD,YAAY,EAAE;EACf,CAAC;EACD1D,SAAS,EAAE;IACVyD,QAAQ,EAAE,WAAW;IACrBA,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAACsU;EAChB,CAAC;EACD1L,gBAAgB,EAAE;IACjBgL,aAAa,EAAE,KAAK;IACpBM,cAAc,EAAE,eAAe;IAC/BL,UAAU,EAAE,QAAQ;IACpBxC,SAAS,EAAE;EACZ,CAAC;EACDxI,gBAAgB,EAAE;IACjB2K,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZkC,UAAU,EAAE,EAAE;IACdhO,KAAK,EAAE3H,OAAO,CAAC2T;EAChB,CAAC;EACD7K,wBAAwB,EAAE;IACzB8K,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACb,CAAC;EACD9K,eAAe,EAAE;IAChByK,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZkC,UAAU,EAAE,EAAE;IACdhO,KAAK,EAAE3H,OAAO,CAACsU;EAChB,CAAC;EACDsB,qBAAqB,EAAE;IACtBnC,QAAQ,EAAE,EAAE;IACZW,UAAU,EAAE,EAAE;IACduB,UAAU,EAAE;EACb,CAAC;EACD3G,WAAW,EAAE;IACZwE,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T;EAChB,CAAC;EACDlF,UAAU,EAAE;IACX+E,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BJ,eAAe,EAAE;EAClB,CAAC;EACDzE,WAAW,EAAE;IACZuC,SAAS,EAAE;EACZ,CAAC;EACDtC,cAAc,EAAE;IACfsC,SAAS,EAAE,CAAC;IACZqC,YAAY,EAAE;EACf,CAAC;EACDmC,iBAAiB,EAAE;IAClBpC,QAAQ,EAAE,EAAE;IACZD,UAAU,EAAE,aAAa;IACzB7L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BD,YAAY,EAAE;EACf,CAAC;EACDoC,gBAAgB,EAAE;IACjBrC,QAAQ,EAAE,EAAE;IACZD,UAAU,EAAE,YAAY;IACxB7L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BgC,UAAU,EAAE,EAAE;IACdjC,YAAY,EAAE;EACf,CAAC;EACDhI,iBAAiB,EAAE;IAClBkI,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBK,cAAc,EAAE,eAAe;IAC/BX,eAAe,EAAE;EAClB,CAAC;EACD5H,qBAAqB,EAAE;IACtBiJ,KAAK,EAAE,EAAE;IACTtD,MAAM,EAAE,EAAE;IACV4C,cAAc,EAAE,QAAQ;IACxBL,UAAU,EAAE,QAAQ;IACpBI,YAAY,EAAE,CAAC;IACfY,WAAW,EAAE;EACd,CAAC;EACDjJ,gBAAgB,EAAE;IACjBjE,KAAK,EAAE,MAAM;IACb6L,UAAU,EAAE,aAAa;IACzBW,SAAS,EAAE;EACZ,CAAC;EACDrI,YAAY,EAAE;IACb1B,IAAI,EAAE,CAAC;IACPoJ,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE;EACR,CAAC;EACD+F,qBAAqB,EAAE;IACtBzF,eAAe,EAAE,MAAM;IACvBoJ,SAAS,EAAE,EAAE;IACb4C,YAAY,EAAE,CAAC;IACfH,OAAO,EAAE;EACV,CAAC;EACDnG,kBAAkB,EAAE;IACnBiG,aAAa,EAAE,KAAK;IACpBM,cAAc,EAAE,eAAe;IAC/BL,UAAU,EAAE,QAAQ;IACpBH,YAAY,EAAE,EAAE;IAChBd,aAAa,EAAE,EAAE;IACjBmD,iBAAiB,EAAE,CAAC;IACpBC,iBAAiB,EAAEhW,OAAO,CAACyU;EAC5B,CAAC;EACD7G,iBAAiB,EAAE;IAClB4F,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T;EAChB,CAAC;EACD9F,gBAAgB,EAAE;IACjB4F,QAAQ,EAAE;EACX,CAAC;EACD3F,mBAAmB,EAAE;IACpB+C,UAAU,EAAE;EACb,CAAC;EACD7C,eAAe,EAAE;IAChB4F,aAAa,EAAE,KAAK;IACpBF,YAAY,EAAE;EACf,CAAC;EACDzF,iBAAiB,EAAE;IAClBuF,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2U,SAAS;IACxBC,KAAK,EAAE;EACR,CAAC;EACD1G,iBAAiB,EAAE;IAClBsF,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZ9L,KAAK,EAAE3H,OAAO,CAAC2T,YAAY;IAC3BvJ,IAAI,EAAE;EACP;AACD,CAAC,CAAC;AAEF,MAAM6L,eAAe,GAAI9T,KAAK,IAAK;EAClC,OAAO;IACNP,IAAI,EAAEO,KAAK,CAACP,IAAI;IAChBgG,kBAAkB,EAAE5H,OAAO,CAACkW,8BAA8B,CAAC/T,KAAK,CAAC;IACjE8D,IAAI,EAAE9D,KAAK,CAAC/B,MAAM,CAAC+V,UAAU,CAAC,CAAClQ,IAAI;IACnCmQ,WAAW,EAAEjU,KAAK,CAAC/B,MAAM,CAAC+V,UAAU,CAAC,CAACE,WAAW;IACjD/N,QAAQ,EAAEnG,KAAK,CAAC/B,MAAM,CAAC+V,UAAU,CAAC,CAAC7N;EACpC,CAAC;AACF,CAAC;AAED,eAAehJ,OAAO,CAAC2W,eAAe,EAAE;EACvCzW,QAAQ;EACRC,iBAAiB;EACjBC;AACD,CAAC,CAAC,CAACW,aAAa,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","ScrollView","View","StyleSheet","KeyboardAvoidingView","TouchableOpacity","ImageBackground","Platform","DateTimePicker","Icon","_","moment","connect","maintenanceActions","jobAdded","jobStatusesUpdate","jobHideSeenUpdate","StatusSelectorPopup","PrioritySelectorPopup","getJobStatus","getJobPriority","Services","Colours","Helper","Components","Config","values","RequestDetail","constructor","props","_defineProperty","setState","loading","res","getJob","job","site","id","data","updateJobState","getExternalSync","error","_error$response","_error$response2","_error$response3","_error$response4","console","log","toString","message","code","responseStatus","response","status","responseData","forbidden","hasPermission","getAssignees","user","assignees","Users","_this$props$job","loadingExternalSync","externalSync","_error$response5","state","seen","Id","userID","updated","editJob","expectedDate","utc","toISOString","editJobStatus","editJobPriority","priority","navigation","goBack","showStatusPopup","updateJobStatus","showPriorityPopup","updateJobPriority","navigate","screenRequestNotes","onChange","popUpType","isDateTimePickerVisible","date","expectedDateText","format","updateJob","showMore","showMessages","count","permissions","includes","permissionMaintenanceTracking","permissionMaintenanceAssignment","AssigneeId","url","showFullscreenVideo","length","currentVideoUrl","options","map","a","key","name","displayName","selection","title","onSelect","onSelectAssignee","assignee","assignJob","galleryOpen","galleryImages","selectedPDF","scrollView","createRef","commentReply","commentSection","imagePopup","componentDidMount","defaultJob","find","jobs","j","newState","markSeen","openGallery","index","refs","scrollTo","closeGallery","renderLoading","createElement","LoadingIndicator","visible","renderTop","statusOption","canEdit","isStaff","category","showSeen","text","style","getShadowStyle","styles","jobTitleContainer","jobId","jobIdText","color","colourBrandingMain","textEntityName","jobTitleText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","type","hideSeen","jobSeenContainer","iconStyle","jobSeenIcon","jobSeenText","lastActivityUnix","textSectionInner","textSectionLabel","textSectionTextContainer","textSectionText","jobInfoContainer","jobStatusExpectedContainer","jobStatusOuterContainer","jobStatusHeading","onPress","onOpenStatusPicker","jobStatusContainer","jobStatusText","openStaffNotes","jobStatusIcon","Notes","jobPriorityOuterContainer","onOpenPriorityPicker","label","renderPlayableImageUrl","images","containerStyle","thumbUrl","getThumb300","isVideo","flex","source","uri","imagePlayContainer","toggleFullscreenVideo","bind","imageControlIcon","imageUrl","get1400","imageContainer","plusImages","renderPlayableImage","renderImage","image","isNil","isEmpty","sideBySideImages","sideBySideImageContainer","singleImageContainer","renderDocument","documents","document","documentContainer","documentTypeContainer","documentTypeText","ext","documentText","uploading","uploadProgress","renderImagePopup","ImagePopup","onClose","ref","renderDocumentPopup","PDFPopup","pdfCount","renderAssignee","Assignee","content","locationLabel","profileContainer","ProfilePic","profilePic","Diameter","nameContainer","nameText","FormCardSectionOptionLauncher","onOpenAssigneePicker","value","textStyle","detailsText","sectionStyle","detailsSection","renderExternalSync","externalSyncContainer","externalSyncHeader","externalSyncTitle","externalSyncIcon","externalSyncContent","systemType","externalSyncRow","externalSyncLabel","externalSyncValue","externalId","syncedAt","renderCustomFields","customFields","renderAnswer","field","customText","answer","Array","isArray","join","customImage","customDocument","customLabel","rendeDetails","hasCustomFields","onToggleDetails","icon","Fragment","description","jobDescriptionText","locationText","room","isHome","homeText","requesterLabel","userProfilePic","userName","phone","phoneText","renderMessages","CommentSection","adminPermission","entityType","commentKey","entityId","entityName","location","live","refreshFrequency","placeHolder","paddingHorizontal","paddingTop","onCommentsLoaded","onCommentAdded","hideAddComment","disableFlag","InlineButton","onLeaveMessage","touchableStyle","marginTop","height","fullWidth","renderMessagesReply","CommentReply","renderStatusPopup","onCloseStatusPopup","onSelectStatus","renderPriorityPopup","onClosePriorityPopup","onSelectPriority","render","Forbidden","behavior","container","Header","leftIcon","onPressLeft","onPressBack","env","strings","MAINTENANCE_REQUEST_DETAILS","contentContainerStyle","paddingBottom","innerContainer","isVisible","onConfirm","onDateSelected","onCancel","onCloseDatePicker","mode","headerTextIOS","Date","create","paddingVertical","fontFamily","fontSize","marginBottom","TEXT_DARKEST","flexDirection","alignItems","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","jobStatusDateText","TEXT_LIGHT","borderTopWidth","borderTopColor","LINEGREY","letterSpacing","TEXT_DARK","width","marginRight","jobExpectedDateContainer","BOXGREY","paddingLeft","jobExpectedDate","overflow","position","top","left","right","bottom","textShadowColor","textShadowOffset","textShadowRadius","lineHeight","textSectionAngleRight","customStaticTitle","customStaticText","borderBottomWidth","borderBottomColor","mapStateToProps","getMainBrandingColourFromState","reducerKey","statusTypes","jobstatuses"],"sources":["RequestDetail.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tScrollView,\n\tView,\n\tStyleSheet,\n\tKeyboardAvoidingView,\n\tTouchableOpacity,\n\tImageBackground,\n\tPlatform,\n} from \"react-native\";\nimport DateTimePicker from \"react-native-modal-datetime-picker\";\nimport { Icon } from \"@rneui/themed\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from \"../actions\";\nimport StatusSelectorPopup from \"../components/StatusSelectorPopup\";\nimport PrioritySelectorPopup from \"../components/PrioritySelectorPopup\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Colours, Helper, Components, Config } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass RequestDetail extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tjob: {},\n\t\t\tisDateTimePickerVisible: false,\n\t\t\tpopUpType: \"\",\n\t\t\tstatus: \"\",\n\t\t\tpriority: \"\",\n\t\t\texpectedDate: null,\n\t\t\texpectedDateText: \"\",\n\t\t\tseen: false,\n\t\t\tshowMore: true,\n\t\t\tshowStatusPopup: false,\n\t\t\tshowPriorityPopup: false,\n\t\t\tloading: false,\n\t\t\tshowFullscreenVideo: false,\n\t\t\tcurrentVideoUrl: \"\",\n\t\t\tgalleryOpen: false,\n\t\t\tgalleryImages: [],\n\t\t\tshowMessages: false,\n\t\t\tassignees: [],\n\t\t\tselectedPDF: null,\n\t\t\texternalSync: null,\n\t\t\tloadingExternalSync: false,\n\t\t};\n\n\t\tthis.scrollView = React.createRef();\n\t\tthis.commentReply = React.createRef();\n\t\tthis.commentSection = React.createRef();\n\t\tthis.imagePopup = React.createRef();\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.job.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.job.site);\n\t\tthis.getJob();\n\t\tthis.updateJobState(this.props.job);\n\t\tthis.getAssignees();\n\t\tthis.getExternalSync();\n\t}\n\n\tgetJob = async () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.job.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('getJob', JSON.stringify(res.data, null, 2));\n\t\t\t\tthis.props.jobAdded(res.data);\n\t\t\t\tthis.updateJobState(res.data);\n\t\t\t\t// Refresh external sync data when job is refreshed\n\t\t\t\tthis.getExternalSync();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"getJob error\", error.toString());\n\t\t\t\t// Log full error details for debugging\n\t\t\t\tconsole.log(\"getJob error details:\", {\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tresponseStatus: error.response?.status,\n\t\t\t\t\tresponseData: error.response?.data,\n\t\t\t\t});\n\t\t\t\t// check for 403 or 404 error (use optional chaining to prevent crash)\n\t\t\t\tif (error.response?.status === 403 || error.response?.status === 404) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tforbidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tgetAssignees = async () => {\n\t\tif (!this.hasPermission()) return;\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.user.site);\n\t\t\tthis.setState({ assignees: res.data.Users });\n\t\t} catch (error) {\n\t\t\tconsole.log(\"getAssignees error\", error);\n\t\t}\n\t};\n\n\tgetExternalSync = async () => {\n\t\t// Only fetch if user has maintenance tracking permission\n\t\tif (!this.hasPermission()) return;\n\t\tif (!this.props.job?.id) return;\n\n\t\ttry {\n\t\t\tthis.setState({ loadingExternalSync: true });\n\t\t\tconst res = await maintenanceActions.getExternalSync(this.props.job.id);\n\t\t\tthis.setState({ externalSync: res.data, loadingExternalSync: false });\n\t\t} catch (error) {\n\t\t\t// 404 is expected if no sync - don't show error\n\t\t\tif (error.response?.status !== 404) {\n\t\t\t\tconsole.log(\"getExternalSync error\", error);\n\t\t\t}\n\t\t\tthis.setState({ loadingExternalSync: false });\n\t\t}\n\t};\n\n\tupdateJobState(defaultJob) {\n\t\tconst job =\n\t\t\t_.find(this.props.jobs, (j) => j.id === this.props.job.id) || defaultJob;\n\t\tif (!job) {\n\t\t\tthis.getJob();\n\t\t\treturn;\n\t\t}\n\t\tconst newState = { job, status: job.status };\n\t\tif (job.expectedDate) {\n\t\t\tnewState.expectedDate = moment(job.expectedDate);\n\t\t\tnewState.expectedDateText = newState.expectedDate.format(\"DD/MM/YYYY\");\n\t\t}\n\t\tif (job.seen) newState.seen = job.seen;\n\t\tthis.setState(newState, () => {\n\t\t\tthis.markSeen();\n\t\t});\n\t}\n\n\tmarkSeen = () => {\n\t\tconst { user } = this.props;\n\t\tconst { job } = this.state;\n\t\t// Must have maintenance permission and not the requester\n\t\t// console.log('markSeen check', job.userID, user.Id);\n\t\tif (job.seen === true) return;\n\t\tif (!this.hasPermission()) return;\n\t\tif (user.Id === job.userID) return;\n\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst updated = {\n\t\t\t\t\tid: job.id,\n\t\t\t\t\tseen: true,\n\t\t\t\t\tstatus: job.status || \"Unassigned\",\n\t\t\t\t};\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\t// console.log('markSeen updated');\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t\tthis.setState({ loading: false, seen: true });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"markSeen error\", error);\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJob = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\tconst { user } = this.props;\n\t\t\tconst { job } = this.state;\n\t\t\ttry {\n\t\t\t\tconst updated = { id: job.id };\n\t\t\t\tif (this.state.expectedDate) {\n\t\t\t\t\tupdated.expectedDate = moment(this.state.expectedDate)\n\t\t\t\t\t\t.utc()\n\t\t\t\t\t\t.toISOString();\n\t\t\t\t}\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobStatus = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobStatus(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.status,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobStatus error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobPriority = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobPriority(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.priority,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobPriority error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\tonOpenStatusPicker = () => {\n\t\tthis.setState({ showStatusPopup: true });\n\t};\n\n\tonCloseStatusPopup = () => {\n\t\tthis.setState({ showStatusPopup: false });\n\t};\n\n\tonSelectStatus = (status) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ status, showStatusPopup: false }, () => {\n\t\t\tthis.updateJobStatus();\n\t\t});\n\t};\n\n\tonOpenPriorityPicker = () => {\n\t\tthis.setState({ showPriorityPopup: true });\n\t};\n\n\tonClosePriorityPopup = () => {\n\t\tthis.setState({ showPriorityPopup: false });\n\t};\n\n\tonSelectPriority = (priority) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ priority, showPriorityPopup: false }, () => {\n\t\t\tthis.updateJobPriority();\n\t\t});\n\t};\n\n\topenStaffNotes = () => {\n\t\tServices.navigation.navigate(values.screenRequestNotes, {\n\t\t\tjob: this.state.job,\n\t\t\tonChange: this.getJob,\n\t\t});\n\t};\n\n\tonOpenDatePicker = () => {\n\t\tthis.setState({ popUpType: \"date\", isDateTimePickerVisible: true });\n\t};\n\n\tonCloseDatePicker = () => {\n\t\tthis.setState({ isDateTimePickerVisible: false });\n\t};\n\n\tonDateSelected = (date) => {\n\t\tif (this.state.popUpType === \"date\") {\n\t\t\tdate = moment(date);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\texpectedDate: date,\n\t\t\t\t\texpectedDateText: date.format(\"DD/MM/YYYY\"),\n\t\t\t\t\tisDateTimePickerVisible: false,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.updateJob();\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t};\n\n\tonToggleDetails = () => {\n\t\tthis.setState({ showMore: !this.state.showMore });\n\t};\n\n\tonLeaveMessage = () => {\n\t\tthis.setState({ showMessages: true });\n\t};\n\n\tonCommentsLoaded = (count) => {\n\t\tif (count > 0) {\n\t\t\tthis.setState({ showMessages: true });\n\t\t}\n\t};\n\n\tonCommentAdded = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.user.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('onCommentAdded', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onCommentAdded error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\thasPermission = () => {\n\t\tconst { job } = this.state;\n\t\tconst { permissions } = this.props.user;\n\t\tif (_.includes(permissions, values.permissionMaintenanceTracking)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (_.includes(permissions, values.permissionMaintenanceAssignment)) {\n\t\t\treturn job.AssigneeId === this.props.user.Id;\n\t\t}\n\t\treturn false;\n\t};\n\n\ttoggleFullscreenVideo = (url) => {\n\t\tif (typeof url !== \"string\") url = \"\";\n\t\tthis.setState({\n\t\t\tshowFullscreenVideo: url.length > 0,\n\t\t\tcurrentVideoUrl: url,\n\t\t});\n\t};\n\n\topenGallery(galleryImages, index) {\n\t\tthis.setState({\n\t\t\tgalleryOpen: true,\n\t\t\tgalleryImages,\n\t\t});\n\t\tthis.refs.imagePopup.scrollTo(index);\n\t}\n\n\tcloseGallery() {\n\t\tthis.setState({\n\t\t\tgalleryOpen: false,\n\t\t});\n\t}\n\n\tonOpenAssigneePicker = () => {\n\t\tconst options = this.state.assignees.map((a) => {\n\t\t\treturn { key: a.id, name: a.displayName };\n\t\t});\n\t\tServices.navigation.navigate(\"optionSelector\", {\n\t\t\toptions,\n\t\t\tselection: this.state.job.AssigneeId,\n\t\t\ttitle: \"Assign request\",\n\t\t\tonSelect: this.onSelectAssignee,\n\t\t});\n\t};\n\n\tonSelectAssignee = (assignee) => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconsole.log(\"onSelectAssignee\", this.props.job.id, assignee.key);\n\t\t\t\tconst res = await maintenanceActions.assignJob(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tassignee.key,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onSelectAssignee error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trenderLoading() {\n\t\treturn <Components.LoadingIndicator visible={this.state.loading} />;\n\t}\n\n\trenderTop() {\n\t\tconst { status, job } = this.state;\n\t\tconst statusOption = getJobStatus(status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst canEdit = this.hasPermission();\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst showSeen = !status || status === getJobStatus(null, this.props).text;\n\n\t\treturn (\n\t\t\t<View style={{ ...Helper.getShadowStyle() }}>\n\t\t\t\t<View style={styles.jobTitleContainer}>\n\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobTypeContainer,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{job.type}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{!this.props.hideSeen && showSeen && this.state.seen && (\n\t\t\t\t\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"check\"\n\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenText,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tSeen\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\n\t\t\t\t\t{job.lastActivityUnix && (\n\t\t\t\t\t\t<View style={styles.textSectionInner}>\n\t\t\t\t\t\t\t<Text style={styles.textSectionLabel}>Last Updated On</Text>\n\t\t\t\t\t\t\t<View style={styles.textSectionTextContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.textSectionText}>\n\t\t\t\t\t\t\t\t\t{moment(job.lastActivityUnix).format(\"ddd D MMMM, h:mm A\")}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Expected Date</Text>\n <TouchableOpacity onPress={this.onOpenDatePicker}>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{this.state.expectedDateText || 'Select Date'}</Text>\n <Icon\n name=\"angle-right\"\n type=\"font-awesome\"\n iconStyle={[styles.textSectionAngleRight, { color: this.props.colourBrandingMain }]}\n />\n </View>\n </TouchableOpacity>\n </View> */}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.jobInfoContainer}>\n\t\t\t\t\t<View style={styles.jobStatusExpectedContainer}>\n\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STATUS</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenStatusPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: statusOption.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{statusOption?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.hasPermission() && (\n\t\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>\n\t\t\t\t\t\t\t\t<TouchableOpacity onPress={this.openStaffNotes}>\n\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tname=\"pencil-square-o\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.jobStatusIcon}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>\n\t\t\t\t\t\t\t\t\t\t\tNotes ({(job.Notes || []).length})\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t\t{isStaff && (\n\t\t\t\t\t\t<View style={styles.jobPriorityOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>PRIORITY</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenPriorityPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: priority.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderPlayableImageUrl(images, index, containerStyle, showMore) {\n\t\tconst url = images[index || 0];\n\t\tconst thumbUrl = Helper.getThumb300(url);\n\n\t\tif (Helper.isVideo(url)) {\n\t\t\treturn (\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={[{ flex: 1 }, containerStyle]}\n\t\t\t\t\tsource={{ uri: thumbUrl }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, url)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t</View>\n\t\t\t\t</ImageBackground>\n\t\t\t);\n\t\t}\n\n\t\tconst imageUrl = Helper.get1400(url);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={containerStyle}\n\t\t\t\tonPress={this.openGallery.bind(this, images, index || 0)}\n\t\t\t>\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={styles.imageContainer}\n\t\t\t\t\tsource={{ uri: imageUrl }}\n\t\t\t\t>\n\t\t\t\t\t{showMore && (\n\t\t\t\t\t\t<Text style={styles.plusImages}>\n\t\t\t\t\t\t\t+{this.state.job.images.length - 2}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ImageBackground>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderPlayableImage(images, index, containerStyle, showMore) {\n\t\treturn this.renderPlayableImageUrl(images, index, containerStyle, showMore);\n\t}\n\n\trenderImage(images, image = null) {\n\t\tif (!_.isNil(images) && !_.isEmpty(images)) {\n\t\t\tif (images.length >= 2) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.sideBySideImages}>\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t\timages.length > 2,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t\t{this.renderPlayableImage(images, 0)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (!_.isNil(image)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t{this.renderPlayableImageUrl([image], 0)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderDocument(documents) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tif (!_.isNil(documents) && !_.isEmpty(documents)) {\n\t\t\treturn documents.map((document, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tstyle={styles.documentContainer}\n\t\t\t\t\t\tonPress={() => this.setState({ selectedPDF: document })}\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...styles.documentTypeContainer,\n\t\t\t\t\t\t\t\tbackgroundColor: colourBrandingMain,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.documentTypeText}>{document.ext}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={styles.documentText}\n\t\t\t\t\t\t>{`${document.name}${document.uploading ? ` - ${document.uploadProgress}` : \"\"}`}</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderImagePopup() {\n\t\treturn (\n\t\t\t<Components.ImagePopup\n\t\t\t\tvisible={this.state.galleryOpen}\n\t\t\t\timages={this.state.galleryImages}\n\t\t\t\tonClose={this.closeGallery.bind(this)}\n\t\t\t\tref={this.imagePopup}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDocumentPopup() {\n\t\tif (_.isEmpty(this.state.selectedPDF)) return null;\n\t\treturn (\n\t\t\t<Components.PDFPopup\n\t\t\t\tsource={this.state.selectedPDF.url}\n\t\t\t\tonClose={() => this.setState({ selectedPDF: null })}\n\t\t\t\ttitle={this.state.selectedPDF.name}\n\t\t\t\tpdfCount={1}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderAssignee() {\n\t\tconst { job } = this.state;\n\t\tif (!this.hasPermission() && !job.Assignee) return null;\n\n\t\tconst content = (\n\t\t\t<View>\n\t\t\t\t<Text style={styles.locationLabel}>Assigned To</Text>\n\t\t\t\t<View>\n\t\t\t\t\t{job.Assignee && (\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.Assignee.profilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.Assignee.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\n\t\tif (this.hasPermission()) {\n\t\t\treturn (\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onOpenAssigneePicker}\n\t\t\t\t\ttitle=\"Assigned To\"\n\t\t\t\t\tvalue={job.Assignee ? job.Assignee.displayName : \"Unassigned\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Components.FormCardSectionOptionLauncher>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\trenderExternalSync() {\n\t\tconst { externalSync, loadingExternalSync } = this.state;\n\n\t\t// Only show if user has permission and external sync data exists\n\t\tif (!this.hasPermission()) return null;\n\t\tif (!externalSync || loadingExternalSync) return null;\n\n\t\treturn (\n\t\t\t<View style={[styles.externalSyncContainer, Helper.getShadowStyle()]}>\n\t\t\t\t<View style={styles.externalSyncHeader}>\n\t\t\t\t\t<Text style={styles.externalSyncTitle}>External Sync</Text>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"sync\"\n\t\t\t\t\t\ttype=\"material\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.externalSyncIcon,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.externalSyncContent}>\n\t\t\t\t\t{externalSync.systemType && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>System:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.systemType}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.externalId && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>External ID:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.externalId}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.syncedAt && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>Synced:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{moment(externalSync.syncedAt).format(\"D MMM YYYY h:mma\")}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCustomFields() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\n\t\tconst renderAnswer = (field) => {\n\t\t\tswitch (field.type) {\n\t\t\t\tcase \"date\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"YYYY-MM-DD\").format(\"DD MMM YYYY\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"time\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"HH:mm\").format(\"h:mm a\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"yn\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>{field.answer ? \"Yes\" : \"No\"}</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"checkbox\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer && Array.isArray(field.answer)\n\t\t\t\t\t\t\t\t? field.answer.join(\", \")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"image\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customImage}>\n\t\t\t\t\t\t\t{this.renderImage(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tcase \"document\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customDocument}>\n\t\t\t\t\t\t\t{this.renderDocument(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tdefault:\n\t\t\t\t\treturn <Text style={styles.customText}>{field.answer}</Text>;\n\t\t\t}\n\t\t};\n\n\t\treturn customFields.map((field, index) => {\n\t\t\tif ([\"staticTitle\", \"staticText\"].includes(field.type)) return null;\n\t\t\tif (\n\t\t\t\t_.isNil(field.answer) ||\n\t\t\t\tfield.answer === \"\" ||\n\t\t\t\t(Array.isArray(field.answer) && field.answer.length === 0)\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\treturn (\n\t\t\t\t<View key={index}>\n\t\t\t\t\t<Text style={styles.customLabel}>{field.label}</Text>\n\t\t\t\t\t{renderAnswer(field)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\trendeDetails() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\t\tconst hasCustomFields = customFields && customFields.length > 0;\n\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onToggleDetails}\n\t\t\t\t\ttitle=\"Details\"\n\t\t\t\t\ticon={this.state.showMore ? \"angle-up\" : \"angle-down\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t/>\n\t\t\t\t{this.state.showMore && (\n\t\t\t\t\t<View>\n\t\t\t\t\t\t{hasCustomFields ? this.renderCustomFields() : null}\n\t\t\t\t\t\t{!hasCustomFields ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{this.renderImage(job.images, job.image)}\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.description) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobDescriptionText}>\n\t\t\t\t\t\t\t\t\t\t{job.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.locationLabel}>Address</Text>\n\t\t\t\t\t\t<Text style={styles.locationText}>{job.room}</Text>\n\t\t\t\t\t\t{!hasCustomFields && job.isHome ? (\n\t\t\t\t\t\t\t<View style={styles.detailsSection}>\n\t\t\t\t\t\t\t\t<Text style={styles.locationLabel}>Must be home</Text>\n\t\t\t\t\t\t\t\t<Text style={styles.locationText}>{job.homeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.requesterLabel}>Submitted By</Text>\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.userProfilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.userName}</Text>\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.phone) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.phoneText}>{job.phone}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.renderExternalSync()}\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessages() {\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.CommentSection\n\t\t\t\t\tref={this.commentSection}\n\t\t\t\t\tcommentReply={this.commentReply}\n\t\t\t\t\tscrollView={this.scrollView}\n\t\t\t\t\tadminPermission={values.permissionMaintenanceTracking}\n\t\t\t\t\tentityType={values.commentKey}\n\t\t\t\t\tentityId={this.props.job.id}\n\t\t\t\t\tentityName={this.props.job.title}\n\t\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t\tlive\n\t\t\t\t\trefreshFrequency={10000}\n\t\t\t\t\tplaceHolder={\"\"}\n\t\t\t\t\tstyle={{ flex: 1, paddingHorizontal: 0, paddingTop: 16 }}\n\t\t\t\t\tonCommentsLoaded={this.onCommentsLoaded}\n\t\t\t\t\tonCommentAdded={this.onCommentAdded}\n\t\t\t\t\thideAddComment\n\t\t\t\t\tdisableFlag\n\t\t\t\t/>\n\t\t\t\t{!this.state.showMessages && (\n\t\t\t\t\t<Components.InlineButton\n\t\t\t\t\t\tonPress={this.onLeaveMessage}\n\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\ttouchableStyle={{ marginTop: 10 }}\n\t\t\t\t\t\tstyle={{ height: 36 }}\n\t\t\t\t\t\ttextStyle={{ color: \"#fff\" }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t>\n\t\t\t\t\t\tLeave Message\n\t\t\t\t\t</Components.InlineButton>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessagesReply() {\n\t\tif (!this.state.showMessages) return null;\n\n\t\treturn (\n\t\t\t<Components.CommentReply\n\t\t\t\tref={this.commentReply}\n\t\t\t\tcommentSection={this.commentSection}\n\t\t\t\tscrollView={this.scrollView}\n\t\t\t\tentityType={values.commentKey}\n\t\t\t\tentityId={this.props.job.id}\n\t\t\t\tentityName={this.props.job.title}\n\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t// noScroll={true}\n\t\t\t\t// style={{ position: 'absolute', bottom: 0, left: 0, right: 0 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderStatusPopup() {\n\t\tif (!this.state.showStatusPopup) return null;\n\t\treturn (\n\t\t\t<StatusSelectorPopup\n\t\t\t\tonClose={this.onCloseStatusPopup}\n\t\t\t\tonSelect={this.onSelectStatus}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderPriorityPopup() {\n\t\tif (!this.state.showPriorityPopup) return null;\n\t\treturn (\n\t\t\t<PrioritySelectorPopup\n\t\t\t\tonClose={this.onClosePriorityPopup}\n\t\t\t\tonSelect={this.onSelectPriority}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tif (this.state.forbidden) {\n\t\t\treturn <Components.Forbidden />;\n\t\t}\n\t\treturn (\n\t\t\t<KeyboardAvoidingView behavior={\"padding\"} style={styles.container}>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack}\n\t\t\t\t\ttext={Config.env.strings.MAINTENANCE_REQUEST_DETAILS}\n\t\t\t\t/>\n\t\t\t\t{this.renderLoading()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tref={this.scrollView}\n\t\t\t\t\tcontentContainerStyle={{ paddingBottom: 26 }}\n\t\t\t\t\tstyle={{ height: \"100%\" }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.innerContainer}>\n\t\t\t\t\t\t{this.renderTop()}\n\t\t\t\t\t\t{this.renderAssignee()}\n\t\t\t\t\t\t{this.rendeDetails()}\n\t\t\t\t\t\t{this.renderMessages()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\t\t\t\t{this.renderMessagesReply()}\n\t\t\t\t{this.renderStatusPopup()}\n\t\t\t\t{this.renderPriorityPopup()}\n\t\t\t\t{this.renderImagePopup()}\n\t\t\t\t{this.renderDocumentPopup()}\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tisVisible={this.state.isDateTimePickerVisible}\n\t\t\t\t\tonConfirm={this.onDateSelected}\n\t\t\t\t\tonCancel={this.onCloseDatePicker}\n\t\t\t\t\tmode={this.state.popUpType}\n\t\t\t\t\theaderTextIOS={`Pick a ${this.state.popUpType}`}\n\t\t\t\t\tdate={new Date()}\n\t\t\t\t/>\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tinnerContainer: {\n\t\tpaddingTop: 23,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobTitleContainer: {\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobIdText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tmarginBottom: 4,\n\t},\n\tjobTitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 20,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 8,\n\t},\n\tjobTypeSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobTypeContainer: {\n\t\tpadding: 4,\n\t\tminWidth: 80,\n\t\tmaxWidth: 140,\n\t\tborderRadius: 4,\n\t\tjustifyContent: \"center\",\n\t},\n\tjobTypeText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: \"100%\",\n\t},\n\tjobSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginLeft: 10,\n\t},\n\tjobSeenIcon: {\n\t\tfontSize: 12,\n\t},\n\tjobSeenText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tmarginLeft: 4,\n\t},\n\tjobStatusDateText: {\n\t\tmarginTop: 8,\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\tjobInfoContainer: {\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: Colours.LINEGREY,\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobStatusExpectedContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-start\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tjobStatusOuterContainer: {\n\t\t// marginRight: 50,\n\t},\n\tjobStatusHeading: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 6,\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\twidth: 120,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t},\n\tjobStatusIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 14,\n\t\tmarginRight: 8,\n\t},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t\tflex: 1,\n\t\ttextAlign: \"center\",\n\t},\n\tjobPriorityOuterContainer: {\n\t\tmarginTop: 12,\n\t},\n\tjobExpectedDateContainer: {\n\t\tbackgroundColor: Colours.BOXGREY,\n\t\tflexDirection: \"row\",\n\t\twidth: 115,\n\t\theight: 30,\n\t\tborderRadius: 4,\n\t\talignItems: \"center\",\n\t\tpaddingLeft: 8,\n\t},\n\tjobExpectedDate: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5),\n\t},\n\tdetailsText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tdetailsSection: {\n\t\tmarginTop: 8,\n\t\tpaddingHorizontal: 0,\n\t\tpaddingBottom: 12,\n\t},\n\tsideBySideImages: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\tmarginBottom: 16,\n\t},\n\tsideBySideImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"48%\",\n\t\theight: 150,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t},\n\tsingleImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"100%\",\n\t\theight: 150,\n\t\tflex: 1,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t\tmarginBottom: 16,\n\t},\n\timageContainer: {\n\t\theight: 150,\n\t\twidth: \"auto\",\n\t\tjustifyContent: \"center\",\n\t},\n\timagePlayContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageControlIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 30,\n\t\ttextShadowColor: \"rgba(0,0,0,0.3)\",\n\t\ttextShadowOffset: { width: 2, height: 2 },\n\t},\n\tplusImages: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 32,\n\t\ttextAlign: \"center\",\n\t\tcolor: \"#fff\",\n\t\ttextShadowColor: \"rgba(0, 0, 0, 0.5)\",\n\t\ttextShadowOffset: { width: 0, height: 2 },\n\t\ttextShadowRadius: 8,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tpaddingBottom: 16,\n\t},\n\tlocationLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tlocationText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\trequesterLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 10,\n\t},\n\tprofileContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tnameContainer: {\n\t\tmarginLeft: 18,\n\t},\n\tnameText: {\n\t\tfontSize: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 4,\n\t},\n\tphoneText: {\n\t\tfontSize: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionInner: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n\ttextSectionLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\ttextSectionTextContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextSectionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionAngleRight: {\n\t\tfontSize: 24,\n\t\tmarginLeft: 10,\n\t\tlineHeight: 24,\n\t},\n\tcustomLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tcustomText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\tcustomImage: {\n\t\tmarginTop: 8,\n\t},\n\tcustomDocument: {\n\t\tmarginTop: 8,\n\t\tmarginBottom: 16,\n\t},\n\tcustomStaticTitle: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 10,\n\t},\n\tcustomStaticText: {\n\t\tfontSize: 17,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tlineHeight: 24,\n\t\tmarginBottom: 10,\n\t},\n\tdocumentContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"space-between\",\n\t\tpaddingVertical: 4,\n\t},\n\tdocumentTypeContainer: {\n\t\twidth: 50,\n\t\theight: 60,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 5,\n\t\tmarginRight: 8,\n\t},\n\tdocumentTypeText: {\n\t\tcolor: \"#fff\",\n\t\tfontFamily: \"sf-semibold\",\n\t\ttextAlign: \"center\",\n\t},\n\tdocumentText: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: \"#65686D\",\n\t},\n\texternalSyncContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tmarginTop: 16,\n\t\tborderRadius: 8,\n\t\tpadding: 16,\n\t},\n\texternalSyncHeader: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginBottom: 12,\n\t\tpaddingBottom: 12,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\texternalSyncTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\texternalSyncIcon: {\n\t\tfontSize: 20,\n\t},\n\texternalSyncContent: {\n\t\tpaddingTop: 4,\n\t},\n\texternalSyncRow: {\n\t\tflexDirection: \"row\",\n\t\tmarginBottom: 10,\n\t},\n\texternalSyncLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\twidth: 100,\n\t},\n\texternalSyncValue: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tflex: 1,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tjobs: state[values.reducerKey].jobs,\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {\n\tjobAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n})(RequestDetail);\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-app-forms",
3
- "version": "8.0.12-beta.0",
3
+ "version": "8.0.13-beta.0",
4
4
  "description": "Extension package to enable maintenance on Pluss Communities Platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
7
7
  "react-native": "src/index.js",
8
- "files": ["dist/", "src/"],
8
+ "files": [
9
+ "dist/",
10
+ "src/"
11
+ ],
9
12
  "scripts": {
10
13
  "build": "npm i && bob build",
11
14
  "betapatch": "npm version prepatch --preid=beta",
@@ -19,7 +22,7 @@
19
22
  "copy:set": "run(){ target='\\@plusscommunities\\/pluss-maintenance-app'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f src/values.config.$ext.js && cp -f src/values.config.$ext.js src/values.config.js; sed -i'' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
20
23
  "copy:uploadnopatch": "for file in `ls ./src/values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;",
21
24
  "copy:upload": "npm run patch; npm run copy:uploadnopatch;",
22
- "copy:betaupload": "npm run betapatch; for file in `ls ./src/values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;"
25
+ "copy:betaupload": "for file in `ls ./src/values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;"
23
26
  },
24
27
  "author": "Thorbjorn Kappel Davis",
25
28
  "license": "ISC",
@@ -44,6 +47,8 @@
44
47
  "react-native-builder-bob": {
45
48
  "source": "src",
46
49
  "output": "dist",
47
- "targets": ["module"]
50
+ "targets": [
51
+ "module"
52
+ ]
48
53
  }
49
54
  }
@@ -23,7 +23,7 @@ export const maintenanceActions = {
23
23
  data: { site, status, type },
24
24
  });
25
25
  },
26
- getJobs2: (site, status, priority, type, lastKey) => {
26
+ getJobs2: (site, status, priority, type, lastKey, assignee) => {
27
27
  const query = { site };
28
28
  if (status) {
29
29
  query.status = status;
@@ -37,13 +37,21 @@ export const maintenanceActions = {
37
37
  if (lastKey) {
38
38
  query.lastKey = JSON.stringify(lastKey);
39
39
  }
40
+ if (assignee) {
41
+ query.assignee = assignee;
42
+ }
40
43
  return Session.authedFunction({
41
44
  method: "GET",
42
45
  url: Helper.getUrl(values.serviceKey, "get/requests", query),
43
46
  });
44
47
  },
48
+ /**
49
+ * @deprecated Use getJobs2 with pagination instead.
50
+ * This method recursively fetches ALL pages which can be slow for large datasets.
51
+ * For better performance, use getJobs2 directly and implement pagination in the UI.
52
+ */
45
53
  getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {
46
- return new Promise((resolve) => {
54
+ return new Promise((resolve, reject) => {
47
55
  maintenanceActions
48
56
  .getJobs2(site, status, priority, type, lastKey)
49
57
  .then((jobRes) => {
@@ -51,17 +59,19 @@ export const maintenanceActions = {
51
59
  if (!jobRes.data.LastKey) {
52
60
  return resolve(newJobs);
53
61
  }
54
- return resolve(
55
- maintenanceActions.getJobsRecursive(
62
+ maintenanceActions
63
+ .getJobsRecursive(
56
64
  site,
57
65
  status,
58
66
  priority,
59
67
  type,
60
68
  jobRes.data.LastKey,
61
69
  newJobs,
62
- ),
63
- );
64
- });
70
+ )
71
+ .then(resolve)
72
+ .catch(reject);
73
+ })
74
+ .catch(reject);
65
75
  });
66
76
  },
67
77
  sendMaintenanceRequest: (
@@ -25,6 +25,9 @@ class MaintenanceList extends Component {
25
25
  types: [],
26
26
  filteredList: props.jobs,
27
27
  loading: false,
28
+ loadingMore: false,
29
+ hasMore: true,
30
+ lastKey: null,
28
31
  searchText: "",
29
32
  showFilterPopup: false,
30
33
  };
@@ -51,22 +54,25 @@ class MaintenanceList extends Component {
51
54
  this.onLoadingChanged(true, async () => {
52
55
  try {
53
56
  const { jobfilters } = this.props;
54
- const res = await maintenanceActions.getJobsRecursive(
57
+ const res = await maintenanceActions.getJobs2(
55
58
  this.props.site,
56
59
  jobfilters.status,
57
60
  jobfilters.priority,
58
61
  jobfilters.type,
62
+ null, // No lastKey = first page
63
+ jobfilters.assignee,
59
64
  );
60
- // console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);
61
- if (
62
- !_.isEmpty(jobfilters.status) ||
63
- !_.isEmpty(jobfilters.priority) ||
64
- !_.isEmpty(jobfilters.type)
65
- ) {
66
- this.props.jobsAdded(res);
67
- } else {
68
- this.props.jobsLoaded(res);
69
- }
65
+
66
+ const jobs = res.data.Items;
67
+ const lastKey = res.data.LastKey;
68
+
69
+ // Always replace jobs on refresh (filters are server-side)
70
+ this.props.jobsLoaded(jobs);
71
+
72
+ this.setState({
73
+ lastKey,
74
+ hasMore: !!lastKey,
75
+ });
70
76
  } catch (error) {
71
77
  console.log("refresh error", error);
72
78
  } finally {
@@ -75,6 +81,42 @@ class MaintenanceList extends Component {
75
81
  });
76
82
  };
77
83
 
84
+ loadMore = () => {
85
+ const { loading, loadingMore, hasMore, lastKey, searchText } = this.state;
86
+
87
+ // Don't load if already loading, no more pages, or during search
88
+ if (loading || loadingMore || !hasMore || !lastKey || searchText) return;
89
+
90
+ this.setState({ loadingMore: true }, async () => {
91
+ try {
92
+ const { jobfilters } = this.props;
93
+ const res = await maintenanceActions.getJobs2(
94
+ this.props.site,
95
+ jobfilters.status,
96
+ jobfilters.priority,
97
+ jobfilters.type,
98
+ lastKey,
99
+ jobfilters.assignee,
100
+ );
101
+
102
+ const newJobs = res.data.Items;
103
+ const newLastKey = res.data.LastKey;
104
+
105
+ // Append to existing jobs
106
+ this.props.jobsAdded(newJobs);
107
+
108
+ this.setState({
109
+ lastKey: newLastKey,
110
+ hasMore: !!newLastKey,
111
+ });
112
+ } catch (error) {
113
+ console.log("loadMore error", error);
114
+ } finally {
115
+ this.setState({ loadingMore: false });
116
+ }
117
+ });
118
+ };
119
+
78
120
  refreshTypes = async () => {
79
121
  const { data } = await maintenanceActions.getJobTypes(
80
122
  Helper.getSite(this.props.site),
@@ -116,12 +158,13 @@ class MaintenanceList extends Component {
116
158
  }
117
159
 
118
160
  resetDataSource = (source = "") => {
119
- const { jobfilters } = this.props;
120
161
  const { searchText } = this.state;
121
162
  const { jobs } = this.props;
122
163
 
123
164
  let filteredList = jobs;
124
165
  let jobIdMatch = null;
166
+
167
+ // Client-side search filtering (search is not supported server-side)
125
168
  if (searchText) {
126
169
  jobIdMatch = _.find(jobs, (j) => j.jobId === searchText);
127
170
  filteredList = jobs.filter((j) => {
@@ -135,22 +178,10 @@ class MaintenanceList extends Component {
135
178
  });
136
179
  if (!jobIdMatch) this.fetchJob(searchText);
137
180
  }
138
- if (jobfilters.status)
139
- filteredList = filteredList.filter((j) =>
140
- jobfilters.status.includes(j.status),
141
- );
142
- if (jobfilters.priority)
143
- filteredList = filteredList.filter((j) =>
144
- jobfilters.priority.includes(j.priority),
145
- );
146
- if (jobfilters.type)
147
- filteredList = filteredList.filter((j) =>
148
- jobfilters.type.includes(j.type),
149
- );
150
- if (jobfilters.assignee)
151
- filteredList = filteredList.filter((j) =>
152
- jobfilters.assignee.includes(j.AssigneeId),
153
- );
181
+
182
+ // Note: status, priority, type, and assignee filters are applied server-side
183
+ // via getJobs2, so no client-side filtering needed for those
184
+
154
185
  if (jobIdMatch) {
155
186
  const jobIndex = filteredList.indexOf(jobIdMatch);
156
187
  if (jobIndex > -1) {
@@ -158,7 +189,8 @@ class MaintenanceList extends Component {
158
189
  }
159
190
  filteredList.unshift(jobIdMatch);
160
191
  }
161
- if (source !== "search") this.refresh();
192
+ // Only refresh on initial load, not on filter changes (pagination handles data)
193
+ if (source !== "search" && source !== "filter") this.refresh();
162
194
 
163
195
  this.setState({ filteredList });
164
196
  };
@@ -188,6 +220,10 @@ class MaintenanceList extends Component {
188
220
  onSelectFilter = (selected) => {
189
221
  this.props.jobsFilterLoaded(selected);
190
222
  this.onToggleFilter();
223
+ // Reset pagination and clear existing list before refresh
224
+ this.setState({ lastKey: null, hasMore: true, filteredList: [] }, () => {
225
+ this.refresh();
226
+ });
191
227
  };
192
228
 
193
229
  getFilterButtonText = () => {
@@ -286,10 +322,23 @@ class MaintenanceList extends Component {
286
322
  )}
287
323
  ListEmptyComponent={this.renderEmptyList()}
288
324
  ListHeaderComponent={this.renderListHeader()}
325
+ ListFooterComponent={this.renderListFooter()}
326
+ onEndReached={this.loadMore}
327
+ onEndReachedThreshold={0.5}
289
328
  />
290
329
  );
291
330
  }
292
331
 
332
+ renderListFooter = () => {
333
+ if (!this.state.loadingMore) return null;
334
+
335
+ return (
336
+ <View style={styles.loadingMore}>
337
+ <Components.LoadingIndicator visible={true} />
338
+ </View>
339
+ );
340
+ };
341
+
293
342
  renderFilterPopup() {
294
343
  const { jobfilters } = this.props;
295
344
  const { showFilterPopup, types } = this.state;
@@ -363,6 +412,10 @@ const styles = StyleSheet.create({
363
412
  fontFamily: "sf-semibold",
364
413
  fontSize: 16,
365
414
  },
415
+ loadingMore: {
416
+ paddingVertical: 20,
417
+ alignItems: "center",
418
+ },
366
419
  });
367
420
 
368
421
  const mapStateToProps = (state) => {
@@ -80,13 +80,19 @@ class RequestDetail extends Component {
80
80
  this.getExternalSync();
81
81
  } catch (error) {
82
82
  console.log("getJob error", error.toString());
83
- // check for 403 or 404 error
84
- if (error.response.status === 403 || error.response.status === 404) {
83
+ // Log full error details for debugging
84
+ console.log("getJob error details:", {
85
+ message: error.message,
86
+ code: error.code,
87
+ responseStatus: error.response?.status,
88
+ responseData: error.response?.data,
89
+ });
90
+ // check for 403 or 404 error (use optional chaining to prevent crash)
91
+ if (error.response?.status === 403 || error.response?.status === 404) {
85
92
  this.setState({
86
93
  forbidden: true,
87
94
  });
88
95
  }
89
- console.log("getJob error", error);
90
96
  } finally {
91
97
  this.setState({ loading: false });
92
98
  }