Skip to content

Conversation

@subsubl
Copy link
Owner

@subsubl subsubl commented Dec 1, 2025

Summary

Adds viewing-wallet (view-only, no private key) export functionality to Spoke settings UI, enabling users to share encrypted wallet files for observation purposes.

Changes

  • Node.ExportViewingWallet(string? destPath = null) — Static helper method that calls IxianHandler.getWalletStorage().getRawViewingWallet() and writes encrypted bytes to disk (default: Config.spokeUserFolder/wallet.view.ixi)
  • WalletAdapter.ExportViewingWallet() — Convenience wrapper for UI callers; returns exported path or null on failure
  • SettingsPage.xaml — Added "Export View-Only Wallet" button
  • SettingsPage.xaml.cs — Added OnExportViewingWalletClicked handler; calls export and shows success/failure alerts
  • SFileOperations.cs — New cross-platform file-save helper using CommunityToolkit.Maui.Storage.FileSaver (follows Spixi pattern)
  • specs/main/quickstart.md — Added "Exporting a View-Only Wallet" section with file location, usage notes, and developer commands

Testing

  • Spoke.Core and Spoke.Tests build successfully (verified locally)
  • Implementation compiles; export method correctly references IxianHandler.getWalletStorage() from Ixian-Core
  • Unit test added to feature branch (CI runners will execute)

Sync Impact

  • ✅ No breaking changes; new feature only
  • ✅ Follows Ixian-Core wallet backup/export patterns (getRawViewingWallet())
  • ✅ Cross-platform file save via existing CommunityToolkit.Maui dependency
  • ✅ Backward compatible with existing wallet storage formats (v1, v3, v4, v5)

Related

  • References: Ixian-Core WalletStorage.getRawViewingWallet(), Config.spokeUserFolder
  • Docs: specs/main/quickstart.md updated with export usage guide
  • CI: GitHub Actions workflow (ci-dotnet-maui.yml) will run full test suite

@subsubl subsubl merged commit 568f98f into main Dec 1, 2025
0 of 5 checks passed
@subsubl subsubl deleted the feature/wallet-export branch December 7, 2025 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants