Skip to content

Bosu taking over for Manvitha - Event Reschedule Button (replacement for #4276)#5386

Open
SharadhaKasiviswanathan wants to merge 16 commits into
developmentfrom
Manvitha-RescheduleEvent-Button-v2
Open

Bosu taking over for Manvitha - Event Reschedule Button (replacement for #4276)#5386
SharadhaKasiviswanathan wants to merge 16 commits into
developmentfrom
Manvitha-RescheduleEvent-Button-v2

Conversation

@SharadhaKasiviswanathan

Copy link
Copy Markdown
Contributor

Re-creation of PR #4276 (Event Reschedule Button) which was accidentally merged and then reverted via #5378.

This PR adds the event reschedule button functionality to the Community Portal activities.

Changes:

  • ActivityList.jsx: Added reschedule button and goToReschedule callback
  • RescheduleEvent.jsx: New component for rescheduling events
  • RescheduleEvent.module.css: Styles for RescheduleEvent component
  • ReschedulePoll.jsx: New component for reschedule polls
  • routes.jsx: Added routes for RescheduleEvent and ReschedulePoll
  • store.js: Added 'form' to redux-persist whitelist
  • routePermissions.js: Added 'rescheduleEvent' permission

Copilot AI review requested due to automatic review settings July 13, 2026 08:37
@netlify

netlify Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploy Preview for highestgoodnetwork-dev ready!

Name Link
🔨 Latest commit 24fbe88
🔍 Latest deploy log https://app.netlify.com/projects/highestgoodnetwork-dev/deploys/6a65314970ef9e0008d3725c
😎 Deploy Preview https://deploy-preview-5386--highestgoodnetwork-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds Community Portal “event reschedule” functionality by introducing new reschedule UI/screens and wiring them into routing and permissions.

Changes:

  • Adds a Reschedule button to the Community Portal Activities list that navigates to a manage/reschedule page.
  • Introduces RescheduleEvent (create poll + notify) and ReschedulePoll (email link voting) components with shared styling.
  • Updates routing/permissions to expose the new pages and persist form state via redux-persist.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/components/CommunityPortal/Activities/ActivityList.jsx Adds Reschedule button + navigation callback to reschedule/manage route.
src/components/CommunityPortal/Activities/RescheduleEvent.jsx New reschedule modal flow (build options, notify participants).
src/components/CommunityPortal/Activities/ReschedulePoll.jsx New poll voting page driven by query params and API fetches.
src/components/CommunityPortal/Activities/RescheduleEvent.module.css Styles for reschedule modal and poll page (incl. dark mode).
src/routes.jsx Adds routes for reschedule manage page and poll page.
src/utils/routePermissions.js Adds rescheduleEvent permission string to the permissions list.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/routes.jsx
Comment on lines +1008 to +1012
<CPProtectedRoute
path="/communityportal/activities/:activityId/manage"
component={RescheduleEvent}
routePermissions={['rescheduleEvent']}
/>
Comment thread src/components/CommunityPortal/Activities/RescheduleEvent.jsx Outdated
Comment thread src/components/CommunityPortal/Activities/RescheduleEvent.jsx Outdated
Comment thread src/components/CommunityPortal/Activities/RescheduleEvent.jsx Outdated
Comment thread src/components/CommunityPortal/Activities/RescheduleEvent.jsx Outdated
Comment thread src/components/CommunityPortal/Activities/ReschedulePoll.jsx Outdated
Comment thread src/components/CommunityPortal/Activities/ReschedulePoll.jsx Outdated
Comment on lines +2 to 5
import { useState, useEffect, useMemo, useCallback } from 'react';
import { useSelector } from 'react-redux';
import { useHistory } from 'react-router-dom';
import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';
SharadhaKasiviswanathan and others added 2 commits July 13, 2026 03:51
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
SharadhaKasiviswanathan and others added 3 commits July 13, 2026 03:52
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@one-community one-community changed the title feat: Event Reschedule Button (new PR - replacement for #4276) Sharadha K - feat: Event Reschedule Button (new PR - replacement for #4276) Jul 13, 2026
@one-community one-community added the High Priority - Please Review First This is an important PR we'd like to get merged as soon as possible label Jul 13, 2026

@HemanthNidamanuru HemanthNidamanuru left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hi Sharadha,

I tested this PR locally. I am able to access the Reschedule option, but I am unable to create a poll. The calendar used to select dates also needs improvement for better usability. Please refer to the attached video for the issue.

PR.5386.mp4

- Fix RescheduleEvent.jsx:
  - Fix prettier formatting (indentation inconsistencies)
  - Use useParams() to get activityId from URL route params
  - Remove hardcoded placeholder event (_id: '1' fallback)
  - Add eslint-disable for intentional alert() calls
  - Fix Authorization header: only set when token exists
  - Add aria-label to close button (already present, verified)

- Fix ReschedulePoll.jsx:
  - Fix prettier formatting (indentation inconsistencies)
  - Change activityId default from '1' to '' so missing-param
    guard works correctly
  - Add optional chaining for poll.activity?.title and
    poll.activity?.name with fallback

- Fix ActivityList.test.jsx:
  - Wrap component in MemoryRouter to support useHistory()
    used by the reschedule button

- Fix routes.jsx:
  - Remove unsupported routePermissions prop from CPProtectedRoute
    (CPProtectedRoute does not implement permission checking)
Accessibility (2):
- Replace role="button" div with semantic <button> for backdrop
- Replace role="dialog" div with native <dialog> element

Contrast (5):
- Darken disabled button text from #385270 to #142d4c on #9bbce5
  (3 occurrences: .btnPrimary:disabled, .rescheduleButtonDisabled,
  .primaryBtn:disabled)
- Set explicit dark background on .btnCancelDark instead of transparent
- Darken datepicker selected day bg from #2980b9 to #2471a3
Resolves final MAJOR contrast issue: #fff on #007fff was 3.8:1,
now #fff on #06c is 5.6:1 (passes 4.5:1 WCAG AA)

@kzou55 kzou55 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hi Sharadha,

I ran and tested the frontend alongside it's associated backend.

Here's the link to the main review

@HemanthNidamanuru HemanthNidamanuru left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hi Sharadha,

I retested this PR locally. I can access the Reschedule option, but I am still unable to create a poll. The calendar used for selecting dates also continues to need usability improvements. Please refer to the attached video for details.

Image

@one-community one-community added Needs New Developer This is a PR that is partially developed but needs someone new to take it over and finish it. and removed High Priority - Please Review First This is an important PR we'd like to get merged as soon as possible labels Jul 18, 2026
@one-community one-community changed the title Sharadha K - feat: Event Reschedule Button (new PR - replacement for #4276) XXXX taking over for Manvitha - Event Reschedule Button (replacement for #4276) Jul 18, 2026
@BosuBose132 BosuBose132 changed the title XXXX taking over for Manvitha - Event Reschedule Button (replacement for #4276) Bosu taking over for Manvitha - Event Reschedule Button (replacement for #4276) Jul 22, 2026
@sonarqubecloud

Copy link
Copy Markdown

@BosuBose132

Copy link
Copy Markdown

Takeover Update — Bosu Babu Bade

This PR completes the frontend implementation of the Event Reschedule feature.

Changes Made

  • Merged the latest development branch and resolved conflicts.
  • Restored the missing Event Reschedule routes.
  • Fixed modal close behavior for:
    • Close icon
    • Cancel button
    • Escape key
    • Backdrop click
  • Prevented the page from becoming blank after closing the modal.
  • Passed the selected activity information from the Activity List to the reschedule page.
  • Added a confirmation screen displaying:
    • Event name
    • Reschedule reason
    • Proposed date and time options
  • Added successful navigation back to the Activity List after poll creation.
  • Improved light-mode and dark-mode readability.
  • Verified the participant poll and voting workflow.

Related Backend PR

OneCommunityGlobal/HGNRest#1856

How to Test

  1. Start the frontend and backend applications.
  2. Open the Community Portal Activity List.
  3. Select an activity and click Reschedule.
  4. Enter a reason for rescheduling.
  5. Select one or more proposed dates and time slots.
  6. Click Continue.
  7. Verify that the confirmation screen displays the correct event, reason, and options.
  8. Click Create & Notify.
  9. Verify that the request returns HTTP 200.
  10. Verify that the user is returned to the Activity List.
  11. Open /communityportal/ReschedulePoll?a=<activityId>.
  12. Select an option and submit the vote.
  13. Verify that the voting success message appears.
  14. Repeat the workflow in light and dark modes.

Local Testing Note

Email delivery uses dry-run mode locally when OAuth credentials are unavailable. The poll is still created successfully, and the API returns HTTP 200 with emailMode: "dry-run".
Screenshot 2026-07-25 at 3 06 15 PM
Screenshot 2026-07-25 at 3 06 22 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs New Developer This is a PR that is partially developed but needs someone new to take it over and finish it.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants