Commit Graph

26 Commits

Author SHA1 Message Date
Davide
ecb0348b90
Move providers paywall to picker ()
Paywall on module creation suggests that OpenVPN modules are a paid
feature.
2024-10-28 19:55:42 +01:00
Davide
df4e3465f5
Save provider favorite servers ()
Fixes 
2024-10-26 13:29:26 +02:00
Davide
3abde3851a
Improve some things about providers ()
- iOS: Add category name to clarify servers context
- iOS: Show "No servers" when list is empty
- macOS: Show "Connect" in server selector when presenting from home
- Add last update to issue report
- Refactor provider strings
2024-10-25 11:38:27 +02:00
Davide
99b9aeaa9c
Reconnect on provider server selection ()
Trigger reconnection on server selection, otherwise the installed
profile would display an outdated region. It's also more convenient.
2024-10-23 18:51:22 +02:00
Davide
295ba4d662
Quick selection of provider server ()
First of all, add country flags assets. Then, present provider server
selector:

- From installed profile view, specifically from a button with the flag
of the current country
- From profile context menu
- On toggle profile when no server is selected

Closes 
2024-10-23 17:17:20 +02:00
Davide
a94db35d01
Refactor a few things about provider flows ()
- Move disclosable menu from installed profile view to
ThemeDisclosableMenu
- Drop unnecessary configurationType modifier parameter
- Reorg view-related module extensions to separate files
- Reuse .flow fields instead of single blocks
- Show specific error on missing provider server selection
2024-10-22 15:06:13 +02:00
Davide
0221aea6b6
Move some profile integrity checks to library ()
They really belong to Profile.Builder
2024-10-16 09:50:26 +02:00
Davide
acf066571a
Fix some key things about providers UI ()
Fixes 
2024-10-16 08:53:16 +02:00
Davide
ed28126cf7
Rework OpenVPN view with provider modifiers ()
Improve rendering and work around some SwiftUI bugs, e.g. with .menu
Picker on iOS (use .navigationLink instead).

Here goes the hierarchy bottom-up:

- ProviderPicker: a Picker wrapper built around ProviderManager
- ProviderContentModifier: adds a ProviderPicker on top and replaces the
content with a set of provider selectors when a provider is selected
- VPNProviderContentModifier: wrapper for ProviderContentModifier that
adds a VPN server selector
- OpenVPNView: provides a view of specific OpenVPN settings, and adds a
credentials selector to the provider/server selectors provided by
VPNProviderContentModifier
2024-10-15 21:34:02 +02:00
Davide
da87ca698a
Add initial support for providers ()
Initial integration of providers via API:

- Generic views and modifiers for provider/server selection
- Add in OpenVPNView
- Prepare in WireGuardView

Also:

- Introduce ProfileProcessor, move IAP processing there
- Move .asModuleView() to ModuleViewModifier for proper animation
- Use .themeModal() rather than .sheet()
2024-10-11 00:24:06 +02:00
Davide De Rosa
38aa83760f
Reword on-demand 2024-10-04 21:06:03 +02:00
Davide De Rosa
4b0bc7f064
Reword confirm quit 2024-10-04 02:59:03 +02:00
Davide De Rosa
27b7e62376
Add hint about iCloud sharing 2024-10-04 00:52:25 +02:00
Davide De Rosa
b660c499af
Use static 'Profile' in editor title 2024-10-04 00:47:28 +02:00
Davide De Rosa
07703fda9c
Fix some things about IP module
- Reword module description to "Routing"
- Make route modal title .inline
2024-10-04 00:44:31 +02:00
Davide
211b3b83d3
Erase iCloud store from Settings ()
Also, fix SwiftUI not refreshing when remote profiles are updated. There
was no objectWillChange nor Published around
ProfileManager.allRemoteProfiles, and ProfileRowView was not treating it
as ObservedObject.

Closes 
2024-10-03 23:25:51 +02:00
Davide De Rosa
bf4ec4982a
Refactor phrases 2024-10-03 19:42:52 +02:00
Davide
1491766102
Per-profile iCloud syncing ()
Keep two separate stores to accomplish per-profile sharing:

- Local store, where to push updates manually (save/remove/search)
- Remote iCloud store, where to pull updates from

A profile can be added/removed to/from the iCloud store so that other
devices can push/pull updates to it.

Consequently, updates to the iCloud store will NEVER cause a profile
deletion. Once removed, the profile will stay locally.

Fixes  
Fixes 
2024-10-03 18:41:27 +02:00
Davide De Rosa
429e79cd3a
Refactor theme section and some phrases 2024-10-03 17:35:57 +02:00
Davide
e8d5f2477b
Prepare interactive login for paywall ()
See 
2024-10-02 16:05:40 +02:00
Davide
4b1f6e547b
Fix some on-demand behavior ()
Fixes  
Fixes 
2024-09-30 19:35:41 +02:00
Davide
4877c2bd20
Restrict paywall to on-demand rules ()
Rather than whole module.

Closes 
2024-09-30 15:56:32 +02:00
Davide
a9fa6a2f62
Maintain one configuration per profile ()
Helps with automation. Install the VPN configuration before persisting a
profile, so that the 1:1 reference with OS settings is maintained.
Likewise, uninstall the VPN configuration after removing a profile.

This before-save hook also resolves a problem with multiple imports,
where multiple VPN permission alerts coalesce if no VPN configuration is
installed. Now the first import waits for the permission synchronously.

Fixes 
2024-09-30 14:56:20 +02:00
Davide
28a2017da2
Confirm quit on macOS ()
To do so, must prevent window from closing.

Fixes 
2024-09-28 17:58:48 +02:00
Davide
5deb8ec763
Prepare for macOS settings () 2024-09-28 12:47:33 +02:00
Davide
fbc6ece59d
Reorganize library into AppUI ()
Closes 
2024-09-26 23:13:55 +02:00