Commit Graph

130 Commits

Author SHA1 Message Date
Davide
0a51d1a1f6
Strip package dependencies ()
The Library package offers the PassepartoutImplementations target for
OpenVPN/OpenSSL and WireGuard/Go, but it doesn't need it itself. Only
the main app does, so move the dependency there.

On the other side, drop the potentially problematic AppUI meta target.
Move platform filters to the Xcode project.

Indirectly fixes a crash with Xcode 16 Previews on iOS (forced to use
legacy previews before):

https://forums.developer.apple.com/forums/thread/756681
2024-11-13 21:05:53 +01:00
Davide
070b661c43
Refactor library targets ()
Renames:

- AppUI → UILibrary
- AppUIPlatform → AppUI (conditional umbrella) + AppUI[Main|TV]
- APILibrary/CommonLibrary/UtilsLibrary → Common[API|Library|Utils]

Dependencies:

- AppUI → UILibrary
- UILibrary → AppLibrary, CommonAPI
- AppLibrary → CommonLibrary, CommonUtils
2024-11-02 10:11:59 +01:00
Davide
72e784272a
Create basic UI for TV app ()
Start with the profile tab. Left to do: search and settings.

Fixes and refactoring:

- Listen to changes in current profile in ExtendedTunnel
- Externalize style from TunnelToggleButton and ConnectionStatusText
(renamed from View)
- Add ThemeCountryText for convenience
2024-11-02 08:41:32 +01:00
Davide
357c505cc0
Refactor AppUI/AppUIMain to accomodate TV ()
- Move InteractiveView to AppUI for use in TV, with
OpenVPNCredentialsView
- Move non-UI entities to AppLibrary (IAP, ExtendedTunnel,
ProfileProcessor)
- Take API out of CommonLibrary (tunnel extension does not need it)
- Reorganize theme views/modifiers into separate files
2024-11-01 23:32:35 +01:00
Davide
ca18aadddf
Allow interactive credentials with providers ()
Fixes 
2024-11-01 20:01:18 +01:00
Davide
590b2790fa
Revisit overuse of EnvironmentObject ()
The biggest issue is the hidden and scattered use of both Tunnel and
ConnectionObserver. Only use the latter, and rename it to ExtendedTunnel
for being now a full wrapper around Tunnel (e.g. for .connectionStatus).

In general, restrict the use of EnvironmentObject to:

- Theme
- IAPManager
- ProfileProcessor
- ProviderManager

Always be explicit about:

- ProfileManager
- ExtendedTunnel

Contextually, move some UI entities to the base AppUI target.
2024-11-01 09:47:50 +01:00
Davide
33d238270e
Fix issues with iOS 16 ()
- Drop AppInlineCoordinator completely, always present profile modally
- Delay modal presentations by 50ms

Fixes 
2024-10-31 14:30:22 +01:00
Davide
9f22053fa9
Fix lifecycle of environment objects ()
 was happening because environment objects were set on contentView,
which is not the _outmost_ root view. This clarifies why the Theme
object was not being found in ThemeLockScreenModifier.

Also, do not hardcode LogoView as lock view.
2024-10-31 11:14:39 +01:00
Davide
237277d4db
Do some refactoring in AppUI targets ()
- Refactor AppUI initialization in all platforms (sort of template
method pattern)
- Make AppMenu specific to macOS by wrapping it into a folder for
consistency
- Add SizeClassProviding for repeated checks on hsClass/vsClass

Fixes 
2024-10-31 10:02:21 +01:00
Davide
80dd6dc779
Render country flags with Emojis ()
Revert FlagKit just introduced in 
2024-10-31 01:15:07 +01:00
Davide
dcdb03a735
Improve country flags ()
Leverage the convenience of FlagKit. Update credits too.
2024-10-30 19:11:58 +01:00
Davide
9a365703c5
Refactor Theme strings
Fixes 
2024-10-30 15:20:18 +01:00
Davide
9e7860d390 Show titles and set destructive on confirmation
Fixes 
2024-10-30 15:07:22 +01:00
Davide
c677a1e655 Fix lock view flickering on first appearance
Fixes 
2024-10-30 15:07:22 +01:00
Davide
7f3d897818
Improve macOS window lifecycle ()
- Let the user close the window, the app will just remain alive in the
status bar
- Accordingly, replace "Confirm quit" preference with the option to stay
alive in the status bar
- Add "About..." item
2024-10-30 10:37:45 +01:00
Davide
9d6dfe6a76
Fix crash on lock screen ()
Missing environment Theme in LogoView.

Probably broken in 
2024-10-30 10:18:39 +01:00
Davide
944d6f8c28
Refactor AppUI for TV target ()
Split AppUI into AppUI and AppUIMain to allow for a new, simplified
AppUITV target tailored for the Apple TV.

As a PoC, present a view with a list of the shared profiles.
2024-10-29 14:30:41 +01:00
Davide
8536aee755
Show hostname with middle truncation on iOS 2024-10-29 11:50:33 +01:00
Davide
41de48789e
Show in Mac status bar plus Login Item ()
Add a status menu via SwiftUI MenuBarExtra where to:

- Show/hide app
- Launch on login via "Login Item" target
- Toggle profiles on/off

Only weird that the login item is not added to the list of "Open at
Login", but to "Allow in the Background", see
https://github.com/pilotmoon/Scroll-Reverser/issues/165

Requires some refactoring to bring AppContext initialization to the
AppDelegate.

Fixes 
Fixes  
Fixes  
Fixes 
2024-10-29 11:40:11 +01:00
Davide
d60ab97922
Fix initial country filters ()
- iOS: skip filter to speed up selection of another country
- macOS: initial country filter was lost due to category/country
chaining
2024-10-29 00:15:56 +01:00
Davide
33f17ab496
Move favorites toggle above servers list on iOS ()
Improve access to the most used filter.
2024-10-28 23:00:41 +01:00
Davide
5e46eb2fe5
Fix "Connect to..." appearing in non-providers 2024-10-28 22:34:07 +01:00
Davide
c930225458
Move theme-related logic to UI target
Fixes 
2024-10-28 21:45:10 +01:00
Davide
6f64edc95b
Fix overflow in installed profile name 2024-10-28 21:31:48 +01:00
Davide
5da84194a9
Hide paywall in beta 2024-10-28 21:02:45 +01:00
Davide
f8773cacf1
Filter countries by selected category ()
Countries are filtered through the latest servers list. If a country is
chosen, the countries picker only lists the currently selected country,
because there are no servers from other countries.

Update the library to prefetch the available countries per category.
2024-10-28 20:53:35 +01:00
Davide
7ede841346
Present error alert on missing provider () 2024-10-28 20:30:22 +01:00
Davide
11a0f95cdd
Wrap paywall into NavigationStack 2024-10-28 20:08:13 +01:00
Davide
0ec06c2c65
Import OpenVPN configuration ()
At module creation time, choose whether to use a provider or import a
configuration file. After the import, the provider picker is hidden for
mutual exclusion.

For clarity, refactor the configuration part of OpenVPNView into a
ConfigurationView subview.
2024-10-28 20:07:19 +01:00
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
639dee55ee
Replace 'lastUpdated' with 'lastUpdate' 2024-10-28 17:16:13 +01:00
Davide
0d383ec792
Store providers to Core Data ()
Also, improve filters by constraining related fields:

- Pick countries from the filtered category
- Pick presets from those available in the currently filtered servers

Closes 
2024-10-28 16:57:23 +01:00
Davide
cc119e18ce
Move Theme images to same file 2024-10-26 21:53:21 +02:00
Davide
baff2c58ca
Rename favorites preference 2024-10-26 21:20:42 +02:00
Davide
b515041bd9
Add dots to Edit 2024-10-26 21:10:55 +02:00
Davide
d1b41a6615
Reconnect if necessary on profile save
Fixes 
2024-10-26 21:09:30 +02:00
Davide
b36189c5c9
Improve some providers UI on macOS
- Bigger profile modal
- Add star header to favorites column
- Tile favorites checkbox and clear filters
2024-10-26 21:02:33 +02:00
Davide
6d915f8985
Fix presets not filtered by configuration 2024-10-26 20:51:51 +02:00
Davide
61e8d8e2f7
Optimize redraws in provider servers views () 2024-10-26 20:28:02 +02: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
2c2b3f063a
Multi-configuration providers () 2024-10-25 10:54:28 +02:00
Davide
bbcd245bad
Fix compile error on iOS 2024-10-23 23:21:37 +02:00
Davide
5fcb710d5e
Allow creation of OpenVPN provider module ()
Behind paywall as per  

Fixes 
2024-10-23 23:19:53 +02:00
Davide
bf3c50c348
Do not force refresh infrastructure
Fixes 
2024-10-23 23:06:02 +02:00
Davide
1a82aea612
Optionally apply filters based on server selection ()
Restore passing selectedEntity, but add filtersWithSelection to decide
whether to filter servers based on selection.

Partially revert 91a3e42533
2024-10-23 22:57:30 +02:00
Davide
1e06c350ee
Fetch providers index on launch
Fixes 
2024-10-23 21:23:54 +02:00
Davide
91a3e42533
Start entity selector unfiltered
Do some renaming too.
2024-10-23 21:22:05 +02:00
Davide
8815e6fdf7
Use server checkmark rather than selection on macOS 2024-10-23 19:31:03 +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