Package updates & resolve job detail cloud upload bug. Added note type.

This commit is contained in:
Patrick Fic
2025-11-21 14:02:11 -08:00
parent f8869b4f0e
commit e069fd1170
10 changed files with 491 additions and 297 deletions

View File

@@ -92,6 +92,7 @@
"expo-font", "expo-font",
"expo-router", "expo-router",
"expo-notifications", "expo-notifications",
"expo-web-browser",
[ [
"@sentry/react-native/expo", "@sentry/react-native/expo",
{ {

View File

@@ -3,7 +3,7 @@ import * as Haptics from "expo-haptics";
import { Stack, useGlobalSearchParams } from "expo-router"; import { Stack, useGlobalSearchParams } from "expo-router";
import { useCallback } from "react"; import { useCallback } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { IconButton } from "react-native-paper"; import { Button } from "react-native-paper";
import { connect } from "react-redux"; import { connect } from "react-redux";
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
@@ -40,12 +40,20 @@ function JobsStack({ openImagePicker }) {
options={({ route }) => ({ options={({ route }) => ({
//headerShown: false, //headerShown: false,
title: (route.params as any)?.title || "Job Details", title: (route.params as any)?.title || "Job Details",
headerRight: () => ( headerRight: (props) => (
<IconButton <Button
icon="cloud-upload-outline" icon="cloud-upload-outline"
size={20} style={{
display: "flex",
alignContent: "center",
alignItems: "center",
alignSelf: "center",
justifyContent: "center",
}}
onPress={handleUpload} onPress={handleUpload}
/> >
{t("general.labels.upload")}
</Button>
), ),
})} })}
/> />

View File

@@ -1,4 +1,4 @@
<babeledit_project version="1.2" be_version="2.7.1"> <babeledit_project be_version="2.7.1" version="1.2">
<!-- <!--
BabelEdit project file BabelEdit project file
@@ -2009,6 +2009,168 @@
</folder_node> </folder_node>
</children> </children>
</folder_node> </folder_node>
<folder_node>
<name>notes</name>
<children>
<folder_node>
<name>labels</name>
<children>
<folder_node>
<name>type</name>
<children>
<concept_node>
<name>customer</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>general</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>office</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>paint</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>parts</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>shop</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>supplement</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
</children>
</folder_node>
</children>
</folder_node>
</children>
</folder_node>
<folder_node> <folder_node>
<name>objects</name> <name>objects</name>
<children> <children>

View File

@@ -118,6 +118,7 @@ export default function JobNotes() {
} }
const NoteListItem = memo(function NoteListItem({ item }) { const NoteListItem = memo(function NoteListItem({ item }) {
const { t } = useTranslation();
return ( return (
<Card mode="outlined" style={{ margin: 8 }}> <Card mode="outlined" style={{ margin: 8 }}>
<Card.Content> <Card.Content>
@@ -140,6 +141,9 @@ const NoteListItem = memo(function NoteListItem({ item }) {
{item.critical && ( {item.critical && (
<AntDesign name="warning" size={24} color="tomato" /> <AntDesign name="warning" size={24} color="tomato" />
)} )}
<Text style={{ fontSize: 12 }}>
{t(`notes.labels.type.${item.type}`)}
</Text>
<Text style={{ fontSize: 12 }}>{item.created_by}</Text> <Text style={{ fontSize: 12 }}>{item.created_by}</Text>
<Text style={{ fontSize: 12 }}> <Text style={{ fontSize: 12 }}>
{DateTime.fromISO(item.created_at).toLocaleString( {DateTime.fromISO(item.created_at).toLocaleString(

View File

@@ -1070,6 +1070,7 @@ export const GET_JOB_NOTES = gql`
critical critical
private private
pinned pinned
type
created_at created_at
updated_at updated_at
created_by created_by

545
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -32,30 +32,30 @@
"@react-navigation/elements": "^2.6.5", "@react-navigation/elements": "^2.6.5",
"@react-navigation/native": "^7.1.8", "@react-navigation/native": "^7.1.8",
"@reduxjs/toolkit": "^2.9.1", "@reduxjs/toolkit": "^2.9.1",
"@sentry/react-native": "^7.4.0", "@sentry/react-native": "~7.2.0",
"axios": "^1.12.2", "axios": "^1.12.2",
"dinero.js": "^1.9.1", "dinero.js": "^1.9.1",
"expo": "54.0.21", "expo": "~54.0.25",
"expo-application": "~7.0.7", "expo-application": "~7.0.7",
"expo-constants": "~18.0.10", "expo-constants": "~18.0.10",
"expo-dev-client": "~6.0.16", "expo-dev-client": "~6.0.18",
"expo-device": "^8.0.9", "expo-device": "^8.0.9",
"expo-file-system": "~19.0.17", "expo-file-system": "~19.0.17",
"expo-font": "~14.0.9", "expo-font": "~14.0.9",
"expo-haptics": "~15.0.7", "expo-haptics": "~15.0.7",
"expo-image": "~3.0.10", "expo-image": "~3.0.10",
"expo-image-picker": "~17.0.8", "expo-image-picker": "~17.0.8",
"expo-linking": "~8.0.8", "expo-linking": "~8.0.9",
"expo-localization": "~17.0.7", "expo-localization": "~17.0.7",
"expo-media-library": "~18.2.0", "expo-media-library": "~18.2.0",
"expo-notifications": "~0.32.12", "expo-notifications": "~0.32.13",
"expo-router": "~6.0.14", "expo-router": "~6.0.15",
"expo-splash-screen": "~31.0.10", "expo-splash-screen": "~31.0.11",
"expo-status-bar": "~3.0.8", "expo-status-bar": "~3.0.8",
"expo-symbols": "~1.0.7", "expo-symbols": "~1.0.7",
"expo-system-ui": "~6.0.8", "expo-system-ui": "~6.0.8",
"expo-updates": "~29.0.12", "expo-updates": "~29.0.12",
"expo-web-browser": "~15.0.8", "expo-web-browser": "~15.0.9",
"firebase": "^12.4.0", "firebase": "^12.4.0",
"formik": "^2.4.6", "formik": "^2.4.6",
"graphql": "^16.11.0", "graphql": "^16.11.0",

View File

@@ -144,6 +144,19 @@
"moretab": "More" "moretab": "More"
} }
}, },
"notes": {
"labels": {
"type": {
"customer": "Customer",
"general": "General",
"office": "Office",
"paint": "Paint",
"parts": "Parts",
"shop": "Shop",
"supplement": "Supplement"
}
}
},
"objects": { "objects": {
"jobs": { "jobs": {
"fields": { "fields": {

View File

@@ -144,6 +144,19 @@
"moretab": "" "moretab": ""
} }
}, },
"notes": {
"labels": {
"type": {
"customer": "",
"general": "",
"office": "",
"paint": "",
"parts": "",
"shop": "",
"supplement": ""
}
}
},
"objects": { "objects": {
"jobs": { "jobs": {
"fields": { "fields": {

View File

@@ -144,6 +144,19 @@
"moretab": "" "moretab": ""
} }
}, },
"notes": {
"labels": {
"type": {
"customer": "",
"general": "",
"office": "",
"paint": "",
"parts": "",
"shop": "",
"supplement": ""
}
}
},
"objects": { "objects": {
"jobs": { "jobs": {
"fields": { "fields": {