Add persistent pending-transaction tracking with local notifications#60
Open
Jim8y wants to merge 3 commits into
Open
Add persistent pending-transaction tracking with local notifications#60Jim8y wants to merge 3 commits into
Jim8y wants to merge 3 commits into
Conversation
…tions Add a PendingTransactionService (DI singleton) that tracks broadcast transactions to a terminal state (HALT/FAULT) and raises a local notification on confirm/fail. Unlike SendingPage's in-page poll, tracking lives for the app process and is persisted in the existing Settings store, so it survives navigation, backgrounding and relaunch. Wires Plugin.LocalNotification, POST_NOTIFICATIONS, startup permission request + resume, and enqueues on send (SendPage/SendNFTPage). Builds for net10.0-android (0 errors).
There was a problem hiding this comment.
Pull request overview
Adds an app-wide, persisted pending-transaction tracker that continues confirmation polling beyond the Send flow and surfaces final outcomes via OS local notifications.
Changes:
- Introduces
PendingTransactionService(singleton) to persist and resume tracking of broadcast tx hashes and poll RPC until a terminal state. - Integrates
Plugin.LocalNotification(builder + Android permission) and requests notification permission at startup. - Enqueues pending tracking after broadcasting transactions from
SendPageandSendNFTPage, and addsTransactionFailedlocalized string.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| OneGateApp/Services/PendingTransactionService.cs | New persisted polling loop + local-notification dispatch for tx confirm/fail outcomes |
| OneGateApp/Properties/Strings.resx | Adds TransactionFailed base string |
| OneGateApp/Properties/Strings.zh-Hans.resx | Adds Simplified Chinese TransactionFailed |
| OneGateApp/Properties/Strings.zh-Hant.resx | Adds Traditional Chinese TransactionFailed |
| OneGateApp/Properties/Strings.Designer.cs | Adds Strings.TransactionFailed accessor |
| OneGateApp/Platforms/Android/AndroidManifest.xml | Declares POST_NOTIFICATIONS permission |
| OneGateApp/Pages/SendPage.xaml.cs | Enqueues tx hash for background tracking after broadcast |
| OneGateApp/Pages/SendNFTPage.xaml.cs | Enqueues tx hash for background tracking after broadcast |
| OneGateApp/OneGateApp.csproj | Adds Plugin.LocalNotification package reference |
| OneGateApp/MauiProgram.cs | Registers plugin + DI singleton for pending tracking |
| OneGateApp/App.xaml.cs | Starts pending-tracking service on app startup |
Files not reviewed (1)
- OneGateApp/Properties/Strings.Designer.cs: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Contributor
Author
|
Handled the open #60 review threads. Changes:
Validation:
Screenshots:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A
PendingTransactionService(DI singleton) that tracks each broadcast transaction to a terminal state and raises an OS local notification on confirm/fail.Unlike
SendingPage's in-page poll (which is cancelled the moment you leave the page), this:transactions/pending), resumed on startup.getapplicationlog+VMState.HALT(a reverted FAULT tx notifies as failed, not succeeded).How
Services/PendingTransactionService.cs; registered as a singleton inMauiProgram.Plugin.LocalNotification14.1.1 (net10.0-compatible) +builder.UseLocalNotification().POST_NOTIFICATIONSpermission; startup requests notification permission and resumes pending tracking (Appctor).SendPage/SendNFTPage.Verified
Builds clean for net10.0-android (0 errors; the 6 warnings are pre-existing SQLitePCLRaw NU1903 advisories). iOS/maccatalyst not buildable in this environment (no Xcode), but the platform specifics are handled by Plugin.LocalNotification.
Scope / notes
LaunchDAppPagedAPI) are not yet enqueued — easy follow-up.