Repository navigation
feat(flipcash): adopt ocp 0.8.0 and flipcash2 0.20.0 contracts - #1078
Merged
Merged
Conversation
…nges Build against local client protocol checkouts; pins unchanged. - ocp: add IntentMultiTransfer for SendPublicMultiPayment (one no-privacy transfer per payment) and Client.transferMultiple; handle the new Metadata case in IntentMetadata. - flipcash2: add CommunityService and FlipClient.fetchCommunity for GetCommunity. - Map ReactionUpdate.Action.BOOSTED and RemoveReactionResponse.Result.CANNOT_REMOVE_BOOSTED. - Carry boost_usd on Reactor, EmojiReaction and ReactionUpdate, the chat holdings summary, the activity BoostedReaction and the ChatMetadata.reaction_boost case.
This was referenced Oct 16, 2026
IntentMultiTransfer.Payment.destinationOwner is now non-optional and is always written to the SendPublicMultiPayment metadata, since the server requires it when a destination PRIMARY is auto-opened. Client.transferMultiple takes a non-optional owner too. The intent now also rejects a destination owner equal to the source authority (destinationIsSource) and any payment whose native currency differs from the verified rate's currency (currencyMismatch, compared case-insensitively). Tests cover owner presence, appMetadata set/absent, duplicate owner, owner equal to source authority, destination equal to source vault, mint mismatch, and currency mismatch.
bmc08gt
marked this pull request as ready for review
October 16, 2026 21:59
Add MultiPaymentIntentVectorTests, which builds IntentMultiTransfer from multi_payment_intent.json and asserts actions, compact messages, SHA-256, ed25519 signatures, proto metadata, and the eight rejection cases. The vectors expect destination == source vault and a repeated destination owner to be distinct rules from the others, so IntentMultiTransfer.Error gains duplicateDestinationOwner and a destination equal to the source vault now throws destinationIsSource instead of duplicateDestination. Add a repo-root .swift-version containing "xcode" so swiftly resolves to the Xcode toolchain; a swiftly 6.2.1 toolchain fails to build FlipcashCore/Package.swift against this Xcode's SDK.
This was referenced Oct 17, 2026
bmc08gt
added a commit
that referenced
this pull request
Oct 19, 2026
* origin/main: feat(chat): pick a new group's currency from a full-width row (#1084) fix(core): round Decimal.doubleValue correctly (#1082) feat(flipcash): adopt ocp 0.8.0 and flipcash2 0.20.0 contracts (#1078) chore: bump version to 2026.10.4 (#1086) chore: record 2026.10.3 as the production release (#1089) ci(release-manifest): record every TestFlight build when it processes (#1088) build: update release manifest test: stop four retry-only tests failing on a loaded runner (#1087) fix: clear the 2026.10.3 release test gate (#1085) build: update release manifest fix(chat): cap the attach card's corner radius at 40pt on iOS 26 (#1081) feat(update): check for an update every time the app returns from the background (#1080) build: update release manifest chore(chat): log where the inline photo picker flow stops (#1079) build: update release manifest fix(chat): open the author's profile from the avatar beside a photo (#1077) feat(chat): forward a message through the share sheet (#1076) feat(chat): draw message links as a message card (#1057) # Conflicts: # FlipcashCoreVectors/Tests/FlipcashCoreVectorsTests/MultiPaymentIntentVectorTests.swift
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.
Pins ocp-client-protocol 0.8.0 (code-payments/ocp-client-protocol#11) and flipcash2-client-protocol 0.20.0 (code-payments/flipcash2-client-protocol#28), both published. Each pin moved with its
Package.resolvedentry viaScripts/bump-contract.sh, one commit per package. e3c4224 makesdestinationOwnerrequired on multi-payment intents, matching Android.Adopts the contract changes:
SendPublicMultiPayment:IntentMultiTransfer,TransactionService.transferMultipleandClient.transferMultiple. They emit onenoPrivacyTransferper payment, in order, with a sharedVerifiedState.IntentMultiTransferTestscovers the action list, the metadata, the count limits and duplicate destinations. Decoding the newMetadatacase throwsunsupportedMetadataType, aspublicDistributiondoes.CommunityService,FlipClient.fetchCommunity(mint:owner:), aCommunitymodel andErrorGetCommunity.ErrorRemoveReaction.cannotRemoveBoosted(raw value 3, appended, so nothing renumbered),ReactionFailure.cannotRemoveBoosted, andReactionUpdate.Action.boosted, which applies as an add.boostUSDonReactor/EmojiReactionand the stream reaction update (plusactorBoostUSD),Conversation.holdingsSummary,Activity.boostedReaction, andChatPaymentMetadata.reactionBoost.The multi-payment builder doesn't yet match Android's in its inputs or validation. iOS takes destinations and sends
destination_owneronly when set. Android takes owners, derives the vaults and always sends the owner. Each checks one rule the other doesn't. What goes on the wire agrees. Nothing calls either builder yet.Left for the feature work: the boost payment flow, sorting by
boostUSD, persistingholdingsSummaryandboostedReaction(both readnilafter a restore from the database), and a Community consumer.