Skip to content

Commit c353c8b

Browse files
Merge pull request #2429 from zetkin/release-241217
241217 Release
2 parents a61ec4d + 33d309a commit c353c8b

File tree

82 files changed

+2749
-246
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+2749
-246
lines changed

.env.development

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
ZETKIN_APP_DOMAIN=http://www.dev.zetkin.org
22
ZETKIN_GEN2_ORGANIZE_URL=http://organize.dev.zetkin.org
3+
ZETKIN_GEN2_CALL_URL=http://call.dev.zetkin.org
34

45
ZETKIN_PRIVACY_POLICY_LINK=https://zetkin.org/privacy
56

docs/architecture/ui-model-cache.puml

Lines changed: 0 additions & 51 deletions
This file was deleted.

next.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ module.exports = {
1313
},
1414
async redirects() {
1515
return [
16+
{
17+
source: '/my',
18+
destination: '/my/home',
19+
permanent: false,
20+
},
1621
{
1722
source: '/:prevPath*/calendar/events',
1823
destination: '/:prevPath*/calendar',

src/app/call/[callAssId]/page.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { redirect } from 'next/navigation';
2+
3+
interface PageProps {
4+
params: {
5+
callAssId: string;
6+
};
7+
}
8+
9+
export default async function Page({ params }: PageProps) {
10+
const callUrl = process.env.ZETKIN_GEN2_CALL_URL;
11+
const assignmentUrl = callUrl + '/assignments/' + params.callAssId;
12+
redirect(assignmentUrl);
13+
}

src/app/my/canvassassignments/[canvassAssId]/page.tsx renamed to src/app/canvass/[canvassAssId]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ export default async function Page({ params }: PageProps) {
2424

2525
return <MyCanvassAssignmentPage canvassAssId={canvassAssId} />;
2626
} catch (err) {
27-
return redirect(`/login?redirect=/my/canvassassignments/${canvassAssId}`);
27+
return redirect(`/login?redirect=/canvass/${canvassAssId}`);
2828
}
2929
}

src/app/my/canvassassignments/page.tsx

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/app/my/feed/page.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import redirectIfLoginNeeded from 'core/utils/redirectIfLoginNeeded';
2+
import AllEventsPage from 'features/home/pages/AllEventsPage';
3+
4+
export default async function Page() {
5+
await redirectIfLoginNeeded();
6+
7+
return <AllEventsPage />;
8+
}

src/app/my/home/page.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import redirectIfLoginNeeded from 'core/utils/redirectIfLoginNeeded';
2+
import HomePage from 'features/home/pages/HomePage';
3+
4+
export default async function Page() {
5+
await redirectIfLoginNeeded();
6+
7+
return <HomePage />;
8+
}

src/app/my/layout.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { FC, ReactNode } from 'react';
2+
import { Metadata } from 'next';
3+
import { headers } from 'next/headers';
4+
5+
import HomeLayout from 'features/home/layouts/HomeLayout';
6+
import HomeThemeProvider from 'features/home/components/HomeThemeProvider';
7+
import { getBrowserLanguage } from 'utils/locale';
8+
import getServerMessages from 'core/i18n/server';
9+
import messageIds from 'features/home/l10n/messageIds';
10+
11+
export async function generateMetadata(): Promise<Metadata> {
12+
const lang = getBrowserLanguage(headers().get('accept-language') || '');
13+
const messages = await getServerMessages(lang, messageIds);
14+
15+
return {
16+
icons: [{ url: '/logo-zetkin.png' }],
17+
title: process.env.HOME_TITLE || messages.title(),
18+
};
19+
}
20+
21+
type Props = {
22+
children: ReactNode;
23+
};
24+
25+
const MyHomeLayout: FC<Props> = ({ children }) => {
26+
const homeTitle = process.env.HOME_TITLE;
27+
28+
return (
29+
<HomeThemeProvider>
30+
<HomeLayout title={homeTitle}>{children}</HomeLayout>
31+
</HomeThemeProvider>
32+
);
33+
};
34+
35+
export default MyHomeLayout;

src/core/Providers.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import { EventPopperProvider } from 'features/events/components/EventPopper/Even
1515
import { MessageList } from 'utils/locale';
1616
import { Store } from './store';
1717
import { themeWithLocale } from '../theme';
18-
import { UserContext } from 'utils/hooks/useFocusDate';
1918
import { ZetkinUser } from 'utils/types/zetkin';
2019
import { ZUIConfirmDialogProvider } from 'zui/ZUIConfirmDialogProvider';
2120
import { ZUISnackbarProvider } from 'zui/ZUISnackbarContext';
21+
import { UserProvider } from './env/UserContext';
2222

2323
type ProviderData = {
2424
env: Environment;
@@ -63,7 +63,7 @@ const Providers: FC<ProvidersProps> = ({
6363
return (
6464
<ReduxProvider store={store}>
6565
<EnvProvider env={env}>
66-
<UserContext.Provider value={user}>
66+
<UserProvider user={user}>
6767
<StyledEngineProvider injectFirst>
6868
<CacheProvider value={cache}>
6969
<ThemeProvider theme={themeWithLocale(lang)}>
@@ -87,7 +87,7 @@ const Providers: FC<ProvidersProps> = ({
8787
</ThemeProvider>
8888
</CacheProvider>
8989
</StyledEngineProvider>
90-
</UserContext.Provider>
90+
</UserProvider>
9191
</EnvProvider>
9292
</ReduxProvider>
9393
);

src/core/env/ClientContext.tsx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import {
1111
Theme,
1212
ThemeProvider,
1313
} from '@mui/material/styles';
14+
import { LicenseInfo, LocalizationProvider } from '@mui/x-date-pickers-pro';
15+
import { AdapterDayjs } from '@mui/x-date-pickers-pro/AdapterDayjs';
1416

1517
import BrowserApiClient from 'core/api/client/BrowserApiClient';
1618
import Environment from 'core/env/Environment';
@@ -56,21 +58,28 @@ const ClientContext: FC<ClientContextProps> = ({
5658
const env = new Environment(apiClient, envVars);
5759
const cache = createCache({ key: 'css', prepend: true });
5860

61+
// MUI-X license
62+
if (env.vars.MUIX_LICENSE_KEY) {
63+
LicenseInfo.setLicenseKey(env.vars.MUIX_LICENSE_KEY);
64+
}
65+
5966
return (
6067
<ReduxProvider store={store}>
6168
<StyledEngineProvider injectFirst>
6269
<CacheProvider value={cache}>
6370
<ThemeProvider theme={themeWithLocale(lang)}>
6471
<EnvProvider env={env}>
6572
<UserProvider user={user}>
66-
<IntlProvider
67-
defaultLocale="en"
68-
locale={lang}
69-
messages={messages}
70-
>
71-
<CssBaseline />
72-
{children}
73-
</IntlProvider>
73+
<LocalizationProvider dateAdapter={AdapterDayjs}>
74+
<IntlProvider
75+
defaultLocale="en"
76+
locale={lang}
77+
messages={messages}
78+
>
79+
<CssBaseline />
80+
{children}
81+
</IntlProvider>
82+
</LocalizationProvider>
7483
</UserProvider>
7584
</EnvProvider>
7685
</ThemeProvider>

src/core/env/Environment.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ type EnvVars = {
55
MUIX_LICENSE_KEY: string | null;
66
ZETKIN_APP_DOMAIN: string | null;
77
ZETKIN_GEN2_ORGANIZE_URL?: string | null;
8+
ZETKIN_PRIVACY_POLICY_LINK?: string | null;
89
};
910

1011
export default class Environment {
@@ -22,6 +23,7 @@ export default class Environment {
2223
MUIX_LICENSE_KEY: null,
2324
ZETKIN_APP_DOMAIN: null,
2425
ZETKIN_GEN2_ORGANIZE_URL: null,
26+
ZETKIN_PRIVACY_POLICY_LINK: null,
2527
};
2628
}
2729

0 commit comments

Comments
 (0)