Skip to content

Commit

Permalink
Merge pull request #2449 from zetkin/release-241223
Browse files Browse the repository at this point in the history
241223 Release
  • Loading branch information
richardolsson authored Dec 23, 2024
2 parents c353c8b + cb6133e commit 580885e
Show file tree
Hide file tree
Showing 29 changed files with 971 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
campaign: { id: assignmentModel.campId },
end_date: assignmentModel.end_date,
id: assignmentModel._id.toString(),
instructions: assignmentModel.instructions,
metrics: assignmentModel.metrics.map((m) => ({
definesDone: m.definesDone,
description: m.description,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
},
end_date: assignmentModel.end_date,
id: assignmentModel._id.toString(),
instructions: assignmentModel.instructions,
metrics: assignmentModel.metrics.map((m) => ({
definesDone: m.definesDone,
description: m.description,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
campaign: { id: canvassAssignmentModel.campId },
end_date: canvassAssignmentModel.end_date,
id: canvassAssignmentModel._id.toString(),
instructions: canvassAssignmentModel.instructions,
metrics: (canvassAssignmentModel.metrics || []).map((metric) => ({
definesDone: metric.definesDone || false,
description: metric.description || '',
Expand Down Expand Up @@ -68,6 +69,7 @@ export async function PATCH(request: NextRequest, { params }: RouteMeta) {

const payload = await request.json();
const {
instructions,
metrics: newMetrics,
title,
start_date,
Expand Down Expand Up @@ -130,7 +132,11 @@ export async function PATCH(request: NextRequest, { params }: RouteMeta) {
type UpdateFieldsType = Partial<
Pick<
ZetkinCanvassAssignment,
'title' | 'start_date' | 'end_date' | 'reporting_level'
| 'title'
| 'start_date'
| 'end_date'
| 'reporting_level'
| 'instructions'
>
>;

Expand All @@ -152,6 +158,10 @@ export async function PATCH(request: NextRequest, { params }: RouteMeta) {
updateFields.end_date = end_date;
}

if (instructions) {
updateFields.instructions = instructions;
}

if (Object.keys(updateFields).length > 0) {
await CanvassAssignmentModel.updateOne(
{ _id: params.canvassAssId },
Expand All @@ -171,6 +181,7 @@ export async function PATCH(request: NextRequest, { params }: RouteMeta) {
campaign: { id: model.campId },
end_date: model.end_date,
id: model._id.toString(),
instructions: model.instructions,
metrics: (model.metrics || []).map((metric) => ({
definesDone: metric.definesDone || false,
description: metric.description || '',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
},
end_date: model.end_date,
id: model._id.toString(),
instructions: model.instructions,
metrics: model.metrics.map((m) => ({
definesDone: m.definesDone,
description: m.description,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
},
end_date: assignmentModel.end_date,
id: assignmentModel._id.toString(),
instructions: assignmentModel.instructions,
metrics: assignmentModel.metrics.map((m) => ({
definesDone: m.definesDone,
description: m.description,
Expand Down
3 changes: 3 additions & 0 deletions src/app/beta/orgs/[orgId]/canvassassignments/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export async function GET(request: NextRequest, { params }: RouteMeta) {
},
end_date: assignment.end_date,
id: assignment._id.toString(),
instructions: assignment.instructions,
metrics: (assignment.metrics || []).map((metric) => ({
definesDone: metric.definesDone || false,
description: metric.description || '',
Expand Down Expand Up @@ -61,6 +62,7 @@ export async function POST(request: NextRequest, { params }: RouteMeta) {

const model = new CanvassAssignmentModel({
campId: payload.campaign_id,
instructions: payload.instructions,
metrics: payload.metrics || [],
orgId: orgId,
reporting_level: payload.reporting_level || 'household',
Expand All @@ -74,6 +76,7 @@ export async function POST(request: NextRequest, { params }: RouteMeta) {
campaign: { id: model.campId },
end_date: model.end_date,
id: model._id.toString(),
instructions: model.instructions,
metrics: model.metrics.map((metric) => ({
definesDone: metric.definesDone || false,
description: metric.description || '',
Expand Down
1 change: 1 addition & 0 deletions src/app/beta/users/me/canvassassignments/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ export async function GET(request: NextRequest) {
},
end_date: assignment.end_date,
id: assignment._id.toString(),
instructions: assignment.instructions,
metrics: assignment.metrics.map((m) => ({
definesDone: m.definesDone,
description: m.description,
Expand Down
29 changes: 29 additions & 0 deletions src/app/canvass/[canvassAssId]/map/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'leaflet/dist/leaflet.css';
import { headers } from 'next/headers';
import { redirect } from 'next/navigation';

import BackendApiClient from 'core/api/client/BackendApiClient';
import { ZetkinOrganization } from 'utils/types/zetkin';
import MyCanvassAssignmentPage from 'features/canvassAssignments/components/MyCanvassAssignmentPage';

interface PageProps {
params: {
canvassAssId: string;
};
}

export default async function Page({ params }: PageProps) {
const { canvassAssId } = params;
const headersList = headers();
const headersEntries = headersList.entries();
const headersObject = Object.fromEntries(headersEntries);
const apiClient = new BackendApiClient(headersObject);

try {
await apiClient.get<ZetkinOrganization>(`/api/users/me`);

return <MyCanvassAssignmentPage canvassAssId={canvassAssId} />;
} catch (err) {
return redirect(`/login?redirect=/canvass/${canvassAssId}/map`);
}
}
4 changes: 2 additions & 2 deletions src/app/canvass/[canvassAssId]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import 'leaflet/dist/leaflet.css';
import { headers } from 'next/headers';
import { redirect } from 'next/navigation';

import MyCanvassAssignmentPage from 'features/canvassAssignments/components/MyCanvassAssignmentPage';
import BackendApiClient from 'core/api/client/BackendApiClient';
import MyCanvassInstructionsPage from 'features/canvassAssignments/components/MyCanvassInstructionsPage';
import { ZetkinOrganization } from 'utils/types/zetkin';

interface PageProps {
Expand All @@ -22,7 +22,7 @@ export default async function Page({ params }: PageProps) {
try {
await apiClient.get<ZetkinOrganization>(`/api/users/me`);

return <MyCanvassAssignmentPage canvassAssId={canvassAssId} />;
return <MyCanvassInstructionsPage canvassAssId={canvassAssId} />;
} catch (err) {
return redirect(`/login?redirect=/canvass/${canvassAssId}`);
}
Expand Down
29 changes: 29 additions & 0 deletions src/app/o/[orgId]/joinformverified/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { headers } from 'next/headers';
import { notFound } from 'next/navigation';

import BackendApiClient from 'core/api/client/BackendApiClient';
import { ZetkinOrganization } from 'utils/types/zetkin';
import JoinFormVerifiedPage from 'features/joinForms/components/JoinFormVerifiedPage';

type PageProps = {
params: {
orgId: string;
};
};

export default async function Page({ params }: PageProps) {
const headersList = headers();
const headersEntries = headersList.entries();
const headersObject = Object.fromEntries(headersEntries);
const apiClient = new BackendApiClient(headersObject);

try {
const org = await apiClient.get<ZetkinOrganization>(
`/api/orgs/${params.orgId}`
);

return <JoinFormVerifiedPage org={org} />;
} catch (err) {
return notFound();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ const CampaignActionButtons: React.FunctionComponent<
onClick: () =>
createCanvassAssignment({
campaign_id: campaign.id,
instructions: '',
metrics: [
{
definesDone: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import {
CircularProgress,
Divider,
List,
ListItem,
ListItemButton,
ListItemText,
Typography,
} from '@mui/material';

import { ZetkinCanvassAssignment } from '../../types';
import useSidebarStats from 'features/canvassAssignments/hooks/useSidebarStats';
import ZUIMarkdown from 'zui/ZUIMarkdown';
import ZUIRelativeTime from 'zui/ZUIRelativeTime';

type Props = {
Expand Down Expand Up @@ -108,6 +110,16 @@ const CanvasserSidebar: FC<Props> = ({ assignment }) => {
</Box>
</Box>
<List>
{assignment.instructions && (
<ListItem sx={{ display: 'block', px: 1 }}>
<ListItemText primary="Instructions" sx={{ pb: 2 }} />
<Divider sx={(theme) => ({ bgcolor: theme.palette.grey[100] })} />
<Typography sx={{ pb: 2, pt: 2 }} variant="body2">
<ZUIMarkdown markdown={assignment.instructions} />
</Typography>
<Divider sx={(theme) => ({ bgcolor: theme.palette.grey[100] })} />
</ListItem>
)}
<ListItemButton href="/my/home" sx={{ px: 1 }}>
<ListItemText primary="My assignments" />
</ListItemButton>
Expand Down
Loading

0 comments on commit 580885e

Please sign in to comment.