Use helpers to check environment in frontend (#27633)

This commit is contained in:
Renaud Chaput 2023-10-31 17:05:44 +01:00 committed by GitHub
parent 7ef56d6e50
commit 277e6968f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 28 additions and 9 deletions

View file

@ -2,6 +2,8 @@ import classNames from 'classnames';
import { ReactComponent as CheckBoxOutlineBlankIcon } from '@material-symbols/svg-600/outlined/check_box_outline_blank.svg'; import { ReactComponent as CheckBoxOutlineBlankIcon } from '@material-symbols/svg-600/outlined/check_box_outline_blank.svg';
import { isProduction } from 'mastodon/utils/environment';
interface SVGPropsWithTitle extends React.SVGProps<SVGSVGElement> { interface SVGPropsWithTitle extends React.SVGProps<SVGSVGElement> {
title?: string; title?: string;
} }
@ -24,7 +26,7 @@ export const Icon: React.FC<Props> = ({
}) => { }) => {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!IconComponent) { if (!IconComponent) {
if (process.env.NODE_ENV !== 'production') { if (!isProduction()) {
throw new Error( throw new Error(
`<Icon id="${id}" className="${className}"> is missing an "icon" prop.`, `<Icon id="${id}" className="${className}"> is missing an "icon" prop.`,
); );

View file

@ -11,6 +11,7 @@ import type {
import { createBrowserHistory } from 'history'; import { createBrowserHistory } from 'history';
import { layoutFromWindow } from 'mastodon/is_mobile'; import { layoutFromWindow } from 'mastodon/is_mobile';
import { isDevelopment } from 'mastodon/utils/environment';
interface MastodonLocationState { interface MastodonLocationState {
fromMastodon?: boolean; fromMastodon?: boolean;
@ -40,7 +41,7 @@ function normalizePath(
} else if ( } else if (
location.state !== undefined && location.state !== undefined &&
state !== undefined && state !== undefined &&
process.env.NODE_ENV === 'development' isDevelopment()
) { ) {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log( console.log(

View file

@ -17,8 +17,9 @@ import UI from 'mastodon/features/ui';
import initialState, { title as siteTitle } from 'mastodon/initial_state'; import initialState, { title as siteTitle } from 'mastodon/initial_state';
import { IntlProvider } from 'mastodon/locales'; import { IntlProvider } from 'mastodon/locales';
import { store } from 'mastodon/store'; import { store } from 'mastodon/store';
import { isProduction } from 'mastodon/utils/environment';
const title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`; const title = isProduction() ? siteTitle : `${siteTitle} (Dev)`;
const hydrateAction = hydrateStore(initialState); const hydrateAction = hydrateStore(initialState);

View file

@ -1,3 +1,5 @@
import { isDevelopment } from 'mastodon/utils/environment';
export interface LocaleData { export interface LocaleData {
locale: string; locale: string;
messages: Record<string, string>; messages: Record<string, string>;
@ -11,7 +13,7 @@ export function setLocale(locale: LocaleData) {
export function getLocale(): LocaleData { export function getLocale(): LocaleData {
if (!loadedLocale) { if (!loadedLocale) {
if (process.env.NODE_ENV === 'development') { if (isDevelopment()) {
throw new Error('getLocale() called before any locale has been set'); throw new Error('getLocale() called before any locale has been set');
} else { } else {
return { locale: 'unknown', messages: {} }; return { locale: 'unknown', messages: {} };

View file

@ -2,12 +2,14 @@ import { useEffect, useState } from 'react';
import { IntlProvider as BaseIntlProvider } from 'react-intl'; import { IntlProvider as BaseIntlProvider } from 'react-intl';
import { isProduction } from 'mastodon/utils/environment';
import { getLocale, isLocaleLoaded } from './global_locale'; import { getLocale, isLocaleLoaded } from './global_locale';
import { loadLocale } from './load_locale'; import { loadLocale } from './load_locale';
function onProviderError(error: unknown) { function onProviderError(error: unknown) {
// Silent the error, like upstream does // Silent the error, like upstream does
if (process.env.NODE_ENV === 'production') return; if (isProduction()) return;
// This browser does not advertise Intl support for this locale, we only print a warning // This browser does not advertise Intl support for this locale, we only print a warning
// As-per the spec, the browser should select the best matching locale // As-per the spec, the browser should select the best matching locale

View file

@ -7,6 +7,8 @@ import * as perf from 'mastodon/performance';
import ready from 'mastodon/ready'; import ready from 'mastodon/ready';
import { store } from 'mastodon/store'; import { store } from 'mastodon/store';
import { isProduction } from './utils/environment';
/** /**
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
@ -21,7 +23,7 @@ function main() {
root.render(<Mastodon {...props} />); root.render(<Mastodon {...props} />);
store.dispatch(setupBrowserNotifications()); store.dispatch(setupBrowserNotifications());
if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) { if (isProduction() && me && 'serviceWorker' in navigator) {
const { Workbox } = await import('workbox-window'); const { Workbox } = await import('workbox-window');
const wb = new Workbox('/sw.js'); const wb = new Workbox('/sw.js');
/** @type {ServiceWorkerRegistration} */ /** @type {ServiceWorkerRegistration} */

View file

@ -5,7 +5,9 @@
import * as marky from 'marky'; import * as marky from 'marky';
if (process.env.NODE_ENV === 'development') { import { isDevelopment } from './utils/environment';
if (isDevelopment()) {
if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) { if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) {
// Increase Firefox's performance entry limit; otherwise it's capped to 150. // Increase Firefox's performance entry limit; otherwise it's capped to 150.
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135 // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135
@ -18,13 +20,13 @@ if (process.env.NODE_ENV === 'development') {
} }
export function start(name) { export function start(name) {
if (process.env.NODE_ENV === 'development') { if (isDevelopment()) {
marky.mark(name); marky.mark(name);
} }
} }
export function stop(name) { export function stop(name) {
if (process.env.NODE_ENV === 'development') { if (isDevelopment()) {
marky.stop(name); marky.stop(name);
} }
} }

View file

@ -0,0 +1,7 @@
export function isDevelopment() {
return process.env.NODE_ENV === 'development';
}
export function isProduction() {
return process.env.NODE_ENV === 'production';
}