Davide De Rosa
64d1131fdd
Update copyright
...
Closes #473
2024-01-14 14:36:55 +01:00
Davide De Rosa
3fb521a584
Split Apple TV purchase ( #467 )
...
Full version features were listed when purchasing the Apple TV feature,
and this was very misleading.
2024-01-11 17:52:05 +01:00
Davide De Rosa
e21e11b022
Rework how purchasable products are presented ( #465 )
...
Fixes #464
2024-01-11 16:46:52 +01:00
Davide De Rosa
5c5697762b
Add minimal TV app
...
Closes #315
2023-12-31 01:21:38 +01:00
Davide De Rosa
47c6b02c4d
Use FeatureModel in paywall ( #442 )
...
Rather than anonymous tuples.
2023-12-23 12:38:00 +01:00
Davide De Rosa
7d7aaa8b0c
Update paywall ( #441 )
...
Group features and drop platform purchases.
2023-12-23 12:10:34 +01:00
Davide De Rosa
1551b59f21
Use async in ProductManager ( #438 )
...
Drop legacy completion handlers. Push `Task` to the views.
Also:
- Group library tests in a test plan
- Fix a broken library dependency
2023-12-21 08:09:52 +01:00
Davide De Rosa
a0da930d98
Refactor and test ProductManager ( #437 )
...
Carefully drop the StoreKit and Kvitto dependencies for ProductManager
to be testable.
Rebuild test target completely to start writing meaningful tests in
general.
2023-12-20 20:43:39 +01:00
Davide De Rosa
d7ebcb23ba
Split views into extensions ( #321 )
...
Nothing but moving code around to reorganize views into the following
sections (MARK):
- Properties/Body
- Subviews
- Actions
2023-07-03 16:54:43 +02:00
Davide De Rosa
278efaf347
Refactor domain errors ( #310 )
2023-07-02 12:51:50 +02:00
Davide De Rosa
b4ad8dea0d
Do some code clean up
...
- Use guard in validators
- Rename URL.openURL() to URL.open()
- Sort imports (SwiftLint)
- Drop unused VPNProtocolType.allTypes
- Drop unused imports
2023-05-21 11:48:03 +02:00
Davide De Rosa
f06f097f27
Add SwiftLint phase ( #262 )
2023-03-17 21:55:47 +01:00
Davide De Rosa
37354d1b87
Update copyright
2023-03-17 16:56:19 +01:00
Davide De Rosa
092d4f5de2
Drop return in one-line functions
2022-09-04 20:30:55 +02:00
Davide De Rosa
9a8477225e
Refactor library into domain + impl
2022-06-23 23:31:01 +02:00
Davide De Rosa
02213a7c50
Drop truncation hack
2022-05-23 10:10:02 +02:00
Davide De Rosa
48d499569b
Use block versions of Section header/footer
2022-05-01 19:48:24 +02:00
Davide De Rosa
d4484f3307
Simplify layout of in-app products
2022-04-27 18:32:44 +02:00
Davide De Rosa
0b1e465143
Share animation type in theme
2022-04-23 12:11:01 +02:00
Davide De Rosa
6aee88e69a
Refactor theme styles
...
- Hide colors behind styles
- Add "Style" suffix
2022-04-23 11:48:43 +02:00
Davide De Rosa
d1c98006d3
Replace ReloadingContent with implicit animations
...
Infinite loop on init(), but horrible practice in general.
- DonateView
- PaywallView+Purchase
Also show a ProgressView while rows are loading.
DO NOT animate on .products value because animation won't work
if products are empty and stay empty after refresh. Instead,
observe .isRefreshingProducts.
Lastly, to avoid annoying animation when products are actually
available, do not refresh products if non-empty. They certainly
do not change during the application lifecycle.
2022-04-21 11:22:07 +02:00
Davide De Rosa
17a383bc9c
Redo ReloadingContent with @ObservedObject
...
Proper way to listen to changes in elements is observing their
parent.
2022-04-19 21:22:13 +02:00
Davide De Rosa
bf65f76401
Merge project into iOS + macOS
...
Share views with both platforms initially. Will split specific
views step by step.
2022-04-19 16:14:23 +02:00