Skip to content

Feat: Apple Shortcuts integration - #532

Open
mikev-cw wants to merge 8 commits into
RIP-Comm:mainfrom
mikev-cw:feat-shortcuts-pr
Open

mikev-cw wants to merge 8 commits into
RIP-Comm:mainfrom
mikev-cw:feat-shortcuts-pr

Conversation

@mikev-cw

@mikev-cw mikev-cw commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

🎯 Description

This PR adds iOS Shortcuts support for quickly creating wallet transactions through App Intents.
Currently, creating a transaction requires opening the app and manually navigating through the transaction flow. This creates friction, especially for quick everyday expenses.
With this change, users can set up an automation that adds an uncategorized transaction to Sossoldi whenever they pay with their phone using NFC. The transaction can then be reviewed and categorized later inside the app.

I think this could be a low-priority feature, but I'd like to merge it (and maybe silently release) to facilitate testing on a physical device through TestFlight.

📱 Changes

  • Added an iOS AddWalletTransactionIntent (Warning: This is Swift code, which isn't really my strong point...)
  • Connected the shortcut entry point to the existing transaction flow.
  • Updated transaction provider handling so shortcut-created transactions can be saved consistently with in-app transactions even without category.

🧪 Testing Instructions

Changes applicable only on iOS

Unfortunately, this feature isn't easily testable on a simulator. You need to install the app on a physical device through Xcode. Then:

  1. Go to Shortcuts -> Automation -> Add
  2. Choose "Wallet"
  3. Select all cards (or only the ones you want to track in Sossoldi) and all categories -> Next
  4. Search for Sossoldi and tap on the "Add Wallet Transaction" intent. Configure it like this:
Screenshot 2026-07-03 alle 18 19 41
  1. Save and go buy something 🤣

📸 Screenshots / Screen Recordings (if applicable)

This is a real mobile payment transaction I made. As you can see, an uncategorized transaction appears in Sossoldi with the merchant name for easy recognition.

untitled.mp4

@mikev-cw mikev-cw added backend This is backend related low priority labels Jul 3, 2026
@mikev-cw
mikev-cw marked this pull request as draft September 10, 2026 06:17
@mikev-cw
mikev-cw marked this pull request as ready for review September 10, 2026 06:35
@mikev-cw

mikev-cw commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator Author

Updated with:

  • The iOS intent no longer writes directly to SQLite or duplicates the Dart transaction schema. Instead, it writes a small pending Wallet transaction payload (amount, merchant, card, createdAt) into the app container, and Flutter imports it on app start/resume through the existing transaction repository.

  • The Dart importer now owns amount parsing, so locale-specific formats such as 1.500 in EU locales are handled correctly. It also preserves refund/credit signs by importing negative amounts as income, keeps Wallet transactions uncategorized and with no associated bank account, and cleans up the pending file after successful import.

  • Finally, deleting a Wallet-imported transaction no longer crashes when no selected bank account exists.

  • Added "unassigned" account in transactions accounts tab for transactions not assigned to any account yet. Same for unassigned categories.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend This is backend related low priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant