diff --git a/app.json b/app.json
index b8e716c..bcfd8bb 100644
--- a/app.json
+++ b/app.json
@@ -6,7 +6,7 @@
"scheme": "imex-mobile-scheme",
"userInterfaceStyle": "automatic",
"extra": {
- "expover": "21",
+ "expover": "22",
"eas": {
"projectId": "ffe01f3a-d507-4698-82cd-da1f1cad450b"
}
diff --git a/app/jobs/_layout.tsx b/app/jobs/_layout.tsx
index 5ce4de0..acf0324 100644
--- a/app/jobs/_layout.tsx
+++ b/app/jobs/_layout.tsx
@@ -50,6 +50,7 @@ function JobsStack({ openImagePicker }) {
alignSelf: "center",
justifyContent: "center",
}}
+ mode="outlined"
onPress={handleUpload}
>
{t("general.labels.upload")}
diff --git a/components/data-label/data-label.jsx b/components/data-label/data-label.jsx
index cef84e3..35d5d0d 100644
--- a/components/data-label/data-label.jsx
+++ b/components/data-label/data-label.jsx
@@ -7,6 +7,7 @@ export default function DataLabelComponent({
label,
content,
dateTime,
+ noTextWrap,
...restProps
}) {
let theContent = content;
@@ -19,7 +20,8 @@ export default function DataLabelComponent({
return (
{label}
- {theContent}
+
+ {noTextWrap ? content : {theContent}}
);
}
diff --git a/components/job-documents/job-documents.jsx b/components/job-documents/job-documents.jsx
index 9157df6..818b2cf 100644
--- a/components/job-documents/job-documents.jsx
+++ b/components/job-documents/job-documents.jsx
@@ -5,6 +5,7 @@ import React, { useCallback, useEffect, useState } from "react";
import { FlatList, RefreshControl, TouchableOpacity, View } from "react-native";
import ImageView from "react-native-image-viewing";
import { ActivityIndicator, Text } from "react-native-paper";
+import { SafeAreaView } from "react-native-safe-area-context";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import env from "../../env";
@@ -149,13 +150,15 @@ export function JobDocumentsComponent({ bodyshop }) {
)}
/>
- setPreviewVisible(false)}
- visible={previewVisible}
- images={fullphotos}
- imageIndex={imgIndex}
- swipeToCloseEnabled={true}
- />
+
+ setPreviewVisible(false)}
+ visible={previewVisible}
+ images={fullphotos}
+ imageIndex={imgIndex}
+ swipeToCloseEnabled={true}
+ />
+
);
}
diff --git a/components/job-status-selector/job-status-selector.jsx b/components/job-status-selector/job-status-selector.jsx
index 0fa9897..b0c805f 100644
--- a/components/job-status-selector/job-status-selector.jsx
+++ b/components/job-status-selector/job-status-selector.jsx
@@ -107,7 +107,7 @@ export const JobStatusSelector = ({
const styles = StyleSheet.create({
root: {
alignSelf: "flex-start",
- paddingTop: 4,
+ paddingTop: 8,
},
trigger: {
minWidth: 140,
diff --git a/components/job-tombstone/job-tombstone.jsx b/components/job-tombstone/job-tombstone.jsx
index ba8429b..c3f1c71 100644
--- a/components/job-tombstone/job-tombstone.jsx
+++ b/components/job-tombstone/job-tombstone.jsx
@@ -1,3 +1,4 @@
+import env from "@/env";
import { GET_JOB_TOMBSTONE } from "@/graphql/jobs.queries";
import { selectBodyshop } from "@/redux/user/user.selectors";
import { useQuery } from "@apollo/client";
@@ -5,15 +6,23 @@ import { useLocalSearchParams, useRouter } from "expo-router";
import React, { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import {
+ Platform,
RefreshControl,
ScrollView,
StyleSheet,
TouchableOpacity,
- View
+ View,
} from "react-native";
-import { ActivityIndicator, Card, Chip, Text } from "react-native-paper";
+import {
+ ActivityIndicator,
+ Button,
+ Card,
+ Chip,
+ Text,
+} from "react-native-paper";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
+import { firstNames, getRandomIndex, lastNames } from "../../util/demodata";
import DataLabelComponent from "../data-label/data-label";
import ErrorDisplay from "../error/error-display";
import { JobStatusSelector } from "../job-status-selector/job-status-selector";
@@ -122,8 +131,12 @@ function JobTombstone({ bodyshop }) {
{job.inproduction && (
+
{t("objects.jobs.labels.inproduction")}
}
@@ -143,7 +156,12 @@ function JobTombstone({ bodyshop }) {
label={t("objects.jobs.fields.related_ros")}
content={
{job.vehicle?.jobs
?.filter((ro) => ro.id !== job.id)
@@ -159,7 +177,9 @@ function JobTombstone({ bodyshop }) {
}}
key={ro.id}
>
- {ro.ro_number || "N/A"}
+
))}
@@ -178,21 +198,33 @@ function JobTombstone({ bodyshop }) {
);
diff --git a/components/jobs-list/job-list-item.jsx b/components/jobs-list/job-list-item.jsx
index ed4349f..3e89950 100644
--- a/components/jobs-list/job-list-item.jsx
+++ b/components/jobs-list/job-list-item.jsx
@@ -1,9 +1,11 @@
+import env from "@/env";
+import { firstNames, getRandomIndex, lastNames } from "@/util/demodata";
import * as Haptics from "expo-haptics";
import { useRouter } from "expo-router";
import React, { memo, useCallback } from "react";
import { useTranslation } from "react-i18next";
import { Pressable, StyleSheet, View } from "react-native";
-import { Chip, IconButton, Text, useTheme } from "react-native-paper";
+import { IconButton, Text, useTheme } from "react-native-paper";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { logImEXEvent } from "../../firebase/firebase.analytics";
@@ -35,7 +37,11 @@ function JobListItemComponent({ openImagePicker, item }) {
openImagePicker(item.id);
}, [openImagePicker, item.id]);
- const ownerName = `${item.ownr_fn || ""} ${item.ownr_ln || ""}`.trim();
+ const ownerName = env.DEMO_MODE
+ ? `${firstNames[getRandomIndex()] || ""} ${
+ lastNames[getRandomIndex()] || ""
+ }`
+ : `${item.ownr_fn || ""} ${item.ownr_ln || ""}`.trim();
const company = item.ownr_co_nm || "";
const vehicle = `${item.v_model_yr || ""} ${item.v_make_desc || ""} ${
item.v_model_desc || ""
@@ -92,8 +98,9 @@ function JobListItemComponent({ openImagePicker, item }) {
>
{vehicle}
-
- {item.status}
+
+
+ {item.status}
{
+ return Math.floor(Math.random() * (countOfnames - 0 + 1)) + 0;
+}
+
+export { countOfnames, firstNames, getRandomIndex, lastNames };
+