Commit Graph

2948 Commits

Author SHA1 Message Date
Davide 14aae4e02a
Define common PreferenceProtocol 2024-11-27 09:40:32 +01:00
Davide b3c90b6802
Drop animations on reload servers on iOS 2024-11-27 01:22:54 +01:00
Davide 4fcac3c95a
Fix modals not re-appearing in iOS 16
- Paywall
- Error handler

Expose setLater/enableLater.
2024-11-27 01:22:53 +01:00
Davide a92c2c2c64
Fix profile menus
- Omit duplicate/delete from current profile
- Replace .infoButton with .installedProfile if current
- Drop dots from direct actions
- Disable trailing dots on iOS/tvOS
- Disable "Connect to" if ineligible (decouple to own view)
2024-11-27 01:20:42 +01:00
Davide 91f4e510c4
Split app and UI domains (#949)
CommonLibrary had some undesired knowledge of UI. Split AppPreference
and UIPreference. Then move some more stuff from AppUI* to UILibrary.

WARNING: this forgets existing UI preferences (e.g. favorite servers).
2024-11-26 21:21:49 +01:00
Davide 20273e651f
Bump version 2024-11-26 20:12:03 +01:00
Davide d8753f21da
Different styles for profile menu based on context (#947)
Hide "Duplicate" and "Delete" from the info button menu because they are
disruptive actions, misclick is likely.
2024-11-26 20:10:03 +01:00
Davide e0f16cbb3e
Mitigate overlap of sheet/alert during onboarding 2024-11-26 19:19:15 +01:00
Davide b34019e4eb
Add provider profile from toolbar (#946)
Create profile with a provider module and an on-demand module (disabled)
to speed up initial provider selection and configuration. Supports
OpenVPN for now.

Fixes #899
2024-11-26 19:14:56 +01:00
Davide 2dad04f241
Do not present server selector if ineligible (#945)
Verification was only performed for interactive login, not for provider
server selection. Do that before a connection attempt, so that the
paywall always appears first.
2024-11-26 18:44:23 +01:00
Davide 7d8055f044
Do not dismiss abruptly on "Donate" error 2024-11-26 17:28:49 +01:00
Davide b455701daa
Improve appearance of "Purchased"
- Animate load
- Handle load errors
2024-11-26 17:28:19 +01:00
Davide aa9da8c9e0
Bump version 2024-11-26 16:52:02 +01:00
Davide b9f3500f31
Fix regressions in L&F (#944)
- Text appearance on iOS/macOS (broken by #943)
- Visual ambiguity in "Purchased" when no feature is eligible
- "Purchased" must be a form on macOS
2024-11-26 16:50:37 +01:00
Davide 4d84bd1dd6
Bump version 2024-11-26 16:34:35 +01:00
Davide ed1d78d424
Add manual flow to run Xcode tests 2024-11-26 16:24:12 +01:00
Davide 40741ebf2b
Receive tests on ImmediateScheduler 2024-11-26 16:20:16 +01:00
Davide 1a6e566714
Bump version 2024-11-26 15:55:50 +01:00
Davide 80d40c3161
Improve TV settings screen (#943)
- Show detail side by side rather than navigate
- Fix scrolling in purchased view
2024-11-26 15:55:04 +01:00
Davide e49e8881b3
Share tests timeout and set to .infinity 2024-11-26 12:33:28 +01:00
Davide 9b8ebc10a8
Bump version 2024-11-26 11:28:44 +01:00
Davide 829bde865e
Retain on-demand flag on save profile (#942)
Regressed recently in library. When a profile was "Inactive
(on-demand)", saving it would revert to "Inactive" because the
underlying manager was being disabled.
2024-11-26 11:05:02 +01:00
Davide 55dbd5cb84
Try to fix wait() in ProfileManager tests
In case condition is immediately met.
2024-11-26 10:33:30 +01:00
Davide 8ec6f90077
Connect on provider server selection (#941)
Unless profile is current and active, in which case AppContext does it
under the hood.
2024-11-26 10:30:30 +01:00
Davide 1c1d2502c3
Show quick profile menu rather than just edit (#940)
"Edit" is a less frequent action than "Select provider server". Offer a
common place for quick actions.

One step towards #933
2024-11-26 09:42:47 +01:00
Davide 19da40d3f8
Simplify VPNProviderServerView components (#939)
Merge former ContainerView into main view and define platform-specific
subviews:

- ContainerView (composition of content + filters)
- ContentView
- FiltersView
2024-11-26 09:20:00 +01:00
Davide b357d985ed
Add "Refresh infrastructure" in server lists (#938)
Refactoring:

- Split Providers and VPN views
- Rename VPNProviderServerView subviews
- Reuse RefreshInfrastructureButton

Closes #929
2024-11-26 01:04:58 +01:00
Davide 8b043d8a4f
Refactor provider server views
- Rename ServersView to ContainerView
- Rename ServersSubview to ContentView
- Split parent extensions and content
- Move container handlers to methods suggesting logic
- Drop dup previews
2024-11-26 00:18:08 +01:00
Davide ca54d8f41a
Perform onboarding steps on upgrade (#936)
Store the current step in a linear list of onboarding steps that can
increase with each app upgrade.

Fixes #930 
Fixes #931 
Fixes #932
2024-11-25 21:55:31 +01:00
Davide 7f7e591616
Add view in "About" about purchased products (#935)
Closes #897
2024-11-25 19:17:18 +01:00
Davide 07b4e786c3
Localize WireGuard errors (#934)
Fixes #894
2024-11-25 11:34:31 +01:00
Davide 7e49493d75
Improve provider servers responsiveness on iOS (#927)
Pre-compute servers by country code.

Fixes #898
2024-11-25 10:18:10 +01:00
Davide 9c93158a3d
Add missing template headers 2024-11-25 10:02:01 +01:00
Davide 4cbe954789
Add some preliminary templates for manual tests (#926)
- In-app
- Migration
- Release
- Platforms
2024-11-25 09:57:45 +01:00
Davide f83a35e35d
Bump version 2024-11-24 21:21:18 +01:00
Davide fa293656f4
Fix missing beta check on tvOS (#925)
Reuse the same receipt trick from iOS.

Also, fix a regression in IAPManager.fetchLevelIfNeeded() from #903,
where a guard after an await was dropped leading to reentrancy issues.
2024-11-24 21:19:43 +01:00
Davide a6f132a6e6
Bump version 2024-11-24 20:31:29 +01:00
Davide 16f0047046
Raise other test timeouts 2024-11-24 20:31:17 +01:00
Davide f0ed7af62c
Bump version 2024-11-24 20:22:00 +01:00
Davide 6615b69d44
Bump timeout in ProfileManagerTests 2024-11-24 20:21:39 +01:00
Davide 1431cc167c
Parallelize all tests 2024-11-24 20:15:10 +01:00
Davide 5fd3e3badd
Bump version 2024-11-24 20:02:21 +01:00
Davide 2aa91eedb0
Simplify paywall entities (#923)
- PaywallView is the paywall content
- PaywallModifier attaches paywall with optional confirmation
- PurchaseRequiredButton presents paywall explicitly
- PaywallReason is the compound input

Refactoring:

- PurchaseRequiredButton takes a custom view
- PurchaseAlertModifier was merged into PaywallModifier
- PurchaseButtonModifier was merged into PurchaseRequiredButton
- Modal options were packed into a single struct

Confirmation alert presented on:

- Connect to ineligible profile (AppCoordinator)
- Save ineligible profile (ProfileCoordinator)
2024-11-24 20:01:30 +01:00
Davide 064e834e23
Bump version 2024-11-24 01:06:35 +01:00
Davide cb530d8a65
Handle TV requirements on connection (#922)
Fixes #913
2024-11-24 01:01:04 +01:00
Davide bad9e8b58e
Add TV settings tab (#921)
Includes:

- Credits
- Donations
- Diagnostics
- Version

Had to:

- Wrap tab view into a NavigationStack for full-screen navigation
- Take out navigation titles of about subviews
- Customize donations view layout with modifier
- Fix credits and debug log to support scrolling

Closes #914
2024-11-23 23:01:11 +01:00
Davide f13a292b4b
Refactor String identifiers (#920)
- Group all views under "views.*"
- Split global strings into actions and nouns
- Use underscores
- Clean up unused

Fixes #835
2024-11-23 20:31:22 +01:00
Davide 3e2823c2e0
Suppress module name
Uneditable with #909, must hide potentially existing name.
2024-11-23 20:11:10 +01:00
Davide 2a46173169
Move more views to UILibrary (#919)
- Move about subviews to UILibrary
- Refactor about to single coordinator + platform views
- Refactor debug log to single view + content views
- Take out debug log routes from about routes
- Rename Settings* to Preferences*
- Reuse empty modifier in debug log
- Fix a visual bug in .themeTrailingValue() (extra Spacer)

Preparation for #914
2024-11-23 19:26:33 +01:00
Davide a301806ac7
Share migrated TV profiles (#918)
Fixes #912
2024-11-23 13:33:02 +01:00