Upgrade the used version of Flutter to 3.19.1 and all used packages to
their latest version.
For the Android Version of the app, we also had to adjust some files,
because of the "Deprecated imperative apply of Flutter's Gradle
plugins". The steps we had to run for this can be found at
https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply
We have to add in-app purchases for the iOS, macOS and Android store, so
that users can also get the premium features of the app without using
Stripe for payments.
The in-app purchases are only enabled when a user uses the app with the
default Supabase environment or with the Supabase environment provided
during build time. If a user uses his own Supabase instance, he will not
be able to upgrade to the premium tier via in-app purchases.
We are using RevenueCat for in-app purchases, which automatically sends
all the events for a user to the "revenuecat-webhooks-v1" edge function.
Depending on the received event we can then upgrade / downgrade the
users profile. To be able to use RevenueCat as an additional provider to
Stripe we also had to add a new "subscriptionProvider" provider column
to the "profiles" table, which stores the information via which provider
a user upgraded his account.