From 2a35381fe400fc46e6f10c4e72c3ab9ac435e0e5 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Mon, 1 Jun 2026 14:22:40 -0500 Subject: [PATCH] refactor(mobile): intial addin of dockdoor scanning on mobile --- lstMobile/app.json | 8 +- lstMobile/package-lock.json | 16 +- lstMobile/package.json | 2 +- lstMobile/src/app/(tabs)/_layout.tsx | 2 +- lstMobile/src/app/(tabs)/dockScan.tsx | 146 +++++++++++++-- lstMobile/src/app/(tabs)/ppoo.tsx | 4 +- lstMobile/src/app/_layout.tsx | 25 ++- lstMobile/src/app/dock/[id].tsx | 169 ++++++++++++++++++ lstMobile/src/app/dock/scans/[scanner].tsx | 71 ++++++++ lstMobile/src/app/login.tsx | 22 ++- lstMobile/src/components/ui/configButton.tsx | 20 +++ lstMobile/src/hooks/useAppStartup.tsx | 6 + .../src/hooks/useDeviceOrientationLock.ts | 32 ++++ lstMobile/src/lib/apiHelper.ts | 63 +++++++ .../lib/queryStuff/getActiveLoadingOrders.ts | 21 +++ lstMobile/src/lib/queryStuff/getDocks.ts | 21 +++ lstMobile/src/lib/queryStuff/queryClient.ts | 17 ++ 17 files changed, 591 insertions(+), 54 deletions(-) create mode 100644 lstMobile/src/app/dock/[id].tsx create mode 100644 lstMobile/src/app/dock/scans/[scanner].tsx create mode 100644 lstMobile/src/components/ui/configButton.tsx create mode 100644 lstMobile/src/hooks/useDeviceOrientationLock.ts create mode 100644 lstMobile/src/lib/apiHelper.ts create mode 100644 lstMobile/src/lib/queryStuff/getActiveLoadingOrders.ts create mode 100644 lstMobile/src/lib/queryStuff/getDocks.ts create mode 100644 lstMobile/src/lib/queryStuff/queryClient.ts diff --git a/lstMobile/app.json b/lstMobile/app.json index c25a4a1..7159d27 100644 --- a/lstMobile/app.json +++ b/lstMobile/app.json @@ -15,14 +15,14 @@ "foregroundImage": "./assets/adaptive-icon-white.png", "backgroundColor": "#ffffff" }, - "versionCode": 39, + "versionCode": 42, "minSupportedVersionCode": 33, "predictiveBackGestureEnabled": false, "package": "net.alpla.lst.mobile", "permissions": [ - "android.permission.WRITE_EXTERNAL_STORAGE", - "android.permission.READ_EXTERNAL_STORAGE" - ] + "android.permission.WRITE_EXTERNAL_STORAGE", + "android.permission.READ_EXTERNAL_STORAGE" + ] }, "web": { "output": "static", diff --git a/lstMobile/package-lock.json b/lstMobile/package-lock.json index 31e65e4..0e4e3fc 100644 --- a/lstMobile/package-lock.json +++ b/lstMobile/package-lock.json @@ -16,7 +16,7 @@ "@rn-primitives/portal": "^1.4.0", "@rn-primitives/separator": "^1.4.0", "@rn-primitives/slot": "^1.4.0", - "@tanstack/react-query": "^5.99.0", + "@tanstack/react-query": "^5.100.14", "axios": "^1.15.0", "babel-preset-expo": "^55.0.18", "class-variance-authority": "^0.7.1", @@ -5318,9 +5318,9 @@ "license": "MIT" }, "node_modules/@tanstack/query-core": { - "version": "5.100.9", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.100.9.tgz", - "integrity": "sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==", + "version": "5.100.14", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.100.14.tgz", + "integrity": "sha512-5X41dGpxgeaHISCRW2oYwcSycZeULZzAunaudXT9ov1KOTj9xwt0CH6hbwqP1/z74ZWF7rYFnDpyYH07XFcZew==", "license": "MIT", "funding": { "type": "github", @@ -5328,12 +5328,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.100.9", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.100.9.tgz", - "integrity": "sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==", + "version": "5.100.14", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.100.14.tgz", + "integrity": "sha512-oOr6aRdSFEwWhzxEkD/9ZcItM3+LjBSkeVmadWKwUssAHTsqd/7bOjWrX4AbvEkoEhgAxzN0Xk6H/aYzXiYBAw==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.100.9" + "@tanstack/query-core": "5.100.14" }, "funding": { "type": "github", diff --git a/lstMobile/package.json b/lstMobile/package.json index 3548a62..0b822dd 100644 --- a/lstMobile/package.json +++ b/lstMobile/package.json @@ -26,7 +26,7 @@ "@rn-primitives/portal": "^1.4.0", "@rn-primitives/separator": "^1.4.0", "@rn-primitives/slot": "^1.4.0", - "@tanstack/react-query": "^5.99.0", + "@tanstack/react-query": "^5.100.14", "axios": "^1.15.0", "babel-preset-expo": "^55.0.18", "class-variance-authority": "^0.7.1", diff --git a/lstMobile/src/app/(tabs)/_layout.tsx b/lstMobile/src/app/(tabs)/_layout.tsx index 355fe44..b5296a1 100644 --- a/lstMobile/src/app/(tabs)/_layout.tsx +++ b/lstMobile/src/app/(tabs)/_layout.tsx @@ -51,7 +51,7 @@ export default function TabsLayout() { onPress: async () => { // clear auth/session logoutScanner(); - router.replace("/(tabs)/scanner"); + router.replace("/"); // clear zustand/session stuff //useAuthStore.getState().reset(); diff --git a/lstMobile/src/app/(tabs)/dockScan.tsx b/lstMobile/src/app/(tabs)/dockScan.tsx index 690ae5f..3e16e7d 100644 --- a/lstMobile/src/app/(tabs)/dockScan.tsx +++ b/lstMobile/src/app/(tabs)/dockScan.tsx @@ -1,26 +1,134 @@ -import React from "react"; -import { Text, View } from "react-native"; -import { Button } from "../../components/ui/button"; +import { useSuspenseQuery } from "@tanstack/react-query"; +import * as Device from "expo-device"; +import { Link } from "expo-router"; +import { + Button, + ScrollView, + Text, + useWindowDimensions, + View, +} from "react-native"; +import { SafeAreaView } from "react-native-safe-area-context"; +import Toast from "react-native-toast-message"; -export default function LaneCheck() { - const getInfo = async () => { - const info = "ho"; +import { Card, CardContent } from "../../components/ui/card"; +import { getActiveLoadingOrders } from "../../lib/queryStuff/getActiveLoadingOrders"; +import { getDocks } from "../../lib/queryStuff/getDocks"; - console.log(info); +export default function DockScan() { + const { data } = useSuspenseQuery(getDocks()); + const { + data: loadingOrders, + refetch, + isLoading, + } = useSuspenseQuery(getActiveLoadingOrders()); + const { width } = useWindowDimensions(); + const isTablet = + Device.modelName?.toLowerCase().includes("et40") || + Device.modelName?.toLowerCase().includes("et45"); + + const columns = isTablet ? 3 : 1; + + const gap = 8; + const cardWidth = + columns === 1 ? width - 16 : (width - gap * (columns + 1)) / columns; + + const updateLoadingOrders = () => { + refetch(); + Toast.show({ + type: "success", + text1: `Refreshing Loading Orders`, + }); }; + + if (isLoading) + return ( + + Loading... + + ); return ( - - Dock Scanning - + + + Dock Scanning +