Repository navigation
feat(analytics): catalogue iOS-only events and correct drift notes - #1891
Merged
Merged
Conversation
Create Account (LoginViewModel), Auto-login complete (AuthManager), Currency Launch With Reserves/Currency (CurrencyCreatorViewModel) and Token Purchase With Currency (SwapViewModel). Drops the stale catalogue note that Android reports a held-currency buy as Reserves.
bmc08gt
force-pushed
the
feat/analytics-ios-reconcile
branch
from
October 30, 2026 03:23
5e8b2b9 to
0fc8ed0
Compare
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.
iOS sends eleven event names that the shared catalogue (
libs/analytics-events/events.toml) doesn't have, and five catalogue notes no longer match either app. This PR closes both gaps in the catalogue and wires the Android events that have a flow (below). Draft until the remaining Button events are wired.iOS names to catalogue outcome
Auto-login completeCreate AccountOwner Public Key. That property is a wallet identifier and isn't approved for the shared contract. iOS sends it today; it stops when iOS moves to the builder (drift note added).Button: Buy With CurrencyButtonlist valueBUY_WITH_CURRENCY. Name unchanged.Button: GiveButtonlist valueGIVE. Name unchanged.Gallery Scan: Code FoundGallery Scan: Succeeded. No iOS name added. Series break on the iOS release that migrates.Gallery Scan: Nothing FoundGallery Scan: Failed. No iOS name added. Series break on the iOS release that migrates.Token Info: Opened From GiveTokenInfoSourcevalueGIVE. The placeholder expands to the same name, so history continues.Token Info: Opened From SendTokenInfoSourcevalueSEND. Same name, history continues.Token Purchase With CurrencyPurchaseMethodvalueCURRENCY. Same name, history continues.Currency Launch With ReservesCurrency Launch With {method}, new listLaunchMethod. Properties match iOS: State, Mint, Payment Mint, Fiat, Currency, Error.Currency Launch With CurrencyCURRENCYvalue.The series break for the two Gallery Scan names comes with a loss of detail. iOS's
Type(Kik or QR) and its three-wayStatehave no counterpart on Android'sSucceededandFailed. The existing drift notes on those events now say iOS will migrate and the old series ends.Token InfoGive and Send have no Android flow. Android's Give screen opens Add Money (Give Shortfall) instead, so both values carry a drift note.Button: Giveis the iOS Currency Info button that opens its send-to-person amount screen, which maps to Android's Send tile.A new Swift typealias is added for
LaunchMethodandCurrencyLaunchEvents.Note fixes
Each was checked against iOS
origin/mainand this branch's Android code.Deeplink: Parse: iOS's Type list now has Profile (was Username), ChatMessage and GroupInvite. iOS reports a parse only for links that resolve to an action (DeepLinkController.swift:70), so the failure form (parseFailed) gets a drift note that iOS never sends it.Deeplink: Routed: "every kind" was wrong. Access-key and verify-email links never report a route, and the rest report only when a user is logged in.GroupInviteSheetSource: the iOS head card was removed incb036f487, and iOS sends Profile fromChatProfileScreenandJoinRequestsScreen. Android's transcript CTA was also dropped (feat(chat): drop the card at the start of chat history #1707) and only sends Profile, soChatis now sent by neither app. The value stays (removing it changes the generated enum) with a drift note.GroupInviteSourceChat Card: this differs from the request. iOS still sends Chat Card when a group card in a chat is tapped (ConversationScreen.swift:1903,openLinkCard), the same as Android (MessengerScreenChatAction.OpenGroup). iOS sends Link only for a card whose link carries no chat id, which goes through the deep-link path. The drift note says that instead of "reports Link".Group: Joined: now says neither app sends it for a join from an invite link. iOS's invite join (SessionAuthenticator.swift:962) and Android's (InviteLandingViewModelviaGroupInviteLanding.join) never call it.Where to send it
Android has each of these flows. Nothing sends them yet. iOS gets them only after the next Publish SharedCore release.
Auto-login completeAuthManager, theLookupResult.ExistingAccountFoundbranch, aftersoftLogin(...)succeeds.Create AccountLoginViewModel, theEvent.CreateAccounthandler, next to the existingButton: Create Account, beforeauthManager.createAccount().Button: Buy With CurrencySwapViewModel,Event.OnBuyConfirmed, in the branch where the funding token isn't USDF.Button: GiveCurrencyInfoContentV2, theCurrencyActionTile.Sendtap.Token Purchase With CurrencySwapViewModel.trackTransaction. It maps any funding source other than Phantom or Coinbase to Reserves today, so a held-currency buy needs its own branch.Currency Launch With …CurrencyCreatorViewModel: thelaunchTokenresult andcompleteLaunch/finalizeLaunch. Reserves when the funding mint is USDF, otherwise Currency.Token Info: Opened From Give/SendNot included
Button: Buy With CurrencyandButton: Give; both keep their drift notes.Chatvalue fromGroupInviteSheetSource.Button: Allow CameraandButton: Sell, which iOS also sends as native names. They weren't in the audit's list of eleven.As wired on Android
Create AccountLoginViewModel,Event.CreateAccountpipelineButton: Create Account, beforeauthManager.createAccount().Auto-login completeAuthManager.init,LookupResult.ExistingAccountFoundbranchsoftLogin(...)succeeds, beforeonInitialized().Currency Launch With Reserves/CurrencyCurrencyCreatorViewModel.completeLaunchviatrackLaunchfinalizeLaunch), Failure on a non-timeout poll error, a failed resolve, or a failed slow poll. Reserves when the funding mint is USDF, otherwise Currency. Fiat and Currency are the launch cost converted to the preferred currency. A failure to submit the launch (launchTokenerror) sends nothing, as on iOS.Token Purchase With CurrencySwapViewModel.trackTransactionButton: Buy With Currency,Button: GiveToken Info: Opened From Give/SendAuthManagernow takesFlipcashAnalytics, andCurrencyCreatorViewModeldoes too. TheToken Purchase With {method}drift note no longer says Android reports a held-currency buy as Reserves.