P2 Stream H: standalone TaskSuggestionsScreen

Port iOS TaskSuggestionsView as a standalone route reachable outside
onboarding. Uses shared suggestions API + accept/skip analytics in
non-onboarding variant.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-04-18 13:10:47 -05:00
parent 7d71408bcc
commit 19471d780d
19 changed files with 2161 additions and 3 deletions

View File

@@ -90,7 +90,7 @@
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" />
<!-- Notification Action Receiver -->
<!-- Legacy Notification Action Receiver (widget-era task state actions) -->
<receiver
android:name=".NotificationActionReceiver"
android:exported="false">
@@ -103,6 +103,24 @@
</intent-filter>
</receiver>
<!-- iOS-parity push action receiver (P4 Stream O).
Handles Complete/Snooze/Open for task_reminder & task_overdue, and
Accept/Decline/Open for residence_invite. Wired to notifications
built by FcmService.onMessageReceived. Also receives the delayed
SNOOZE_FIRE alarm from SnoozeScheduler. -->
<receiver
android:name=".notifications.NotificationActionReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.tt.honeyDue.action.COMPLETE_TASK" />
<action android:name="com.tt.honeyDue.action.SNOOZE_TASK" />
<action android:name="com.tt.honeyDue.action.OPEN" />
<action android:name="com.tt.honeyDue.action.ACCEPT_INVITE" />
<action android:name="com.tt.honeyDue.action.DECLINE_INVITE" />
<action android:name="com.tt.honeyDue.action.SNOOZE_FIRE" />
</intent-filter>
</receiver>
<!-- Widget Task Complete Receiver -->
<receiver
android:name=".widget.WidgetTaskActionReceiver"