Converted variables to be runtime.

This commit is contained in:
Mike Cao 2025-07-24 22:41:23 -07:00
parent b6862de2be
commit 5b6292dd11
11 changed files with 46 additions and 36 deletions

View file

@ -13,13 +13,14 @@ export function UpdateNotice({ user, config }) {
const { latest, checked, hasUpdate, releaseUrl } = useStore();
const pathname = usePathname();
const [dismissed, setDismissed] = useState(checked);
const allowUpdate =
process.env.NODE_ENV === 'production' &&
user?.isAdmin &&
!config?.updatesDisabled &&
!config?.privateMode &&
!pathname.includes('/share/') &&
!process.env.cloudMode &&
!process.env.privateMode &&
!dismissed;
const updateCheck = useCallback(() => {

View file

@ -9,6 +9,7 @@ export function LanguageSetting() {
const [search, setSearch] = useState('');
const { formatMessage, labels } = useMessages();
const { locale, saveLocale } = useLocale();
const options = search
? Object.keys(languages).filter(n => {
return (

View file

@ -1,11 +1,23 @@
'use server';
export async function getConfig() {
export type Config = {
faviconUrl: string | undefined;
loginDisabled: boolean;
privateMode: boolean;
telemetryDisabled: boolean;
trackerScriptName: string | undefined;
uiDisabled: boolean;
updatesDisabled: boolean;
};
export async function getConfig(): Promise<Config> {
return {
faviconUrl: process.env.FAVICON_URL,
loginDisabled: !!process.env.DISABLE_LOGIN,
privateMode: !!process.env.PRIVATE_MODE,
telemetryDisabled: !!process.env.DISABLE_TELEMETRY,
trackerScriptName: process.env.TRACKER_SCRIPT_NAME,
uiDisabled: !!process.env.DISABLE_UI,
updatesDisabled: !!process.env.DISABLE_UPDATES,
faviconUrl: process.env.FAVICON_URL,
};
}

View file

@ -2,25 +2,25 @@ import { CURRENT_VERSION, TELEMETRY_PIXEL } from '@/lib/constants';
export async function GET() {
if (
process.env.NODE_ENV !== 'production' &&
process.env.DISABLE_TELEMETRY &&
process.env.NODE_ENV !== 'production' ||
process.env.DISABLE_TELEMETRY ||
process.env.PRIVATE_MODE
) {
const script = `
(()=>{const i=document.createElement('img');
i.setAttribute('src','${TELEMETRY_PIXEL}?v=${CURRENT_VERSION}');
i.setAttribute('style','width:0;height:0;position:absolute;pointer-events:none;');
document.body.appendChild(i);})();
`;
return new Response(script.replace(/\s\s+/g, ''), {
return new Response('/* telemetry disabled */', {
headers: {
'content-type': 'text/javascript',
},
});
}
return new Response('/* telemetry disabled */', {
const script = `
(()=>{const i=document.createElement('img');
i.setAttribute('src','${TELEMETRY_PIXEL}?v=${CURRENT_VERSION}');
i.setAttribute('style','width:0;height:0;position:absolute;pointer-events:none;');
document.body.appendChild(i);})();
`;
return new Response(script.replace(/\s\s+/g, ''), {
headers: {
'content-type': 'text/javascript',
},

View file

@ -1,9 +1,12 @@
'use client';
import { useConfig } from '@/components/hooks';
import LoginForm from './LoginForm';
import styles from './LoginPage.module.css';
export function LoginPage() {
if (process.env.disableLogin) {
const config = useConfig();
if (config?.loginDisabled) {
return null;
}

View file

@ -1,14 +1,15 @@
'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
import { useApi } from '@/components/hooks';
import { useApi, useConfig } from '@/components/hooks';
import { setUser } from '@/store/app';
import { removeClientAuthToken } from '@/lib/client';
export function LogoutPage() {
const disabled = !!(process.env.disableLogin || process.env.cloudMode);
const config = useConfig();
const router = useRouter();
const { post } = useApi();
const disabled = !!(config?.loginDisabled || process.env.cloudMode);
useEffect(() => {
async function logout() {