New constant

This commit is contained in:
Manav Rathi
2024-06-30 07:55:24 +05:30
parent bd627a6e54
commit d09a7b290b
2 changed files with 28 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
import { isDevBuild } from "@/next/env";
import log from "@/next/log";
import type { AppName } from "./types/app";
import { appNames, type AppName } from "./types/app";
/**
* Log a standard startup banner.
@@ -11,6 +11,14 @@ import type { AppName } from "./types/app";
* @param userId The uid for the currently logged in user, if any.
*/
export const logStartupBanner = (appName: AppName, userId?: number) => {
// Log a warning if appName isn't what it claims to be. See the
// documentation of `appName` for why this is needed.
if (!appNames.includes(appName)) {
log.warn(
`App name ${appName} is not one of the known app names: ${JSON.stringify(appNames)}`,
);
}
const sha = process.env.gitSHA;
const buildId = isDevBuild ? "dev " : sha ? `git ${sha} ` : "";
log.info(`Starting ente-${appName}-web ${buildId}uid ${userId ?? 0}`);

View File

@@ -1,10 +1,28 @@
import type { DialogBoxAttributesV2 } from "@ente/shared/components/DialogBoxV2/types";
export const appNames = ["accounts", "auth", "photos"] as const;
/**
* Arbitrary names that we used as keys for indexing various constants
* corresponding to our apps that rely on this package.
*/
export type AppName = "accounts" | "auth" | "photos";
export type AppName = (typeof appNames)[number];
/**
* The name of the Ente app which we're currently running as.
*
* Parts of our code are shared across apps. Some parts of them also run in
* non-main thread execution contexts like web workers. So there isn't always an
* easy way to figure out what the current app is.
*
* To solve this, we inject the app name during the build process. This is
* available to all our code (shared packages, web workers).
*
* This constant employs an `as` cast to avoid incurring a dynamic check, and as
* such may be incorrect (e.g. when a new app gets added). So apps should
* dynamically validate and log it once somewhere during init.
*/
export const appName: AppName = process.env.appName as AppName;
/**
* Static title for the app.