diff --git a/.env.imex b/.env.imex index a772856..44d4b5c 100644 --- a/.env.imex +++ b/.env.imex @@ -1,4 +1,5 @@ VITE_FIREBASE_CONFIG={"apiKey":"AIzaSyDSezy-jGJreo7ulgpLdlpOwAOrgcaEkhU","authDomain":"imex-prod.firebaseapp.com","databaseURL":"https://imex-prod.firebaseio.com","projectId":"imex-prod","storageBucket":"imex-prod.appspot.com","messagingSenderId":"253497221485","appId":"1:253497221485:web:3c81c483b94db84b227a64","measurementId":"G-NTWBKG2L0M"} VITE_GRAPHQL_ENDPOINT=https://db.imex.online/v1/graphql VITE_FIREBASE_CONFIG_TEST={ "apiKey":"AIzaSyBw7_GTy7GtQyfkIRPVrWHEGKfcqeyXw0c", "authDomain":"imex-test.firebaseapp.com", "projectId":"imex-test", "storageBucket":"imex-test.appspot.com", "messagingSenderId":"991923618608", "appId":"1:991923618608:web:633437569cdad78299bef5", "measurementId":"G-TW0XLZEH18"} -VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.bodyshop.app/v1/graphql \ No newline at end of file +VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.bodyshop.app/v1/graphql +VITE_COMPANY=IMEX \ No newline at end of file diff --git a/.env.local b/.env.local index 704063a..76ebbaf 100644 --- a/.env.local +++ b/.env.local @@ -1,4 +1,5 @@ VITE_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"} VITE_GRAPHQL_ENDPOINT=https://db.dev.imex.online/v1/graphql VITE_FIREBASE_CONFIG_TEST={ "apiKey":"AIzaSyBw7_GTy7GtQyfkIRPVrWHEGKfcqeyXw0c", "authDomain":"imex-test.firebaseapp.com", "projectId":"imex-test", "storageBucket":"imex-test.appspot.com", "messagingSenderId":"991923618608", "appId":"1:991923618608:web:633437569cdad78299bef5", "measurementId":"G-TW0XLZEH18"} -VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.bodyshop.app/v1/graphql \ No newline at end of file +VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.bodyshop.app/v1/graphql +VITE_COMPANY=IMEX \ No newline at end of file diff --git a/.env.rome b/.env.rome index b0871ce..defbe85 100644 --- a/.env.rome +++ b/.env.rome @@ -1,4 +1,5 @@ VITE_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"} VITE_GRAPHQL_ENDPOINT=https://db.romeonline.io/v1/graphql VITE_FIREBASE_CONFIG_TEST={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"} -VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.romeonline.io/v1/graphql \ No newline at end of file +VITE_GRAPHQL_ENDPOINT_TEST=https://db.test.romeonline.io/v1/graphql +VITE_COMPANY=ROME \ No newline at end of file diff --git a/resources/diamond.png b/build/icon.png similarity index 100% rename from resources/diamond.png rename to build/icon.png diff --git a/package.json b/package.json index 116dd76..849426c 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "typecheck": "npm run typecheck:node && npm run typecheck:web", "start": "electron-vite preview", "dev": "electron-vite dev", - "build:mac:imex": "electron-vite build --mode imex && electron-builder --config electron-builder.imex.yml", - "build:mac:rome": "electron-vite build --mode rome && electron-builder --config electron-builder.rome.yml", + "build:imex": "electron-vite build --mode imex && electron-builder --config electron-builder.imex.yml", + "build:rome": "electron-vite build --mode rome && electron-builder --config electron-builder.rome.yml", "postinstall": "electron-builder install-app-deps", "build:unpack": "npm run build && electron-builder --dir", "build:win": "npm run build && electron-builder --win", diff --git a/resources/icon.png b/resources/icon.png index cf9e8b2..dd32a22 100644 Binary files a/resources/icon.png and b/resources/icon.png differ diff --git a/src/main/ems-parts-order/ems-parts-order-generate-pfl.ts b/src/main/ems-parts-order/ems-parts-order-generate-pfl.ts index 72775c5..66dbced 100644 --- a/src/main/ems-parts-order/ems-parts-order-generate-pfl.ts +++ b/src/main/ems-parts-order/ems-parts-order-generate-pfl.ts @@ -8,6 +8,7 @@ import { } from "../util/ems-util"; import uppercaseObjectKeys from "../util/uppercaseObjectKeys"; import { EmsPartsOrder } from "./ems-parts-order-interfaces"; +import _ from "lodash"; const EmsPartsOrderGeneratePflFile = async ( partsOrder: EmsPartsOrder, @@ -15,7 +16,7 @@ const EmsPartsOrderGeneratePflFile = async ( try { let records; - if (partsOrder.job.cieca_pfl) { + if (partsOrder.job.cieca_pfl && !_.isEmpty(partsOrder.job.cieca_pfl)) { Object.keys(partsOrder.job.cieca_pfl).map((key) => { const record: DecodedPflLine = partsOrder.job.cieca_pfl[key]; return uppercaseObjectKeys(record); diff --git a/src/main/ems-parts-order/ems-parts-order-generate-pfm.ts b/src/main/ems-parts-order/ems-parts-order-generate-pfm.ts index 008a724..2a3a501 100644 --- a/src/main/ems-parts-order/ems-parts-order-generate-pfm.ts +++ b/src/main/ems-parts-order/ems-parts-order-generate-pfm.ts @@ -1,4 +1,5 @@ import { DBFFile } from "dbffile"; +import _ from "lodash"; import errorTypeCheck from "../../util/errorTypeCheck"; import { DecodedPfmLine } from "../decoder/decode-pfm.interface"; import { pfmFieldLineDescriptors } from "../util/ems-interface/fielddescriptors/pfm-field-descriptors"; @@ -14,7 +15,7 @@ const EmsPartsOrderGeneratePfmFile = async ( ): Promise => { try { let records; - if (partsOrder.job.materials) { + if (partsOrder.job.materials && !_.isEmpty(partsOrder.job.materials)) { records = Object.keys(partsOrder.job.materials).map((key) => { const record: DecodedPfmLine = partsOrder.job.materials[key]; return uppercaseObjectKeys(record); diff --git a/src/main/index.ts b/src/main/index.ts index 175428b..29a207b 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -13,7 +13,6 @@ import log from "electron-log/main"; import { autoUpdater } from "electron-updater"; import path, { join } from "path"; import appIcon from "../../resources/diamond.png?asset"; -import icon from "../../resources/icon.png?asset"; import { default as ErrorTypeCheck, default as errorTypeCheck, @@ -54,7 +53,7 @@ function createWindow(): void { minWidth: 600, minHeight: 400, //autoHideMenuBar: true, - ...(process.platform === "linux" ? { icon } : {}), + ...(process.platform === "linux" ? { icon: appIcon } : {}), title: "Shop Partner", webPreferences: { preload: join(__dirname, "../preload/index.js"), diff --git a/src/main/ipc/ipcMainHandler.user.ts b/src/main/ipc/ipcMainHandler.user.ts index f53ff5c..5bf6731 100644 --- a/src/main/ipc/ipcMainHandler.user.ts +++ b/src/main/ipc/ipcMainHandler.user.ts @@ -64,7 +64,11 @@ const ipcMainHandleAuthStateChanged = async ( }; const ipMainHandleResetPassword = async (): Promise => { - shell.openExternal("https://imex.online/resetpassword"); + shell.openExternal( + import.meta.env.VITE_COMPANY === "IMEX" + ? "https://imex.online/resetpassword" + : "https://romeonline.io/resetpassword", + ); }; export { ipcMainHandleAuthStateChanged, ipMainHandleResetPassword }; diff --git a/src/main/store/store.ts b/src/main/store/store.ts index 18f78c5..ed5ece2 100644 --- a/src/main/store/store.ts +++ b/src/main/store/store.ts @@ -32,7 +32,6 @@ const store = new Store({ }); // store.onDidAnyChange((newValue, oldValue) => { -// console.log("Settings changed", newValue, oldValue); // const mainWindow = BrowserWindow.getAllWindows()[0]; // mainWindow?.webContents.send(ipcTypes.toRenderer.store.didChange, newValue); // }); diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 87adc9d..f658531 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -1,5 +1,5 @@ import "@ant-design/v5-patch-for-react-19"; -import { Layout, Skeleton } from "antd"; +import { Layout, Skeleton, ConfigProvider, Badge } from "antd"; import { User } from "firebase/auth"; import { useEffect, useState } from "react"; import { ErrorBoundary } from "react-error-boundary"; @@ -40,35 +40,49 @@ const App: React.FC = () => { // Clean up the listener when component unmounts return (): void => unsubscribe(); }, []); + const isTest = window.api.isTest(); return ( - - - - - - - {!user ? ( - - ) : ( - <> - - - - - - - } /> - - - - )} - - - - - - + + + + + + + + {!user ? ( + + ) : ( + + + + + } /> + + + + )} + + + + + + + ); }; diff --git a/src/renderer/src/components/NavigationHeader/Navigationheader.tsx b/src/renderer/src/components/NavigationHeader/Navigationheader.tsx deleted file mode 100644 index f581bc6..0000000 --- a/src/renderer/src/components/NavigationHeader/Navigationheader.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { is } from "@electron-toolkit/utils"; -import { auth } from "@renderer/util/firebase"; -import { Badge, Layout, Menu } from "antd"; -import { MenuItemType } from "antd/es/menu/interface"; -import { signOut } from "firebase/auth"; -import { useTranslation } from "react-i18next"; -import { NavLink } from "react-router"; - -const NavigationHeader: React.FC = () => { - const { t } = useTranslation(); - //const isWatcherStarted = useAppSelector(selectWatcherStatus); - const menuItems: MenuItemType[] = [ - { label: {t("navigation.home")}, key: "home" }, - { - label: t("navigation.signout"), - key: "watchlist", - onClick: (): void => { - signOut(auth); - }, - }, - ]; - const isTest = window.api.isTest(); - return ( - - - - - - ); -}; - -export default NavigationHeader; diff --git a/src/renderer/src/components/Settings/Settings.Watcher.tsx b/src/renderer/src/components/Settings/Settings.Watcher.tsx index d577aab..b163c61 100644 --- a/src/renderer/src/components/Settings/Settings.Watcher.tsx +++ b/src/renderer/src/components/Settings/Settings.Watcher.tsx @@ -19,6 +19,11 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import ipcTypes from "../../../../util/ipcTypes.json"; +const colSpans = { + md: 12, + sm: 24, +}; + const SettingsWatcher: React.FC = () => { const { t } = useTranslation(); const isWatcherStarted = useAppSelector(selectWatcherStatus); @@ -96,8 +101,8 @@ const SettingsWatcher: React.FC = () => { color={isWatcherStarted ? "green" : "red"} > - - + + {isWatcherStarted ? ( )} - + { - console.log("is test?", window.api.isTest()); return ( - + - + - + - + diff --git a/src/renderer/src/components/SignInForm/SignInForm.tsx b/src/renderer/src/components/SignInForm/SignInForm.tsx index 5e24e53..83dff59 100644 --- a/src/renderer/src/components/SignInForm/SignInForm.tsx +++ b/src/renderer/src/components/SignInForm/SignInForm.tsx @@ -1,6 +1,6 @@ import { auth } from "@renderer/util/firebase"; import type { FormProps } from "antd"; -import { Alert, Button, Form, Input, Space } from "antd"; +import { Alert, Button, Form, Input, Space, Card, Typography } from "antd"; import log from "electron-log/renderer"; import { signInWithEmailAndPassword } from "firebase/auth"; import { useState } from "react"; @@ -8,6 +8,8 @@ import { useTranslation } from "react-i18next"; import errorTypeCheck from "../../../../util/errorTypeCheck"; import ipcTypes from "../../../../util/ipcTypes.json"; +const { Title } = Typography; + type FieldType = { username: string; password: string; @@ -39,36 +41,90 @@ const SignInForm: React.FC = () => { }; return ( -
- - label="Username" - name="username" - rules={[{ required: true }]} +
+ + {import.meta.env.VITE_COMPANY === "IMEX" + ? t("title.imex") + : t("title.rome")} + +
+ + - - - - label="Password" - name="password" - rules={[{ required: true }]} - > - - - - - + + + - - - {error && ( - - - )} - - + +
); }; + export default SignInForm; diff --git a/src/util/translations/en-US/renderer.json b/src/util/translations/en-US/renderer.json index 4c95aad..d7f2abf 100644 --- a/src/util/translations/en-US/renderer.json +++ b/src/util/translations/en-US/renderer.json @@ -26,6 +26,7 @@ "stopwatcher": "Stop Watcher\n" }, "labels": { + "emsOutFilePath": "EMS Out File Path (Parts Order, etc.)", "pollinginterval": "Polling Interval (ms)", "ppcfilepath": "Parts Price Change File Path", "started": "Started", @@ -36,6 +37,10 @@ "watcherstatus": "Watcher Status" } }, + "title": { + "imex": "ImEX Online", + "rome": "Rome Online" + }, "updates": { "apply": "Apply Update", "available": "An update is available.", diff --git a/translations.babel b/translations.babel index 0a3fd5a..741c65d 100644 --- a/translations.babel +++ b/translations.babel @@ -237,6 +237,19 @@ labels + + emsOutFilePath + false + + + + + + en-US + false + + + pollinginterval false @@ -345,6 +358,37 @@ + + title + + + imex + false + + + + + + en-US + false + + + + + rome + false + + + + + + en-US + false + + + + + updates