Commit Graph

338 Commits

Author SHA1 Message Date
Davide De Rosa
d4484f3307 Simplify layout of in-app products 2022-04-27 18:32:44 +02:00
Davide De Rosa
2b1efb8fec Make load*Profile() async
- Handle Task in consumers

- Drop makeReady, always make loaded profile ready

- Rename misleading loadProfile() to profileEx()
2022-04-27 17:13:03 +02:00
Davide De Rosa
02b2e3194e Add duplicate to profile menu
Contextually switch current profile to duplicate.
2022-04-27 16:59:33 +02:00
Davide De Rosa
496abc6c89 Move Siri on top of menu 2022-04-27 16:54:07 +02:00
Davide De Rosa
49a1f1b55c Address VPN toggle losing sync with internal state
- Update TunnelKit

- Receive TunnelKit notifications on main queue

- Bind VPN toggle to VPNManager directly (implicit animations)

- Update state on VPN didFail

- Set isEnabled = false after uninstalling VPN (not notified)
2022-04-27 15:53:31 +02:00
Davide De Rosa
e77d78526b Use non-filled icons 2022-04-27 13:40:58 +02:00
Davide De Rosa
cd854f8ebf Group profile actions into menus
- Organizer
    - Duplicate

- Profile
    - Rename
    - Siri
    - Uninstall (+ confirmation)
    - Delete (+ confirmation)
2022-04-27 09:53:42 +02:00
Davide De Rosa
1c047b9ce2 Retain profile name (disabled) after importing
Works around a crash in iPadOS 14 portrait when removing section
containing first responder (profile name TextField). It happened
when submitting profile name via keyboard rather than "Save".
2022-04-26 22:56:41 +02:00
Davide De Rosa
4a0245d757 Rename AddHostView to .NameView
In preparation of future additions to flow.
2022-04-26 22:44:34 +02:00
Davide De Rosa
03fdab4833 Duplicate profile from context menu 2022-04-26 22:39:47 +02:00
Davide De Rosa
1ea380312a Update providers index on add provider appearance 2022-04-26 22:15:39 +02:00
Davide De Rosa
6bff878952 Fix repeating "Default" servers in some providers
Disambiguate by apiId.
2022-04-26 22:12:22 +02:00
Davide De Rosa
4b8cff1bb3 Disable padding around LongContentView
It should actually be an inset. Do it later.
2022-04-26 21:39:21 +02:00
Davide De Rosa
99e48119f7 Encapsulate calculation of former products
Use an interface (BuildProducts) that makes understandable and
easily extensibile how some in-app products are inferred by build
number.
2022-04-26 20:55:18 +02:00
Davide De Rosa
f4714dec58 Fix VPN toggle enabling despite errors 2022-04-26 19:02:12 +02:00
Davide De Rosa
4973a19fda Drop unused method 2022-04-26 10:59:48 +02:00
Davide De Rosa
1ff19b331f Move VPNToggle to standalone view 2022-04-26 10:40:46 +02:00
Davide De Rosa
ccde6a30cf Fix issues with VPN toggle
- Move rate limit to UI only

- Keep caption constant to "Enabled"
2022-04-25 23:12:45 +02:00
Davide De Rosa
58cf401883 Share prefix for validating theme methods 2022-04-25 22:44:24 +02:00
Davide De Rosa
5c0e053e7d Review requirements of DNS over TLS (DoT)
- Make DNS servers optional in TunnelKit

- Allow IP address as DoT server name
2022-04-25 22:40:09 +02:00
Davide De Rosa
efb9760d6b Redo VPN toggle properly
- Use local @State for appearance

- On binding set, control VPNManager
2022-04-25 16:36:07 +02:00
Davide De Rosa
6434008ebd Make destructive buttons standalone
- Uninstall VPN

- Remove profile (add to ProfileView)

Create DestructiveButton with iOS 15 .role when available.
2022-04-25 16:34:22 +02:00
Davide De Rosa
ac1239daa8 Add headers to active/inactive profile sections
Hide inactive section if empty.
2022-04-25 16:34:13 +02:00
Davide De Rosa
339183c156 Fix phrase wording 2022-04-25 16:30:03 +02:00
Davide De Rosa
29629c5147 Use lighter font for non-active profiles 2022-04-25 15:35:21 +02:00
Davide De Rosa
84790080be Disable autocorrection on profile name 2022-04-25 15:28:55 +02:00
Davide De Rosa
deac70359f Reorganize and fix platform-specific fastlane data
Reuse all iOS metadata in macOS, except the app icon.
2022-04-25 11:21:19 +02:00
Davide De Rosa
886d0271ea Restore 'Add' button in NetworkSettings
Makes it clear that added fields must be submitted in order to
be saved.
2022-04-23 15:47:02 +02:00
Davide De Rosa
0b1e465143 Share animation type in theme 2022-04-23 12:11:01 +02:00
Davide De Rosa
7eb2b3bd0e Drop button accent on Organizer rows 2022-04-23 11:48:43 +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
dc66f514d9 Restore presentation conditions of active profile
On iPad it's already loaded in MainView().
2022-04-23 10:25:31 +02:00
Davide De Rosa
c507c739bd Move WelcomeView to its own view 2022-04-23 10:25:31 +02:00
Davide De Rosa
ad1539023e Split VPN status and data count 2022-04-23 10:25:31 +02:00
Davide De Rosa
1083941eeb Increase font size in Organizer 2022-04-23 10:25:31 +02:00
Davide De Rosa
4037b983cb Move active profile on top to its own section 2022-04-23 10:25:31 +02:00
Davide De Rosa
b37ff03e4b Refactor hidden navlinks and send behind in ZStack 2022-04-23 10:25:31 +02:00
Davide De Rosa
2432f0d97a Rewrite ProfileView as a view of currentProfile
Do not load profile in View, instead:

- Load active profile on app launch

- Load selected profile on organizer selection
2022-04-23 10:25:31 +02:00
Davide De Rosa
8838e9d130 Strip a few unnecessary publishers
- Drop unused AppManager from OrganizerView

- Do not notify ProfileManager subscribers on activeProfileId

Saved active profile is already notified by:

- Core Data
- AppManager
2022-04-23 10:25:31 +02:00
Davide De Rosa
d8e47cb7c0 Refactor strings and add new ones
- Move Localizable.strings above to share *.lproj folders

- Reorg menus into contextual/system

- Shorten titles of contextual menus

- Update sharing message with WireGuard

- Drop AlternativeTo

7 phrases left to translate into 9 languages.
2022-04-22 13:12:42 +02:00
Davide De Rosa
322bdf2993 Serialize active profile immediately
Otherwise:

- Switch from former active profile A to B
- Connect to now active profile B
- Kill app
- Reopen app
- App shows connected to profile A

Because active profile was not saved immediately on switch.

Unnecessary now to also save it on background persist().
2022-04-22 10:05:28 +02:00
Davide De Rosa
7095791428 Extend styles for VPN status description 2022-04-22 09:57:13 +02:00
Davide De Rosa
867b415b6b Fix double add menu in Organizer
Seems to happen when launching with active profile.

Use explicit position.
2022-04-22 09:52:10 +02:00
Davide De Rosa
c9dfed676e Move VPN status below active profile
Rather than on the side. Similar to old subtitle table view cell.

Restore data count as well (when available).
2022-04-22 09:52:10 +02:00
Davide De Rosa
46050e0141 Refactor ProfileView a little bit
- Make welcome a computed property

- Reuse first header for consistency when loading

- Convert isDeleted to better isExisting (inverted)
2022-04-21 19:11:22 +02:00
Davide De Rosa
fd7c232ecc Unroll ProfileView toolbar items
Also leave them visible when disabled.
2022-04-21 19:03:14 +02:00
Davide De Rosa
992178bcd6 Move toolbar content inline
For consistency, can search with "toolbar {".
2022-04-21 16:24:08 +02:00
Davide De Rosa
23d184ae08 Restore pre-scrolling in provider location
Artifacts are caused by translucent navigation bar, also in other
views. Will fix later.
2022-04-21 16:03:40 +02:00
Davide De Rosa
e71b22c7c8 Simplify AddProfileView with implicit animations
- Animate on ViewModel in profile name views

- Animate on providers in provider selection view
2022-04-21 15:24:16 +02:00
Davide De Rosa
36cd9cfd96 Revert "Explicitly hide navigation bar in WelcomeView"
This reverts commit aefbfaa588.
2022-04-21 14:59:56 +02:00