* Added account selection for protocol links when multiple connected accounts are available, including mailto: links * Added support for handling mailto: links in an already-open PWA/session instead of always opening a new tab * Added webcal: protocol handling for calendar links * Added account selection for webcal: links when multiple calendar-capable accounts are connected * Added an import-or-subscribe choice for detected webcal calendars * Added protocol handler settings for registering mail and calendar handlers and choosing the open mode * Added service worker/session coordination for passing protocol requests between browser/PWA contexts * Added tests and translations for the new protocol handler flows
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { notFound } from "next/navigation";
|
|
import { IntlProvider } from "@/components/providers/intl-provider";
|
|
import { ThemeProvider } from "@/components/providers/theme-provider";
|
|
import { CalendarAlertProvider } from "@/components/providers/calendar-alert-provider";
|
|
import { EmbeddedBridgeProvider } from "@/components/providers/embedded-bridge-provider";
|
|
import { RateLimitToastProvider } from "@/components/providers/rate-limit-toast-provider";
|
|
import { TourProvider } from "@/components/tour/tour-provider";
|
|
import { ProtocolLaunchHandlerProvider } from "@/components/protocol/protocol-launch-handler-provider";
|
|
import { locales } from "@/i18n/routing";
|
|
|
|
export default async function LocaleLayout({
|
|
children,
|
|
params,
|
|
}: {
|
|
children: React.ReactNode;
|
|
params: Promise<{ locale: string }>;
|
|
}) {
|
|
const { locale } = await params;
|
|
|
|
if (!(locales as readonly string[]).includes(locale)) notFound();
|
|
|
|
let messages;
|
|
try {
|
|
messages = (await import(`@/locales/${locale}/common.json`)).default;
|
|
} catch {
|
|
notFound();
|
|
}
|
|
|
|
return (
|
|
<IntlProvider locale={locale} messages={messages}>
|
|
<ThemeProvider>
|
|
<CalendarAlertProvider>
|
|
<RateLimitToastProvider>
|
|
<EmbeddedBridgeProvider>
|
|
<TourProvider>
|
|
<ProtocolLaunchHandlerProvider>
|
|
{children}
|
|
</ProtocolLaunchHandlerProvider>
|
|
</TourProvider>
|
|
</EmbeddedBridgeProvider>
|
|
</RateLimitToastProvider>
|
|
</CalendarAlertProvider>
|
|
</ThemeProvider>
|
|
</IntlProvider>
|
|
);
|
|
}
|