User Interface medium complexity mobile
2
Dependencies
0
Dependents
0
Entities
0
Integrations

Description

Full-screen detail view for a certificate expiry notification, available to both the peer mentor and coordinator. Coordinators see an additional action to trigger a manual course enrollment prompt, linking directly to the course administration feature.

Feature: Certificate Expiry Notifications

notification-detail-view

Summaries

The Certificate Expiry Notification Detail View accelerates coordinator response to certification lapses by surfacing complete context and direct action controls within a single screen. Rather than requiring coordinators to navigate through separate administration flows to address an expiry, this component delivers actionable information and a direct enrollment trigger at the precise point of awareness. This reduces the time between detecting a certification problem and initiating resolution, minimizing the window during which a mentor may be operating with a lapsed certificate. The result is lower program risk, faster administrative response, and a more confident coordinator experience — all contributing to stronger program quality and participant safety outcomes.

This medium-complexity mobile component requires coordination across two distinct user roles — peer mentors and coordinators — with conditional UI logic gating coordinator-only actions behind role authorization checks. Both upstream dependencies, expiry-notification-banner and expiry-status-indicator, must be resolved before this component can be fully integrated. The role-conditional rendering significantly expands the test surface: test cases must cover the mentor read-only view and the full coordinator view with enrollment trigger and lapse acknowledgment actions independently. The `navigateToCourseAdministration()` integration also requires the course administration feature to be sufficiently complete for navigation smoke testing.

Plan additional time for integration testing across the acknowledgment and enrollment trigger flows before this item can be accepted.

Implements a full-screen detail view via `renderNotificationDetail(notification: ExpiryNotification)`, conditionally rendering coordinator-specific actions returned by `getCoordinatorActions() -> List` based on the authenticated user's role from the auth context — role must not be passed as a prop to prevent privilege escalation. Depends on expiry-notification-banner and expiry-status-indicator for consistent status display. The `onTriggerEnrollmentPressed(mentorId: String)` handler delegates to `navigateToCourseAdministration(mentorId)` for deep-linking to the course administration feature, while `onAcknowledgeLapsePressed(notificationId: String)` writes acknowledgment state back to the notification record via the notifications service. Data model dependencies include peer_mentor_profile, certificate, and notification tables.

Operates exclusively in the mobile execution context. Role-conditional branching carries the highest unit test surface area for this component.

Responsibilities

  • Display full notification details including expiry date and mentor info
  • Show coordinator-specific action to trigger course enrollment
  • Allow coordinator to acknowledge the lapse
  • Navigate to course administration for enrollment

Interfaces

renderNotificationDetail(notification: ExpiryNotification)
onTriggerEnrollmentPressed(mentorId: String)
onAcknowledgeLapsePressed(notificationId: String)
navigateToCourseAdministration(mentorId: String)
getCoordinatorActions() -> List<ActionItem>

Relationships

Dependencies (2)

Components this component depends on