Skip to content

Mac: About tab loses both cross-promotion sections — same root cause as the #32 StoreKit crash #38

Description

@Kemmey

What

On Mac Catalyst the About tab renders nothing where "More from Dansk Rumskrot" and "Friends of the App" should be. Both views compile to EmptyView().

AuthAppForTesla/View/About/AboutViewMoreApps.swift and AuthAppForTesla/View/About/AboutViewFooter.swift are both shaped like this:

var body: some View {
#if !targetEnvironment(macCatalyst)
    VStack(spacing: AppSpacing.sm) {
        Text("More from Dansk Rumskrot")
        
    }
#else
    EmptyView()
#endif
}

AboutView still composes them in order — AboutViewHeader, AboutViewShortcuts, AboutViewMoreApps, AboutViewFooter, TipJarView — so on Mac the tab silently collapses to header, shortcuts, and tip jar. Every link to ManaScope, PairPanic, Rumskrot Remote, Rumskrot Terminal, TeSlate, Teslascope, the Tesla iOS Shortcuts repo, and Autarkie Manager is absent from the Mac build.

Why it is gated off, and why that is now fixable

Both sections render AboutViewFriend, whose tap handler calls presentStoreProduct(appID:) — a raw SKStoreProductViewController presentation. That is precisely the code crashing in #32.

So the #if gates are not a Mac design decision. They are a workaround for a StoreKit presentation problem, applied by disabling the feature on the platform where it was noticed.

Fixing #32 and fixing this are the same change. If #32 is resolved by taking the openURL route to apps.apple.com — one of the two options proposed there, and the one commit 47096fc originally chose — then AboutViewFriend no longer touches SKStoreProductViewController at all, the reason for the gates disappears, and both #if !targetEnvironment(macCatalyst) / #else EmptyView() blocks can simply be deleted. The Mac build gets its cross-promotion back as a side effect of fixing the crash.

openURL is also the better Mac behaviour on its own merits: on macOS it hands off to the Mac App Store app, which is what a Mac user expects from an app link.

Proposed change

  1. Resolve [TestFlight] crash · build 53 · SKStoreProductViewController throws on teardown when tapping a friend app #32 by replacing presentStoreProduct(appID:) with openURL to the apps.apple.com product URL.
  2. Delete the #if !targetEnvironment(macCatalyst) / #else EmptyView() wrappers in both AboutViewMoreApps.swift and AboutViewFooter.swift.
  3. Check the LazyVGrid column count and the fixed .frame(height: 140) on the friend cells at Mac window widths — those were tuned for a phone-width column and will want revisiting, especially alongside Mac: adopt the Mac interface idiom instead of "Scaled to Match iPad" #36.

Sequence this after #32.


Posted by agent — anything without this footnote was written by Kim.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmacMac Catalyst build

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions