From 538dd434de7cc0d0a5db751cbac2767b10d75e20 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:53:53 +0100 Subject: [PATCH] Refactor: white label branding + domain checks (#4593) --- .github/actions/build/action.yml | 2 ++ .github/workflows/unit-tests.yml | 2 ++ README.md | 3 +++ src/components/address-book/ImportDialog/index.tsx | 4 ++-- src/components/common/Footer/index.tsx | 8 +++++--- src/components/common/Header/index.test.tsx | 4 ++++ src/components/common/Header/index.tsx | 7 +++++-- src/components/common/Header/styles.module.css | 1 + src/components/common/MetaTags/index.tsx | 6 +++--- src/components/safe-apps/AddCustomAppModal/index.tsx | 3 ++- src/components/safe-apps/AppFrame/index.tsx | 3 ++- .../SafeAppsZeroResultsPlaceholder/index.tsx | 3 ++- .../settings/DataManagement/ImportFileUpload.tsx | 5 +++-- .../DataManagement/useGlobalImportFileParser.ts | 2 +- src/components/settings/FallbackHandler/index.tsx | 4 ++-- .../settings/SafeAppsSigningMethod/index.tsx | 6 +++--- .../UpsertRecovery/UpsertRecoveryFlowSettings.tsx | 4 ++-- src/config/constants.ts | 3 +++ .../components/StakingConfirmationTx/Deposit.tsx | 5 ++++- .../OrderFeeConfirmationView.tsx | 4 ++-- src/features/swap/index.tsx | 4 ++-- .../components/WcConnectionForm/index.tsx | 3 ++- .../walletconnect/components/WcLogoHeader/index.tsx | 3 ++- .../WcProposalForm/useCompatibilityWarning.ts | 3 ++- src/features/walletconnect/constants.ts | 4 +++- src/hooks/useIsOfficialHost.ts | 9 +++++++++ src/pages/_app.tsx | 4 ++-- src/pages/_offline.tsx | 3 ++- src/pages/addOwner.tsx | 3 ++- src/pages/address-book.tsx | 3 ++- src/pages/apps/bookmarked.tsx | 3 ++- src/pages/apps/custom.tsx | 3 ++- src/pages/apps/index.tsx | 3 ++- src/pages/balances/index.tsx | 3 ++- src/pages/balances/nfts.tsx | 4 ++-- src/pages/bridge.tsx | 3 ++- src/pages/cookie.tsx | 9 ++++++--- src/pages/home.tsx | 3 ++- src/pages/imprint.tsx | 9 ++++++--- src/pages/licenses.tsx | 11 +++++++---- src/pages/new-safe/advanced-create.tsx | 3 ++- src/pages/new-safe/create.tsx | 3 ++- src/pages/new-safe/load.tsx | 3 ++- src/pages/privacy.tsx | 9 ++++++--- src/pages/settings/appearance.tsx | 3 ++- src/pages/settings/cookies.tsx | 3 ++- src/pages/settings/data.tsx | 3 ++- src/pages/settings/environment-variables.tsx | 3 ++- src/pages/settings/index.tsx | 3 ++- src/pages/settings/modules.tsx | 3 ++- src/pages/settings/notifications.tsx | 3 ++- src/pages/settings/safe-apps/index.tsx | 3 ++- src/pages/settings/security.tsx | 3 ++- src/pages/settings/setup.tsx | 3 ++- src/pages/share/safe-app.tsx | 3 ++- src/pages/stake.tsx | 3 ++- src/pages/swap.tsx | 3 ++- src/pages/terms.tsx | 9 ++++++--- src/pages/transactions/history.tsx | 3 ++- src/pages/transactions/messages.tsx | 3 ++- src/pages/transactions/msg.tsx | 3 ++- src/pages/transactions/queue.tsx | 3 ++- src/pages/transactions/tx.tsx | 3 ++- src/pages/welcome/accounts.tsx | 3 ++- src/pages/welcome/index.tsx | 3 ++- src/services/onboard.ts | 5 +++-- src/services/safe-wallet-provider/notifications.ts | 5 +++-- 67 files changed, 178 insertions(+), 88 deletions(-) create mode 100644 src/hooks/useIsOfficialHost.ts diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 8d6810ab3a..1808af28ab 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -58,6 +58,8 @@ runs: NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION }} NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING }} NEXT_PUBLIC_IS_OFFICIAL_HOST: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_IS_OFFICIAL_HOST }} + NEXT_PUBLIC_BRAND_LOGO: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_BRAND_LOGO }} + NEXT_PUBLIC_BRAND_NAME: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_BRAND_NAME }} NEXT_PUBLIC_BLOCKAID_CLIENT_ID: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_BLOCKAID_CLIENT_ID }} NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_STAGING }} NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_PRODUCTION }} diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 7bdd552476..9cb920a5f3 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -31,3 +31,5 @@ jobs: package-manager: yarn test-script: yarn test:ci github-token: ${{ secrets.GITHUB_TOKEN }} + env: + NEXT_PUBLIC_IS_OFFICIAL_HOST: true diff --git a/README.md b/README.md index 7f92d3620e..83d5c94816 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,9 @@ Here's the list of all the environment variables: | Env variable | Description | | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `NEXT_PUBLIC_BRAND_NAME` | The name of the app, defaults to "Wallet fork" | +| `NEXT_PUBLIC_BRAND_LOGO` | The URL of the app logo displayed in the header | + | `NEXT_PUBLIC_INFURA_TOKEN` | [Infura](https://docs.infura.io/infura/networks/ethereum/how-to/secure-a-project/project-id) RPC API token | | `NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN` | Infura token for Safe Apps, falls back to `NEXT_PUBLIC_INFURA_TOKEN` | | `NEXT_PUBLIC_IS_PRODUCTION` | Set to `true` to build a minified production app | diff --git a/src/components/address-book/ImportDialog/index.tsx b/src/components/address-book/ImportDialog/index.tsx index 13262285e7..8f7e47b390 100644 --- a/src/components/address-book/ImportDialog/index.tsx +++ b/src/components/address-book/ImportDialog/index.tsx @@ -17,7 +17,7 @@ import ErrorMessage from '@/components/tx/ErrorMessage' import { Errors, logError } from '@/services/exceptions' import FileUpload, { FileTypes, type FileInfo } from '@/components/common/FileUpload' import ExternalLink from '@/components/common/ExternalLink' -import { HelpCenterArticle } from '@/config/constants' +import { BRAND_NAME, HelpCenterArticle } from '@/config/constants' type AddressBookCSVRow = ['address', 'name', 'chainId'] @@ -152,7 +152,7 @@ const ImportDialog = ({ handleClose }: { handleClose: () => void }): ReactElemen {error && {error}} - Only CSV files exported from a {'Safe{Wallet}'} can be imported. + Only CSV files exported from a {BRAND_NAME} can be imported.
{ const router = useRouter() + const isOfficialHost = useIsOfficialHost() if (!footerPages.some((path) => router.pathname.startsWith(path))) { return null @@ -44,7 +46,7 @@ const Footer = (): ReactElement | null => { return (