From 82f8369640b2b0ff63dd640dc0aa0609a42c7dda Mon Sep 17 00:00:00 2001 From: blake Date: Sun, 19 Apr 2026 17:20:57 -0500 Subject: [PATCH] refactor(scanner): more basic work to get the scanner just running --- .vscode/settings.json | 2 +- lstMobile/package-lock.json | 32 +++++- lstMobile/package.json | 3 +- lstMobile/src/app/(tabs)/_layout.tsx | 38 ------- lstMobile/src/app/(tabs)/config.tsx | 92 ---------------- lstMobile/src/app/(tabs)/index.tsx | 134 ----------------------- lstMobile/src/app/_layout.tsx | 18 ++-- lstMobile/src/app/blocked.tsx | 9 ++ lstMobile/src/app/index.tsx | 72 +++++++++++++ lstMobile/src/app/scanner.tsx | 32 ++++++ lstMobile/src/app/setup.tsx | 156 +++++++++++++++++++++++++++ lstMobile/src/hooks/useAppStore.ts | 151 ++++++++++++++++++++++++++ lstMobile/src/lib/delay.ts | 1 + lstMobile/src/lib/devMode.ts | 7 ++ lstMobile/src/lib/storage.ts | 36 ------- lstMobile/temps/(tabs)/_layout.tsx | 33 ++++++ lstMobile/temps/(tabs)/config.tsx | 94 ++++++++++++++++ lstMobile/temps/(tabs)/home.tsx | 43 ++++++++ package-lock.json | 12 --- 19 files changed, 642 insertions(+), 323 deletions(-) delete mode 100644 lstMobile/src/app/(tabs)/_layout.tsx delete mode 100644 lstMobile/src/app/(tabs)/config.tsx delete mode 100644 lstMobile/src/app/(tabs)/index.tsx create mode 100644 lstMobile/src/app/blocked.tsx create mode 100644 lstMobile/src/app/index.tsx create mode 100644 lstMobile/src/app/scanner.tsx create mode 100644 lstMobile/src/app/setup.tsx create mode 100644 lstMobile/src/hooks/useAppStore.ts create mode 100644 lstMobile/src/lib/delay.ts create mode 100644 lstMobile/src/lib/devMode.ts delete mode 100644 lstMobile/src/lib/storage.ts create mode 100644 lstMobile/temps/(tabs)/_layout.tsx create mode 100644 lstMobile/temps/(tabs)/config.tsx create mode 100644 lstMobile/temps/(tabs)/home.tsx diff --git a/.vscode/settings.json b/.vscode/settings.json index b0a34ee..be718c3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "editor.defaultFormatter": "biomejs.biome", - "workbench.colorTheme": "Default Dark+", + "workbench.colorTheme": "Dark+", "terminal.integrated.env.windows": {}, "editor.formatOnSave": true, "typescript.preferences.importModuleSpecifier": "relative", diff --git a/lstMobile/package-lock.json b/lstMobile/package-lock.json index 4d4d559..7310529 100644 --- a/lstMobile/package-lock.json +++ b/lstMobile/package-lock.json @@ -39,7 +39,8 @@ "react-native-web": "~0.21.0", "react-native-worklets": "0.7.2", "socket.io-client": "^4.8.3", - "zod": "^4.3.6" + "zod": "^4.3.6", + "zustand": "^5.0.12" }, "devDependencies": { "@types/react": "~19.2.2", @@ -13898,6 +13899,35 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/zustand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz", + "integrity": "sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } } } } diff --git a/lstMobile/package.json b/lstMobile/package.json index 6c6d7ba..8428b02 100644 --- a/lstMobile/package.json +++ b/lstMobile/package.json @@ -44,7 +44,8 @@ "react-native-web": "~0.21.0", "react-native-worklets": "0.7.2", "socket.io-client": "^4.8.3", - "zod": "^4.3.6" + "zod": "^4.3.6", + "zustand": "^5.0.12" }, "devDependencies": { "@types/react": "~19.2.2", diff --git a/lstMobile/src/app/(tabs)/_layout.tsx b/lstMobile/src/app/(tabs)/_layout.tsx deleted file mode 100644 index 07c645a..0000000 --- a/lstMobile/src/app/(tabs)/_layout.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Tabs } from 'expo-router' -import React from 'react' -import { colors } from '../../stlyes/global' -import { Home,Settings } from 'lucide-react-native' - -export default function TabLayout() { - return ( - - ( - - ) - }} - /> - ( - - ) - }} - /> - - ) -} diff --git a/lstMobile/src/app/(tabs)/config.tsx b/lstMobile/src/app/(tabs)/config.tsx deleted file mode 100644 index 036e93b..0000000 --- a/lstMobile/src/app/(tabs)/config.tsx +++ /dev/null @@ -1,92 +0,0 @@ -// app/config.tsx -import { useEffect, useState } from "react"; -import { View, Text, TextInput, Button, Alert } from "react-native"; -import { useRouter } from "expo-router"; -import { AppConfig, getConfig, saveConfig } from "../../lib/storage"; -import Constants from "expo-constants"; - -export default function Config() { - const [serverUrl, setServerUrl] = useState(""); - const [scannerId, setScannerId] = useState(""); - const [config, setConfig] = useState(null) - const [loading, setLoading] = useState(true); - const router = useRouter() - -const version = Constants.expoConfig?.version; -const build = Constants.expoConfig?.android?.versionCode ?? 1; - - useEffect(() => { - const loadConfig = async () => { - const existing = await getConfig(); - - if (existing) { - setServerUrl(existing.serverUrl); - setScannerId(existing.scannerId); - setConfig(existing) - } - - setLoading(false); - }; - - loadConfig(); - }, []); - - const handleSave = async () => { - if (!serverUrl.trim() || !scannerId.trim()) { - Alert.alert("Missing info", "Please fill in both fields."); - return; - } - - await saveConfig({ - serverUrl: serverUrl.trim(), - scannerId: scannerId.trim(), - }); - - Alert.alert("Saved", "Config saved to device."); - //router.replace("/"); - }; - - if (loading) { - return Loading config...; - } - - return ( - - - LST Scanner Config - - - - Server IP - - - Server port - - - -