Adding an onboarding view to outline new features in v3 will have the added benefit of presenting an interstitial while account migration happens in the background. Rough imperative outline:
User opens the app
Check for the presence of values in Preferences.authenticatedAccountIds
If the array isn't empty, the user has authenticated Zeitgeist in a previous version
Present the onboarding view with list of new features
When this view appears, migrate accounts (via new function migrateAccount(Account.ID) -> Account)
Adding an onboarding view to outline new features in v3 will have the added benefit of presenting an interstitial while account migration happens in the background. Rough imperative outline:
Preferences.authenticatedAccountIds
migrateAccount(Account.ID) -> Account
)