Skip to content

Added Volunteer management UI - #416

Merged
stasel merged 1 commit into
mainfrom
frontend/volunteer-ui
Oct 7, 2026
Merged

stasel merged 1 commit into
mainfrom
frontend/volunteer-ui

Conversation

@stasel

@stasel stasel commented Oct 7, 2026 •

Copy link
Copy Markdown
Member
image image image

Copilot AI balanced review requested due to automatic review settings October 7, 2026 10:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Cached searches remain stale after volunteer mutations, and table profiles lack keyboard-accessible navigation.

Review effort: Balanced
Findings: 2 Medium severity

Open (2)
What changed in this PR

Replaces the volunteer placeholder with management screens integrated into Dojo’s shared profile components.

Changes:

  • Adds a paginated overview, creation dialog, and editable volunteer profiles.
  • Connects volunteer APIs, routes, and profile pictures.
  • Extends shared types and documentation for volunteers.
File Description
README.md Documents volunteer management.
client/​src/​routes/​routes.tsx Adds overview and profile routes.
client/​src/​layout/​Sidebar/​constants.ts Updates volunteer navigation.
client/​src/​features/​volunteers/​VolunteerStatus.ts Defines statuses and labels.
client/​src/​features/​volunteers/​VolunteersPage.tsx Removes the placeholder.
client/​src/​features/​volunteers/​VolunteersOverviewPage.tsx Adds the overview page.
client/​src/​features/​volunteers/​VolunteerProfilePage.tsx Loads volunteer profiles.
client/​src/​features/​volunteers/​Volunteer.ts Defines domain and editing types.
client/​src/​features/​volunteers/​profile/​VolunteerProfile.tsx Coordinates tabs and editing.
client/​src/​features/​volunteers/​profile/​VolunteerInfo.tsx Adds editable overview fields.
client/​src/​features/​volunteers/​profile/​VolunteerHeader.tsx Displays identity and picture controls.
client/​src/​features/​volunteers/​data/​volunteer-queries.ts Adds list and detail queries.
client/​src/​features/​volunteers/​data/​mutations.ts Adds create and update mutations.
client/​src/​features/​volunteers/​data/​keys.ts Defines cache keys.
client/​src/​features/​volunteers/​components/​VolunteerStatusChip.tsx Displays volunteer status.
client/​src/​features/​volunteers/​components/​VolunteersTable.tsx Displays volunteer rows.
client/​src/​features/​volunteers/​components/​AddVolunteerDialog.tsx Adds validated creation form.
client/​src/​features/​volunteers/​api/​types.ts Defines API payloads.
client/​src/​features/​volunteers/​api/​mapper.ts Maps domain and API data.
client/​src/​features/​volunteers/​api/​api.ts Implements volunteer API calls.
client/​src/​features/​search/​models/​search-result.ts Adds volunteer result type.
client/​src/​features/​search/​components/​SearchResultsList.tsx Generalizes the component comment.
client/​src/​features/​profile-picture/​data/​mutations.ts Supports volunteer picture caching.
client/​src/​features/​interactions/​Interaction.ts Defines volunteer interaction choices.
client/​src/​data/​types/​ProfileType.ts Adds volunteer profile API mapping.
client/​src/​components/​DropdownSelect.tsx Supports an empty selection.
CLIENT_STRUCTURE.md Documents volunteer feature structure.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread client/src/features/volunteers/components/VolunteersTable.tsx
Comment on lines +5 to +25
import { volunteerKeys } from './keys';

/** Hook to save the edited fields of a volunteer profile. */
export const useUpdateVolunteer = (volunteerId: string) => {
const queryClient = useQueryClient();

return useMutation({
mutationFn: (changes: VolunteerChanges) => updateVolunteer(volunteerId, changes),
// The response is the saved volunteer, so the profile shows it without loading it again.
onSuccess: (volunteer) => queryClient.setQueryData(volunteerKeys.details(volunteerId), volunteer),
});
};

/** Hook to create a new volunteer. */
export const useCreateVolunteer = () => {
return useMutation({
mutationFn: (newVolunteer: NewVolunteer) => createVolunteer(newVolunteer),
// A failed request may still have created it, and a retry would then fail on the taken email.
retry: false,
});
};
@stasel
stasel merged commit d15ad78 into main Oct 7, 2026
4 checks passed
@stasel
stasel deleted the frontend/volunteer-ui branch October 7, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants