Files
TREK/client/src/components/Settings/NativeServerSection.tsx
T
Maurice 8b6a65023f Merge dev into feat/native-apps
Brings the native apps branch up to dev (NestJS-only server, MikroORM
repositories, tracked sessions, per-domain locales, the lint ratchets) and
ports its new code onto that architecture:

- server: /api/auth/native moves onto injected services. The session is
  minted by the auth domain's new LoginSessionService (login bookkeeping and
  SessionsService.issue in one transaction), the one-time codes live behind a
  NativeHandoffStore port with a capped in-memory implementation that drops
  expired codes on write instead of running a timer, both routes declare
  response contracts, and the exchange answers { success: true }. Unit and
  e2e suites run on createTestModule and the ORM factories.
- shared: native strings for az, et, sk and th, native wired into every
  locale, the address placeholder as a full URL.
- client: the account and export changes go into dev's shared hooks
  (useAccountSettings, useTripExport), the native server card is a
  desktop/phone pair on useNativeServer, the hand-off call moves out of the
  page hook into native/, best-effort native failures go through
  reportError instead of the console, and the address screen is known to
  knip and lint:i18n-keys.
- package-lock.json regenerated on Linux.
2026-10-25 17:04:15 +01:00

26 lines
947 B
TypeScript

import { Server } from 'lucide-react';
import React from 'react';
import { useTranslation } from '../../i18n';
import Section from './Section';
import { useNativeServer } from './useNativeServer';
/** Only inside the iOS/Android app: which server it talks to, and the way to another one. */
export default function NativeServerSection(): React.ReactElement | null {
const { t } = useTranslation();
const { host, changeServer } = useNativeServer();
if (!host) return null;
return (
<Section title={t('native.settings.server')} icon={Server}>
<p className="text-body text-content-secondary">{t('native.settings.serverHint', { server: host })}</p>
<button
type="button"
onClick={changeServer}
className="rounded-lg border border-edge bg-surface-card px-4 py-2 text-body font-medium text-content hover:bg-surface-hover"
>
{t('native.changeServer')}
</button>
</Section>
);
}