Notification-based Invitation System #32
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
foravo/milestone-proof-20260519050317#32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Imported from GitHub issue
StanfordCS194/spr26-Team-22#49.Source: https://github.com/StanfordCS194/spr26-Team-22/issues/49
Original author: @nriedman
Original state: closed
Summary
Based on the feedback we got from the Customer Discovery interviews, we decided to move away from a pre-filled iMessage text as the mechanism for sending an invitation. Instead, we should use Push notifications between users, assuming all parties have the app installed. This way, when User A accepts a suggested activity with User B, the following occurs in order:
Coffee with **User A**as an activity in their upcoming dashboard.Coffee with **User B**as an activity in their upcoming dashboard.We can continue to iterate on the specifics of the UI for these steps (for example by adding "Accept" or "Decline" as a quick action linked to the push notification), but for the purposes of Demo Day 1, the basic flow from the perspective of User A is all we need.
Requirements
Implement the local push notification system from the perspective of User A. When User A accepts a suggestion, they see the following:
For Demo Day 1, we simplify the system to use local notifications. In the future, we will need to make the system more complex by sending real push notifications across devices. With this in mind, the system should be designed in an extendible way so that we can move to remote (e.g. server driven) push notifications without significantly refactoring other parts of the app.
Notes
This will progress in conjunction with work on #48.
Imported from GitHub issue comment
StanfordCS194/spr26-Team-22#49:4331806491.Source: https://github.com/StanfordCS194/spr26-Team-22/issues/49#issuecomment-4331806491
Original author: @nriedman
@jasagye I've been working on #48, and did a bit of thinking about the interface between our two features. To decouple our components and allow you to make decisions about how event updates are handled on the system side, I was thinking we could do a Publisher-Subscriber-like system.
The Upcoming Events dashboard is a consumer that subscribes to event updates. The dashboard does this by looking at the SwiftData-backed
ScheduledHangout, and updating the UI when a new computed propertystatuschanges.statusis calculated based on the state of theScheduledHangout, so is consistent by construction.Then, on the other side, the Invitation System is a Publisher. It notifies all other components that are subscribed to a given
ScheduledHangoutby modifying the hangout's state (e.g. the Invitation System knows when an invitee has accepted an invitation, and will increment a counter in theScheduledHangout). The specifics would be up to you on the Publisher side.I mention this here to see if you're down to design the interface between our features this way! I like it because it decouples our two systems (or any systems that need to communicate about
ScheduledHangouts), but wanted to check in with you before moving forward. Let me know if you have any thoughts!!