From f6d57ef83b968e86fb3c7decd7412945cf28da31 Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 10:42:19 -0600 Subject: [PATCH 01/15] added streamline docker compose and build steps --- .gitlab-ci.yml | 94 +++++++++++++++++++++++++++++++++++ docker-compose.streamline.yml | 33 ++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 docker-compose.streamline.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6339ad..e99434b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -316,3 +316,97 @@ deploy:development: - docker stack deploy --with-registry-auth -c docker-compose.dev.yml webui when: manual allow_failure: false + +dependencies:streamline: + image: node:$NODE_VERSION + stage: dependencies + only: + refs: + - streamline + # before_script: + # - npm -g config set user root + script: + - npm ci + cache: + key: + files: + - package-lock.json + paths: + - node_modules + artifacts: + expire_in: 1 hour + paths: + - node_modules/ + +# test: +# image: node:$NODE_VERSION +# stage: setup +# dependencies: +# - dependencies:production +# only: +# - master +# before_script: +# - npm run lint +# script: +# - CI=true npm run test + +setup:streamline: + image: node:$NODE_VERSION + stage: setup + dependencies: + - dependencies:streamline + only: + - master + script: + - npm run build:streamline + artifacts: + expire_in: 1 hour + paths: + - build + +build:streamline: + image: docker:20.10.21 + stage: build + dependencies: + - setup:streamline + variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + services: + - docker:20.10.21-dind + only: + - master + before_script: + - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} + script: + - docker build -t ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} . + - docker tag ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:latest + - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline + +deploy:streamline: + image: docker:20.10.21 + stage: deploy + variables: + DOCKER_DRIVER: overlay2 + DOCKER_HOST: ssh://deploy@streamline.adaptiveagriculture.ca + DEPLOY_IMAGE: ${CI_REGISTRY}/brandx/bxt-app/streamline:latest + DEPLOY_TARGET: deploy@streamline.adaptiveagriculture.ca + only: + - master + environment: + name: Streamline + url: https://streamline.adaptiveagriculture.ca + before_script: &deploy_tunnel + - "apk --update add openssh-client" + - "eval $(ssh-agent -s)" + - "echo \"$DEPLOY_SSH_PRIV_KEY\" | tr -d '\r' | ssh-add - > /dev/null" + # - "ssh -Mo StrictHostKeyChecking=no -S deploy-ctrl-socket -fnNTL /var/run/docker.sock:/var/run/docker.sock ${DEPLOY_TARGET}" + # - "ssh -S deploy-ctrl-socket -O check ${DEPLOY_TARGET}" + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - ssh -o StrictHostKeyChecking=no ${DEPLOY_TARGET} + script: + - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} + - docker stack deploy --with-registry-auth -c docker-compose.streamline.yml webui + when: manual + allow_failure: false \ No newline at end of file diff --git a/docker-compose.streamline.yml b/docker-compose.streamline.yml new file mode 100644 index 0000000..218ab7d --- /dev/null +++ b/docker-compose.streamline.yml @@ -0,0 +1,33 @@ +version: "3.6" + +services: + webui: + image: ${DEPLOY_IMAGE} + networks: + - backend + stop_signal: SIGQUIT + deploy: + update_config: + order: start-first + healthcheck: + test: ["CMD", "curl", "localhost:8080/health"] + interval: 1m + timeout: 10s + retries: 3 + start_period: 30s + labels: + com.datadoghq.ad.logs: '[{"source": "nginx", "service": "webui"}]' + traefik.docker.network: "backend" + traefik.enable: "true" + traefik.http.routers.webui.rule: "Host(`streamline.adaptiveagriculture.ca`)" + traefik.frontend.redirect.regex: "^https?://streamline.adaptiveagriculture.ca/(.*)" + traefik.frontend.redirect.replacement: "https://streamline.adaptiveagriculture.ca/$${1}" + traefik.backend: "www" + traefik.http.services.webui.loadbalancer.server.port: "80" + traefik.protocol: "http" + dns: + - 69.27.101.6 + +networks: + backend: + external: true From 0ef399f5d8646ec6cc500f2b7327bdacbe7c009e Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 10:45:01 -0600 Subject: [PATCH 02/15] got rid of some output --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e99434b..90bb9e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -303,8 +303,8 @@ deploy:development: - "eval $(ssh-agent -s)" - ssh -V - cat /etc/os-release - - "echo DEPLOY_TARGET=${DEPLOY_TARGET}" - - "echo DOCKER_HOST=${DOCKER_HOST}" + # - "echo DEPLOY_TARGET=${DEPLOY_TARGET}" + # - "echo DOCKER_HOST=${DOCKER_HOST}" - "echo \"$DEVELOPMENT_SSH_PRIV_KEY\" | tr -d '\r' | ssh-add - " # - "ssh -Mo StrictHostKeyChecking=no -S deploy-ctrl-socket -fnNTL /var/run/docker.sock:/var/run/docker.sock ${DEPLOY_TARGET}" # - "ssh -S deploy-ctrl-socket -O check ${DEPLOY_TARGET}" From 1097bc525b11722da68b61444b71e600d410d7f2 Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 10:46:30 -0600 Subject: [PATCH 03/15] streamline steps are running on the streamline branch instead of master --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90bb9e0..c728d1b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -356,7 +356,7 @@ setup:streamline: dependencies: - dependencies:streamline only: - - master + - streamline script: - npm run build:streamline artifacts: @@ -375,7 +375,7 @@ build:streamline: services: - docker:20.10.21-dind only: - - master + - streamline before_script: - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} script: @@ -392,7 +392,7 @@ deploy:streamline: DEPLOY_IMAGE: ${CI_REGISTRY}/brandx/bxt-app/streamline:latest DEPLOY_TARGET: deploy@streamline.adaptiveagriculture.ca only: - - master + - streamline environment: name: Streamline url: https://streamline.adaptiveagriculture.ca From 9fbc43c413319bff090adf6bff60e9a6cc09259b Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 11:46:32 -0600 Subject: [PATCH 04/15] added build:streamline npm script in package json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 5a32392..fc984ec 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "build:staging": "VITE_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_AUTH0_AUDIENCE=stagingapi.brandxtech.ca VITE_AUTH0_CLIENT_ID=3ib460VvLwdeyse5iUSQfxkVdQaUmphP VITE_APP_API_URL=https://stagingapi.brandxtech.ca/v1 VITE_APP_WS_URL=wss://stagingapi.brandxtech.ca/v1/live NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_STAGING} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:development": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_DEVELOPMENT} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:production": "VITE_AUTH0_CLIENT_ID=5pUCkl2SfogkWmM244UDcLEUOp8EFdHd VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=api.brandxtech.ca VITE_APP_API_URL=https://api.brandxtech.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_PRODUCTION} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", + "build:streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=https://streamline.api.adaptiveagriculture.ca VITE_APP_API_URL=https://streamline.api.adaptiveagriculture.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_PRODUCTION} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:offline": "npx env-cmd offline,whitelabel npm run build", "test": "vitest" }, From b89a539dd7be31d821172946a36fd99b8a69e117 Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 12:00:21 -0600 Subject: [PATCH 05/15] fixed build stage --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c728d1b..c8f6158 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -379,9 +379,9 @@ build:streamline: before_script: - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} script: - - docker build -t ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} . - - docker tag ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:latest - - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline + - docker build -t ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} . + - docker tag ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:streamline + - docker push ${CI_REGISTRY}/brandx/bxt-app/production:streamline deploy:streamline: image: docker:20.10.21 From a85c958d046283389978ae222355ce57bcb5de3b Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 12:27:39 -0600 Subject: [PATCH 06/15] using streamline private key for deployment --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c8f6158..244c0ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -399,7 +399,7 @@ deploy:streamline: before_script: &deploy_tunnel - "apk --update add openssh-client" - "eval $(ssh-agent -s)" - - "echo \"$DEPLOY_SSH_PRIV_KEY\" | tr -d '\r' | ssh-add - > /dev/null" + - "echo \"$STREAMLINE_SSH_PRIV_KEY\" | tr -d '\r' | ssh-add - > /dev/null" # - "ssh -Mo StrictHostKeyChecking=no -S deploy-ctrl-socket -fnNTL /var/run/docker.sock:/var/run/docker.sock ${DEPLOY_TARGET}" # - "ssh -S deploy-ctrl-socket -O check ${DEPLOY_TARGET}" - mkdir -p ~/.ssh From 677012a145ec62c424ea744022016bb78362357f Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 13:24:08 -0600 Subject: [PATCH 07/15] pushing to the commit tag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 244c0ad..17e3cbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -381,7 +381,7 @@ build:streamline: script: - docker build -t ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} . - docker tag ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:streamline - - docker push ${CI_REGISTRY}/brandx/bxt-app/production:streamline + - docker push ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} deploy:streamline: image: docker:20.10.21 From de713ac8fc3003417d65bd0eb24168dc810f8bee Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 13:55:18 -0600 Subject: [PATCH 08/15] trying to fix the tag for the streamline image --- .gitlab-ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 17e3cbc..d896247 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -379,9 +379,10 @@ build:streamline: before_script: - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} script: - - docker build -t ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} . - - docker tag ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:streamline - - docker push ${CI_REGISTRY}/brandx/bxt-app/production:${CI_COMMIT_SHA} + - docker build -t ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} . + - docker tag ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:streamline + - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} + - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline:latest deploy:streamline: image: docker:20.10.21 @@ -389,7 +390,7 @@ deploy:streamline: variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: ssh://deploy@streamline.adaptiveagriculture.ca - DEPLOY_IMAGE: ${CI_REGISTRY}/brandx/bxt-app/streamline:latest + DEPLOY_IMAGE: ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} DEPLOY_TARGET: deploy@streamline.adaptiveagriculture.ca only: - streamline From bfe9d0dd8bd2aa1cebd72cf7f78d2c61bb3cc51c Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 14:01:11 -0600 Subject: [PATCH 09/15] trying to fix the tag for the streamline image --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d896247..f8bf5cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -380,7 +380,7 @@ build:streamline: - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY} script: - docker build -t ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} . - - docker tag ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/production:streamline + - docker tag ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} ${CI_REGISTRY}/brandx/bxt-app/streamline:latest - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline:${CI_COMMIT_SHA} - docker push ${CI_REGISTRY}/brandx/bxt-app/streamline:latest From 8a0c9491c881e0915595e3d2efa5087aad8fc7da Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 14:22:47 -0600 Subject: [PATCH 10/15] added streamline whitelabel --- src/services/whiteLabel.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/services/whiteLabel.ts b/src/services/whiteLabel.ts index d14ab51..ff45995 100644 --- a/src/services/whiteLabel.ts +++ b/src/services/whiteLabel.ts @@ -111,6 +111,28 @@ const BXT_WHITE_LABEL: WhiteLabel = { homePage: "/devices" }; +const STREAMLINE_WHITE_LABEL: WhiteLabel = { + name: "Streamline", + primaryColour: "black", + // primaryColour: "#0000FF", + secondaryColour: "yellow", + // secondaryColour: "#FFFF00", + // signatureColour: "#272727", + signatureColour: "#005bb0", + signatureAccentColour: "#fff", + auth0ClientId: import.meta.env.VITE_AUTH0_STREAMLINE_CLIENT_ID, + redirectOnLogout: false, + logoutRedirectTarget: "", + darkLogo: BXTDarkLogo, + lightLogo: BXTLightLogo, + transparentLogoBG: false, + blacklist: [], + hotjarID: import.meta.env.REACT_APP_HOTJAR_ID_BXT, + docs: "Platform", + protips: protips, + homePage: "/devices" +}; + export function isBXT(): boolean { return getName() === "Brand X Technologies"; } @@ -256,6 +278,7 @@ export function IsOmniAir(): boolean { const whitelabels = new Map([ ["adaptiveag", ADAPTIVE_AGRICULTURE_WHITE_LABEL], ["adaptiveagriculture", ADAPTIVE_AGRICULTURE_WHITE_LABEL], + ["streamline", STREAMLINE_WHITE_LABEL], ["brandxducks", BXT_WHITE_LABEL], ["brandxtech", BXT_WHITE_LABEL], ["aerogrowmanufacturing", AEROGROW_WHITE_LABEL], From af518b58a86c60f879050e5b7d7f4fcf269ee435 Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 14:35:30 -0600 Subject: [PATCH 11/15] made streamline further up the whitelabel list so it doesn't default to agriculture by accident --- src/app/App.tsx | 1 + src/services/whiteLabel.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 16bb781..03a9c70 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -12,6 +12,7 @@ function App() { const [token, setToken] = useState(undefined) const whiteLabel = getWhitelabel() + console.log("Whitelabel Name: "+whiteLabel.name) const manifestPath = "/" + whiteLabel.name.replace(/\s/g, "") + "/manifest.json" const manifestDocument = document.getElementById('manifest-link') as HTMLLinkElement fetch(manifestPath).then(response => { diff --git a/src/services/whiteLabel.ts b/src/services/whiteLabel.ts index ff45995..27b53a8 100644 --- a/src/services/whiteLabel.ts +++ b/src/services/whiteLabel.ts @@ -276,9 +276,9 @@ export function IsOmniAir(): boolean { } const whitelabels = new Map([ + ["streamline", STREAMLINE_WHITE_LABEL], ["adaptiveag", ADAPTIVE_AGRICULTURE_WHITE_LABEL], ["adaptiveagriculture", ADAPTIVE_AGRICULTURE_WHITE_LABEL], - ["streamline", STREAMLINE_WHITE_LABEL], ["brandxducks", BXT_WHITE_LABEL], ["brandxtech", BXT_WHITE_LABEL], ["aerogrowmanufacturing", AEROGROW_WHITE_LABEL], From b4204a19983b0199e5720bb17b3f6139d5793295 Mon Sep 17 00:00:00 2001 From: Carter Date: Wed, 11 Jun 2025 15:42:30 -0600 Subject: [PATCH 12/15] fixed streamline whiteLabel colors --- package.json | 1 + src/services/whiteLabel.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fc984ec..5a9561d 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "start": "VITE_AUTH0_CLIENT_ID=5pUCkl2SfogkWmM244UDcLEUOp8EFdHd VITE_AUTH0_AUDIENCE=api.brandxtech.ca VITE_APP_API_URL=https://api.brandxtech.ca/v1 VITE_APP_WS_URL=ws://api.brandxtech.ca/v1/live vite", "start-local": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_APP_API_URL=http://localhost:50052/v1 VITE_APP_WS_URL=ws://localhost:50052/v1/live VITE_APP_BILLING_URL=http://localhost:50053/v1 VITE_APP_RECLUSE_URL=http://localhost:50054/v1 VITE_APP_GITLAB_URL=http://localhost:50055/v1 vite", "start-dev": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_AUTH0_DEV_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 vite", + "start-streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=streamline.api.adaptiveagriculture.ca vite", "start-staging": "VITE_LOCAL_STAGING=true VITE_AUTH0_CLIENT_ID=3ib460VvLwdeyse5iUSQfxkVdQaUmphP VITE_AUTH0_AUDIENCE=stagingapi.brandxtech.ca VITE_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_APP_API_URL=https://stagingapi.brandxtech.ca/v1 VITE_APP_WS_URL=ws://stagingapi.brandxtech.ca/v1/live VITE_APP_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_APP_AUTH0_AUDIENCE=stagingapi.brandxtech.ca vite", "build": "tsc -b && vite build", "lint": "eslint .", diff --git a/src/services/whiteLabel.ts b/src/services/whiteLabel.ts index 27b53a8..78ca2a4 100644 --- a/src/services/whiteLabel.ts +++ b/src/services/whiteLabel.ts @@ -113,7 +113,7 @@ const BXT_WHITE_LABEL: WhiteLabel = { const STREAMLINE_WHITE_LABEL: WhiteLabel = { name: "Streamline", - primaryColour: "black", + primaryColour: "grey", // primaryColour: "#0000FF", secondaryColour: "yellow", // secondaryColour: "#FFFF00", @@ -299,6 +299,9 @@ export function getWhitelabel(): WhiteLabel { if (window.location.origin.includes("bxt-dev")) { return BXT_WHITE_LABEL; } + if (window.location.origin.includes("localhost")) { + return STREAMLINE_WHITE_LABEL; + } if (window.location.origin.includes("staging") || import.meta.env.VITE_LOCAL_STAGING=='true') { return STAGING_WHITELABEL; } From fc5ce3344571cd6842057a424fcf528f5b935871 Mon Sep 17 00:00:00 2001 From: Carter Date: Thu, 12 Jun 2025 10:34:40 -0600 Subject: [PATCH 13/15] took https out o fauth audience --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a9561d..3f50bf1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "build:staging": "VITE_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_AUTH0_AUDIENCE=stagingapi.brandxtech.ca VITE_AUTH0_CLIENT_ID=3ib460VvLwdeyse5iUSQfxkVdQaUmphP VITE_APP_API_URL=https://stagingapi.brandxtech.ca/v1 VITE_APP_WS_URL=wss://stagingapi.brandxtech.ca/v1/live NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_STAGING} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:development": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_DEVELOPMENT} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:production": "VITE_AUTH0_CLIENT_ID=5pUCkl2SfogkWmM244UDcLEUOp8EFdHd VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=api.brandxtech.ca VITE_APP_API_URL=https://api.brandxtech.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_PRODUCTION} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", - "build:streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=https://streamline.api.adaptiveagriculture.ca VITE_APP_API_URL=https://streamline.api.adaptiveagriculture.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_PRODUCTION} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", + "build:streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=streamline.api.adaptiveagriculture.ca VITE_APP_API_URL=https://streamline.api.adaptiveagriculture.ca/v1 NODE_OPTIONS=--max_old_space_size=4096 VITE_APP_GOOGLE_API_KEY=${GOOGLE_API_KEY} VITE_APP_STRIPE_PUBLIC_KEY=${STRIPE_PUBLIC_KEY_PRODUCTION} VITE_MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN} VITE_CNHI_CLIENT_ID=${CNHI_CLIENT_ID} VITE_CNHI_AUTHORIZE_URL=${CNHI_AUTHORIZE_URL} VITE_CNHI_REDIRECT_URI=${CNHI_REDIRECT_URI} VITE_CNHI_SCOPES=${CNHI_SCOPES} VITE_CNHI_CONNECTION=${CNHI_CONNECTION} VITE_CNHI_AUDIENCE=${CNHI_AUDIENCE} VITE_APP_IMAGE4IO_USERNAME=${IMAGE4IO_USERNAME} VITE_APP_IMAGE4IO_PASSWORD=${IMAGE4IO_PASSWORD} VITE_JD_CLIENT_ID=${JD_CLIENT_ID} VITE_JD_AUTHORIZE_URL=${JD_AUTHORIZE_URL} VITE_JD_REDIRECT_URI=${JD_REDIRECT_URI} VITE_JD_SCOPES=${JD_SCOPES} VITE_JD_STATE=${JD_STATE} VITE_OPEN_WEATHERMAP={OPEN_WEATHERMAP} vite build", "build:offline": "npx env-cmd offline,whitelabel npm run build", "test": "vitest" }, From d684f6c39af16a09b3c3ec72c01489789b705888 Mon Sep 17 00:00:00 2001 From: Carter Date: Thu, 12 Jun 2025 15:52:01 -0600 Subject: [PATCH 14/15] added some streamline whitelabel stuff --- package.json | 2 +- public/Streamline/favicon-16x16.png | Bin 0 -> 1351 bytes public/Streamline/favicon-32x32.png | Bin 0 -> 1952 bytes public/Streamline/favicon.ico | Bin 0 -> 15086 bytes public/Streamline/manifest.json | 37 ++++++++++++++++++ public/Streamline/stream-logo.png | Bin 0 -> 58285 bytes src/app/App.tsx | 1 - .../whitelabels/Streamline/stream-logo.png | Bin 0 -> 58285 bytes src/pages/Devices.tsx | 3 ++ src/services/whiteLabel.ts | 7 ++-- 10 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 public/Streamline/favicon-16x16.png create mode 100644 public/Streamline/favicon-32x32.png create mode 100644 public/Streamline/favicon.ico create mode 100644 public/Streamline/manifest.json create mode 100644 public/Streamline/stream-logo.png create mode 100644 src/assets/whitelabels/Streamline/stream-logo.png diff --git a/package.json b/package.json index 3f50bf1..179f3e8 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "start": "VITE_AUTH0_CLIENT_ID=5pUCkl2SfogkWmM244UDcLEUOp8EFdHd VITE_AUTH0_AUDIENCE=api.brandxtech.ca VITE_APP_API_URL=https://api.brandxtech.ca/v1 VITE_APP_WS_URL=ws://api.brandxtech.ca/v1/live vite", "start-local": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_APP_API_URL=http://localhost:50052/v1 VITE_APP_WS_URL=ws://localhost:50052/v1/live VITE_APP_BILLING_URL=http://localhost:50053/v1 VITE_APP_RECLUSE_URL=http://localhost:50054/v1 VITE_APP_GITLAB_URL=http://localhost:50055/v1 vite", "start-dev": "VITE_AUTH0_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=bxt-dev.api.adaptiveagriculture.ca VITE_AUTH0_DEV_CLIENT_ID=dzJTpqIeMA4Rwk4xujtwPbAO3TY32bM1 vite", - "start-streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_APP_API_URL=https://bxt-dev.api.adaptiveagriculture.ca/v1 VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=streamline.api.adaptiveagriculture.ca vite", + "start-streamline": "VITE_AUTH0_CLIENT_ID=HwUV0hHNdVvU96zuMBTAU8i7nFdwwgIX VITE_APP_API_URL=https://streamline.api.adaptiveagriculture.ca/v1 VITE_AUTH0_CLIENT_DOMAIN=brandxtech.auth0.com VITE_AUTH0_AUDIENCE=streamline.api.adaptiveagriculture.ca vite", "start-staging": "VITE_LOCAL_STAGING=true VITE_AUTH0_CLIENT_ID=3ib460VvLwdeyse5iUSQfxkVdQaUmphP VITE_AUTH0_AUDIENCE=stagingapi.brandxtech.ca VITE_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_APP_API_URL=https://stagingapi.brandxtech.ca/v1 VITE_APP_WS_URL=ws://stagingapi.brandxtech.ca/v1/live VITE_APP_AUTH0_CLIENT_DOMAIN=adaptivestaging.us.auth0.com VITE_APP_AUTH0_AUDIENCE=stagingapi.brandxtech.ca vite", "build": "tsc -b && vite build", "lint": "eslint .", diff --git a/public/Streamline/favicon-16x16.png b/public/Streamline/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..aa87654272c2f513661dd4c586955cbbb74fb11a GIT binary patch literal 1351 zcma)4YfO_@7=EB4R~-ryL8c9Nxt0O~1u?}IT1pF)a@TT)G^1Fdn?f*SM3gbi;!qI* zCt+h_Q=Bp(IyVF=w}K#r%Btdps6aBdkuVjJ?tJ^R?8lOwyx;qt%lAI#d7hk4VnvY~ z%q^!$l3)#Sx&&*ddjmVmw%@YfOQWv27D6m4d%IAO& z7{EdXz&Z=qC>n3Xg#w0dvC$GP2J|rB2H7GYM$mCcA0tTvy`D58wht*!VL(IdAguim z-h!B6@P7i$1W~_7(9w0(ZS~=%Ji`EMe!=4hrv3B*a^7gfb%2R z?U2mE%nrPtvG-drk3sqn(iun}QIViV`V(rBPB`3ww;U-GNS#Lf5SXRZ(Y^-=I|Z6C z67M2u3W*v-UP6ivQP;4Q1<5!h6NpiPc?2mBkT8k3VR#n&Eo1<3qu{nvIrI!ntRNbI zXc)qNh=vgH1MDNH-y&KexD7!+rOs1H?eKfSS7CPxHabJ7M$~O^x+vO2QPcp!ufRzP z!4UYjv8N4tuYq?9q0JDEQnp0ggi{73nILel!>A&ta+r2c{=Et2mcndE88s00n-?oft^$0#de)QB0Ov=fHW0~BW>marluBfIr_ zy?p5FAp-t|QY@n0-TxdrPBb<0Q_eS4JD4^NZlh1$aM-DP`(ed%v2119$>YhJ&n-4~ z)YPfHL*|y2f6Fs8s90P3%KE*jnXs_==Yf`8Z5E0*&tJUE@_F>8TCp zecGQdOV){(|A=uIeY@7@WY(tI;ZRmpRVAi*R#XPd3}5pJKZ7hmB&X{kLh{MNSjiW1 zjc3A8h_z<+I+( zPcL4yoh~S_@#*Zyf1yaes;qCZ3Zc2yb*Pu#Z7*Eh?vZ%7w4~Ti@%yV+?fb3|kA1Yf zFlF%ZO?wObvQ>7^``Tki+xOdS+1_Jd{n)aqrdrya+1Gz|I*9!}j>neuwh9||xw@DZ zmm6_7wejVKX=05^)nmAM-nQWu-A}ODiSFFg)FBfT&YTgxHez12wz&s>>u(jNol8qi(CGr@^K+8ixrG_6=Kj6Qtznr@ zJI~8&UHqc!S@M;d`i>xf|NOD~up^71uw$fGIPR|260@9@++<}=rZSh6U6e}-m<-=w zFNVLDZ=i(9Uw{ zlNIFBl_iQ?x=f+W1`apQE?JlyOmuS_j!}>BpNTT=$NC~qv-Y*H?T2b?BXfX@|i+QTy{{sJ3@&UXL+ literal 0 HcmV?d00001 diff --git a/public/Streamline/favicon-32x32.png b/public/Streamline/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a606ca025527135e98fd0db56d554ed712a1081d GIT binary patch literal 1952 zcmV;R2VeM!P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 X3dB!JXxBOP4CS&+Dj{`VW8MD&xK9c1 literal 0 HcmV?d00001 diff --git a/public/Streamline/manifest.json b/public/Streamline/manifest.json new file mode 100644 index 0000000..7f8d80f --- /dev/null +++ b/public/Streamline/manifest.json @@ -0,0 +1,37 @@ +{ + "name": "Streamline", + "short_name": "Streamline", + "icons": [ + { + "src": "favicon.ico", + "sizes": "48x48", + "type": "image/x-icon" + }, + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "maskable_icon.png", + "sizes": "196x196", + "type": "image/png", + "purpose": "any maskable" + } + ], + "start_url": "/", + "theme_color": "#272727", + "background_color": "#303030", + "display": "standalone", + "orientation": "any" +} diff --git a/public/Streamline/stream-logo.png b/public/Streamline/stream-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d994b0c78827ea69c0705f8de918beea4d49ff GIT binary patch literal 58285 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 F`G2LPxRd|@ literal 0 HcmV?d00001 diff --git a/src/app/App.tsx b/src/app/App.tsx index 03a9c70..16bb781 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -12,7 +12,6 @@ function App() { const [token, setToken] = useState(undefined) const whiteLabel = getWhitelabel() - console.log("Whitelabel Name: "+whiteLabel.name) const manifestPath = "/" + whiteLabel.name.replace(/\s/g, "") + "/manifest.json" const manifestDocument = document.getElementById('manifest-link') as HTMLLinkElement fetch(manifestPath).then(response => { diff --git a/src/assets/whitelabels/Streamline/stream-logo.png b/src/assets/whitelabels/Streamline/stream-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d994b0c78827ea69c0705f8de918beea4d49ff GIT binary patch literal 58285 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 F`G2LPxRd|@ literal 0 HcmV?d00001 diff --git a/src/pages/Devices.tsx b/src/pages/Devices.tsx index 972f451..35f37c4 100644 --- a/src/pages/Devices.tsx +++ b/src/pages/Devices.tsx @@ -102,6 +102,8 @@ export default function Devices() { const [limit, setLimit] = useState(10); const [page, setPage] = useState(0); + const [{ user }] = useGlobalState() + const [order, setOrder] = useState<"asc" | "desc">(() => { // Load from sessionStorage on initial render const savedOrder = sessionStorage.getItem('order'); @@ -585,6 +587,7 @@ export default function Devices() { } const provisionButton= () => { + if (!user.allowedTo("provision")) return null return ( diff --git a/src/services/whiteLabel.ts b/src/services/whiteLabel.ts index 78ca2a4..4135166 100644 --- a/src/services/whiteLabel.ts +++ b/src/services/whiteLabel.ts @@ -11,6 +11,7 @@ import AeroGrowLightLogo from "../assets/whitelabels/AeroGrow/lightLogo.png"; import MiVentLightLogo from "../assets/whitelabels/MiVent/lightLogo.png"; // import OmniAirLogo from "../assets/whitelabels/OmniAir/OmniAirLogo.png"; import MiPCALogo from "../assets/whitelabels/OmniAir/MiPCALogo.png"; +import StreamlineLogo from "../assets/whitelabels/Streamline/stream-logo.png" // import { green, yellow } from "@mui/material/colors"; const protips: string[] = [ @@ -113,7 +114,7 @@ const BXT_WHITE_LABEL: WhiteLabel = { const STREAMLINE_WHITE_LABEL: WhiteLabel = { name: "Streamline", - primaryColour: "grey", + primaryColour: "#FFFF", // primaryColour: "#0000FF", secondaryColour: "yellow", // secondaryColour: "#FFFF00", @@ -123,8 +124,8 @@ const STREAMLINE_WHITE_LABEL: WhiteLabel = { auth0ClientId: import.meta.env.VITE_AUTH0_STREAMLINE_CLIENT_ID, redirectOnLogout: false, logoutRedirectTarget: "", - darkLogo: BXTDarkLogo, - lightLogo: BXTLightLogo, + darkLogo: StreamlineLogo, + lightLogo: StreamlineLogo, transparentLogoBG: false, blacklist: [], hotjarID: import.meta.env.REACT_APP_HOTJAR_ID_BXT, From 17401600770067928ace599d3e8a77e775b8dfa1 Mon Sep 17 00:00:00 2001 From: Carter Date: Fri, 13 Jun 2025 11:28:52 -0600 Subject: [PATCH 15/15] enabled more buttons in the side navigator for streamline --- src/navigation/SideNavigator.tsx | 14 ++++++++------ src/services/whiteLabel.ts | 8 ++++++++ src/theme/AppThemeProvider.tsx | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/navigation/SideNavigator.tsx b/src/navigation/SideNavigator.tsx index fc902fb..591aa27 100644 --- a/src/navigation/SideNavigator.tsx +++ b/src/navigation/SideNavigator.tsx @@ -30,6 +30,7 @@ import { // isBXT, IsMiVent, IsOmniAir, + IsStreamline, } from "services/whiteLabel"; import MiningIcon from "products/ventilation/MiningIcon"; import { useAuth0 } from "@auth0/auth0-react"; @@ -156,11 +157,12 @@ export default function SideNavigator(props: Props) { const authenticatedSideMenu = () => { const isMiVent = IsMiVent(); const isAg = IsAdaptiveAgriculture() + const isStreamline = IsStreamline() const isMiPCA = IsOmniAir() const isAdCon = IsAdCon() return ( - {(isAg || user.hasFeature("admin")) && ( + {(isAg || isStreamline || user.hasFeature("admin")) && ( )} - {(isAg || user.hasFeature("admin")) && ( + {(isAg || isStreamline || user.hasFeature("admin")) && ( )} - {(isAg || user.hasFeature("admin")) && ( + {(isAg || isStreamline || user.hasFeature("admin")) && ( } - {(isAg || user.hasFeature("admin")) && ( + {(isAg || isStreamline || user.hasFeature("admin")) && ( } - {(isAg || user.hasFeature("admin")) && ( + {(isAg || isStreamline || user.hasFeature("admin")) && ( } - {isAg && + {isAg || isStreamline &&