From f8987b08da99620cd86c0299f578cf60de69a3c6 Mon Sep 17 00:00:00 2001 From: Ahmed Al-Taiar Date: Thu, 17 Oct 2024 21:36:50 -0400 Subject: [PATCH] Add persistent flag of origin --- .env.defaults | 2 ++ .env.example | 2 ++ README.md | 1 + api/package.json | 1 + api/src/server.ts | 7 +++++++ docker-compose.yml | 1 + redwood.toml | 2 +- web/package.json | 1 + web/src/entry.client.tsx | 6 ++++++ web/src/pages/HomePage/HomePage.tsx | 6 ++++++ yarn.lock | 9 +++++++++ 11 files changed, 37 insertions(+), 1 deletion(-) diff --git a/.env.defaults b/.env.defaults index 551cbef..1375424 100644 --- a/.env.defaults +++ b/.env.defaults @@ -18,6 +18,8 @@ PRISMA_HIDE_UPDATE_MESSAGE=true FIRST_NAME=firstname LAST_NAME=lastname +COUNTRY=US + SMTP_HOST=smtp.example.com SMTP_PORT=465 SMTP_SECURE=true diff --git a/.env.example b/.env.example index d722b95..0de76ff 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,8 @@ FIRST_NAME=firstname LAST_NAME=lastname +COUNTRY=US + SMTP_HOST=smtp.example.com SMTP_PORT=465 SMTP_SECURE=true diff --git a/README.md b/README.md index 63e95fc..88f2e52 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ services: - DATABASE_URL=postgresql://redwood:changeme@db/portfolio - FIRST_NAME=first name # Your first name - LAST_NAME=lastname # Your last name + - COUNTRY=US # ISO-3166-1 alpha-2 country code, https://en.wikipedia.org/wiki/ISO_3166-1#Codes - SMTP_HOST=smtp.example.com - SMTP_PORT=465 - SMTP_SECURE=true diff --git a/api/package.json b/api/package.json index f3728f4..70ff74b 100644 --- a/api/package.json +++ b/api/package.json @@ -11,6 +11,7 @@ "@redwoodjs/graphql-server": "8.4.0", "@tus/file-store": "^1.4.0", "@tus/server": "^1.7.0", + "country-flag-icons": "^1.5.13", "graphql-scalars": "^1.23.0", "nodemailer": "^6.9.14" }, diff --git a/api/src/server.ts b/api/src/server.ts index c597edb..d018d29 100644 --- a/api/src/server.ts +++ b/api/src/server.ts @@ -10,6 +10,13 @@ import { createServer } from '@redwoodjs/api-server' import { logger } from 'src/lib/logger' import { handleTusUpload } from 'src/lib/tus' ;(async () => { + const { hasFlag } = await import('country-flag-icons') + + if (!hasFlag(process.env.COUNTRY)) + throw new Error( + 'Invalid COUNTRY environment variable, please select a valid ISO-3166-1 alpha-2 country code\n See https://en.wikipedia.org/wiki/ISO_3166-1#Codes' + ) + const server = await createServer({ logger, configureApiServer: async (server) => { diff --git a/docker-compose.yml b/docker-compose.yml index c22d0f7..15e65be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: - DATABASE_URL=postgresql://redwood:changeme@db/portfolio - FIRST_NAME=first name # Your first name - LAST_NAME=lastname # Your last name + - COUNTRY=US # ISO-3166-1 alpha-2 country code, https://en.wikipedia.org/wiki/ISO_3166-1#Codes - SMTP_HOST=smtp.example.com - SMTP_PORT=465 - SMTP_SECURE=true diff --git a/redwood.toml b/redwood.toml index c4f986d..a386956 100644 --- a/redwood.toml +++ b/redwood.toml @@ -9,7 +9,7 @@ title = "${FIRST_NAME} ${LAST_NAME}" port = 8910 apiUrl = "/api" - includeEnvironmentVariables = ["FIRST_NAME", "LAST_NAME", "API_ADDRESS_PROD", "API_ADDRESS_DEV"] + includeEnvironmentVariables = ["FIRST_NAME", "LAST_NAME", "COUNTRY", "API_ADDRESS_PROD", "API_ADDRESS_DEV"] [generate] tests = false stories = false diff --git a/web/package.json b/web/package.json index f06643b..eba721e 100644 --- a/web/package.json +++ b/web/package.json @@ -35,6 +35,7 @@ "@uppy/react": "^4.0.1", "@uppy/tus": "^4.0.0", "@uppy/webcam": "^4.0.1", + "country-flag-icons": "^1.5.13", "date-fns": "^4.1.0", "humanize-string": "2.1.0", "react": "18.3.1", diff --git a/web/src/entry.client.tsx b/web/src/entry.client.tsx index 4afac20..137fc7a 100644 --- a/web/src/entry.client.tsx +++ b/web/src/entry.client.tsx @@ -1,3 +1,4 @@ +import { hasFlag } from 'country-flag-icons' import { hydrateRoot, createRoot } from 'react-dom/client' import App from 'src/App' @@ -15,6 +16,11 @@ if (!redwoodAppElement) "exists in your 'web/src/index.html' file." ) +if (!hasFlag(process.env.COUNTRY)) + throw new Error( + 'Invalid COUNTRY environment variable, please select a valid ISO-3166-1 alpha-2 country code\n See https://en.wikipedia.org/wiki/ISO_3166-1#Codes' + ) + if (redwoodAppElement.children?.length > 0) hydrateRoot(redwoodAppElement, ) else { diff --git a/web/src/pages/HomePage/HomePage.tsx b/web/src/pages/HomePage/HomePage.tsx index 234ceef..693c475 100644 --- a/web/src/pages/HomePage/HomePage.tsx +++ b/web/src/pages/HomePage/HomePage.tsx @@ -1,5 +1,6 @@ import { mdiCompass, mdiContacts } from '@mdi/js' import Icon from '@mdi/react' +import getUnicodeFlagIcon from 'country-flag-icons/unicode' import { Link, routes } from '@redwoodjs/router' import { Metadata } from '@redwoodjs/web' @@ -44,6 +45,11 @@ const HomePage = () => ( {getLogoComponent('gitea')} +
+

+ {getUnicodeFlagIcon(process.env.COUNTRY)} +

+
) diff --git a/yarn.lock b/yarn.lock index 6bbb440..303e833 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7336,6 +7336,7 @@ __metadata: "@tus/file-store": "npm:^1.4.0" "@tus/server": "npm:^1.7.0" "@types/nodemailer": "npm:^6.4.15" + country-flag-icons: "npm:^1.5.13" graphql-scalars: "npm:^1.23.0" nodemailer: "npm:^6.9.14" languageName: unknown @@ -9061,6 +9062,13 @@ __metadata: languageName: node linkType: hard +"country-flag-icons@npm:^1.5.13": + version: 1.5.13 + resolution: "country-flag-icons@npm:1.5.13" + checksum: 10c0/beee2fe225469507d6c8df90376e031f08a5f103f65cd68e1db0679e82d4ffb2fbb27a3bb19defd112745b5c19d1972df615df21813c8c2074062dd5eb08eabb + languageName: node + linkType: hard + "crc-32@npm:^1.2.0": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -19234,6 +19242,7 @@ __metadata: "@uppy/tus": "npm:^4.0.0" "@uppy/webcam": "npm:^4.0.1" autoprefixer: "npm:^10.4.20" + country-flag-icons: "npm:^1.5.13" daisyui: "npm:^4.12.10" date-fns: "npm:^4.1.0" humanize-string: "npm:2.1.0"