* Fix SSO login on ChromeOS by using Device Code Flow
ChromeOS runs Android apps in a container with separate network namespace,
preventing the browser from reaching the localhost callback server used by
PKCE flow. This causes "service not available" errors after authentication.
Use Device Code Flow on ChromeOS (like Android TV) which uses polling
instead of localhost callback. On ChromeOS, also auto-open the browser
for a similar UX to PKCE while showing QR dialog as fallback.
* update submodule
* Add max width constraint to fragment_server
* Make fragment_server scrollable if necessary
* Make dialog_confirm_change_server scrollable
* Set max width on ConfirmChangeServerDialog
* Set rounded corner radius for dialogs to 16dp
* Set rounded corner radius for dialogs to 28dp
To make it consistent across the app
* Use AlertDialogTheme in ChangeServerFragment dialogs
* Center text used in dialog_simple_alert_message
* Add default margin values for dialogs
Smaller screens use 16dp margin; anything
larger will use 56dp.
* Add max width and center_horizontal to Advanced fragment
* Add max width and center_horizontal to Profiles fragment
* Use wrap_content on ScrollView's layout_height
* Remove unused method to calculate max width on dialogs
* Add fragment_max_width to dimens.xml
Make use of its value in fragments advanced,
profile and server
This also fixes a bug where fragment_advanced was
not respecting the containing layout's max width
value (and making switches disappear in landscape)
* Add missing contentDescription to Use Netbird server button
* Add dialog max width to dimensions file
* Change ConstraintLayout in dialog files to be contained in LinearLayout
In order to apply layout_gravity to its children
* Change ConstraintLayout in fragment_advanced to be contained in LinearLayout
In order to apply layout_gravity to its children
* Add abstract implementation of StateListener
* Add adapter to implement only StateListener
* Add ViewModel usage to PeersFragment
Updates the UI when the peers list change via
StateListener
* Remove unused code and references
* Add null check for model before unregistering service state listener
* Make UI state immutable
* Change exception message in Status.fromString
This code is throwing "Unknown status: Idle"
without reason
* Add Locale.ROOT when doing status.ToLowerCase()
Some locales might be turning lowercase i to
dotless i (ı)
* Skip null peer info or connStatus
When parsing PeerInfoArray to List<Peer>
* Move cleaning up stateListenerRegistry and serviceAccessor to onDetach event
* Reverse cleanup order
* Add Locale.ROOT usage to exception message
* Keep fragments from inflating repeatedly
When tapping in a given option in Navigation
Drawer multiple times
* Return boolean onNavigationItemSelected
Indicating if the NavController handled
navigation to the fragment successfully
Profile management system: add, switch, logout, and remove user profiles with validation and dialogs.
Route selection and management capabilities exposed for VPN routing control.
Profile menu item in navigation drawer displays the active profile.
VPNServiceRepository created its own service binding which caused conflicts
when unbinding - it would disconnect other components relying on the service.
Now NetworksFragmentViewModel uses ServiceAccessor from MainActivity, which
maintains a single shared service binding across all components.
* Remove onClickListener from peersBtn
When HomeFragment is destroyed
* Remove unused imports
* Check if BottomDialogFragment is attached to Activity
When setting its onShowListener
This restores the intent of PR #105 which removed the route change
notification feature. PR #100 accidentally reintroduced these elements
due to a force push that overwrote PR #105 changes."
* feat/add-android-tv-support
Add android TV support with the following changes:
- Implement new URLOpener interface with updated open method that accepts UserCode
- Add logic to MainActivity.java to detect Android TV, adjust UI and SSO flow accordingly
- Add QRCodeDialog.java to handle QR code/user code display logic
- Updated relevant layout xml files
- Add TV banner icon
---------
Co-authored-by: Ashley Mensah <ashleymensah@Ashleys-MBP.fritz.box>
- Fix the background color of the peers view in the light theme.
- Extend the background mask.
- Set a maximum width for the peers button.
- Change the shadow of the peers button in the dark theme.