Skip to content

Terms and Privacy have no destination, and the paywall now needs them #448

Description

@maximsan

The Plus gate (#89) renders Terms of use and Privacy policy under its purchase action, because the App Store requires both of a non-consumable. Neither goes anywhere — they are drawn disabled, since a link that looks live and does nothing is the worse of the two failures.

docs/design/07-components.md §7.3 already records the same defect on the About screen: all 8 About/Help rows are onClick={() => {}} stubs in the design, "and none of them appeared in §12". Two of those eight are these.

What changed is the consequence. Before the gate they were absent from a screen nobody could reach; now they sit on the surface a learner reads at the moment they decide to pay, and App Review checks exactly that surface.

Distinct from #166, which is the PrivacyInfo.xcprivacy manifest — a build artifact, not a page a learner can open.

Where this stands

PR #591 built everything except the pages themselves. termsUrl and
privacyUrl are two constants in lib/core/config/support_contact.dart, read
through providers by the paywall, the gate sheet and About. While they are
null the paywall's links are drawn disabled — their absence there is a
store-review failure — and About draws no legal row at all. Setting either
constant makes its link live everywhere at once, which a widget test proves.

What is left is the hosting, and only that: create the two pages, put
their URLs in those constants. Both criteria below are the live behaviour, so
neither can be ticked until they exist.

What is owed

  • Two real, hosted URLs. Still owed.
  • A way to open them — the same one the About screen's rows will use, so this is decided once. Built: LinkOpener, behind one provider.
  • The gate's links enabled, and the About rows pointed at the same destinations. Built: both read the same two constants.

Acceptance

  • Terms and Privacy open real pages from the Plus gate
  • The About screen's two rows resolve to the same URLs, not a second pair

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 working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions