Commit graph

503 commits

Author SHA1 Message Date
Markus Friedli b4f877aa2d
Add Android OS sensors (#3449)
* Add Android OS sensors

* Rework review findings
2023-04-07 19:08:14 -04:00
Joris Pelgröm 75c7c08b2b
Improve phone feedback for Wear onboarding (#3450)
- Show a loading indicator after sending data
 - Show a Snackbar for success/errors
2023-04-02 20:20:16 -04:00
dependabot[bot] e592c334ea
Bump org.jetbrains.kotlin:kotlin-stdlib from 1.8.10 to 1.8.20 (#3442)
Bumps [org.jetbrains.kotlin:kotlin-stdlib](https://github.com/JetBrains/kotlin) from 1.8.10 to 1.8.20.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/commits)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-01 04:02:29 +00:00
Joris Pelgröm cc20ffe83b
Add logged out state to Wear tiles (#3440)
- Adds a generic tile to be used when the Wear app isn't logged in
 - Simplify tile root layout building using Timeline.fromLayoutElement
2023-03-31 23:35:34 -04:00
Joris Pelgröm b6688c6388
Share Wear session with main app to fix mismatch (#3439)
- Exchange server information between the Wear app and phone app, and create a temporary server on the phone that holds the Wear server information, to ensure that the same server is used on both devices
2023-03-31 23:30:57 -04:00
googlvalenzuela 8a322c624f
Android Automotive Module (#3423)
* Creation of Automotive Module and Fix OnboardingActivity parent Activity.

* Adding Manifest Dependencies.

* Fixing ktlint

* Remove unused import.

* Copy Google Services to android automotive

Github actions for PR require this to be set up in order for the build to pass.

* Missing two entries to copy the google-services.json file

* Fixing Build Process.

* Version code +2

We add 2 because the app, wear (+1) and automotive versions need to have different version codes.

* Update +3 per recomendation.

* Code to support transition from Full app to Car App Library.

* Fixing linter.

* More ktlin

/home/runner/work/android/android/app/src/main/java/io/homeassistant/companion/android/BaseActivity.kt:19:1 Needless blank line(s)
/home/runner/work/android/android/app/src/main/java/io/homeassistant/companion/android/BaseActivity.kt:31:95 Unnecessary semicolon
/home/runner/work/android/android/app/src/main/java/io/homeassistant/companion/android/BaseActivity.kt:39:1 Unexpected blank line(s) before "}"
/home/runner/work/android/android/app/src/main/java/io/homeassistant/companion/android/BaseActivity.kt:44:1 First line in a method block should not be empty

* Changes to allow navigate back from / native and feedback from PR.

* Indentation fixes.
2023-03-31 17:54:33 -04:00
Joris Pelgröm 8d2c9f1cb4
Get user information and prevent using admin-only calls (#3417)
* Get and cache user information

 - Add function to get information about the current user
 - Cache user information alongside server in database

* Replace/prevent admin only calls
2023-03-16 07:10:27 +00:00
Joris Pelgröm 421f38f1c2
Use new auth/revoke endpoint (#3416) 2023-03-15 19:15:16 -04:00
Joris Pelgröm 1a7091a761
Server trust feature (#3410)
* Server trust feature

* Always allow clear_notification, remove_channel and command_stop_tts commands
2023-03-15 19:14:39 -04:00
Joris Pelgröm cc8dd47fcd
Drop 'tile' from template tile name (#3414) 2023-03-10 18:23:43 +00:00
Adrian Huber 3ebae7ee08
Fix listed beacons that are out of range after enable (#3398)
* Fix listed beacons that are out of range after enable

* Fix linter
2023-03-10 13:10:49 -05:00
Joris Pelgröm bd30b2c53b
Update default entity icons (#3403)
- Catch up with frontend changes for domain icons
 - Dynamic weather icons
 - Dynamic (binary) sensor icons
2023-03-08 10:07:46 -05:00
Daniel Shokouhi deb3d84ab7
Update sensors when BLE transmitter turned on and off (#3385)
* Update sensors when BLE transmitter turned on and off

* Remove duplicate code
2023-03-08 10:06:55 -05:00
Joris Pelgröm b508114d75
Push Wear users to install app on phone (#3388)
* Push Wear users to install app on phone

 - Push Wear OS users to install the app on their phone if they don't already have it, as the sign in experience is a lot better and less sensitive to errors
 - Allow using 'Advanced' if the user cannot or doesn't want to install the app on their phone

* Fix import

* Add time
2023-03-03 14:11:14 -05:00
Daniel Shokouhi c3fe6b3b6e
Use a foreground service for reliable beacon scanning in background (#3369)
* Use a foreground service for reliable beacon scanning in background

* Clean up

* Add action to stop beacon scanning

* Match sensor name

* Use existing Disable string for action

* ktlint
2023-03-03 14:07:02 -05:00
Joris Pelgröm f5d2b978ad
Improve sensor re-registration on app version change for offline server (#3380)
- Prevent the sensor worker runs from taking a long time when the app version changes if a server is offline due to reregistration of all servers (~15 min), by skipping these re-registrations if it fails with an exception that indicates offline/network issues.

Co-authored-by: Justin Bassett <bassett.justint@gmail.com>
2023-03-01 17:22:13 +00:00
dependabot[bot] a2f85ef475
Bump org.jlleitschuh.gradle.ktlint from 11.1.0 to 11.2.0 (#3334)
* Bump org.jlleitschuh.gradle.ktlint from 11.1.0 to 11.2.0

Bumps org.jlleitschuh.gradle.ktlint from 11.1.0 to 11.2.0.

---
updated-dependencies:
- dependency-name: org.jlleitschuh.gradle.ktlint
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* gradlew ktlintFormat

* Rename packages with underscores

> Task :app:ktlintMainSourceSetFormat FAILED
home-assistant-android\app\src\main\java\io\homeassistant\companion\android\widgets\media_player_controls\MediaPlayerControlsWidget.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)
home-assistant-android\app\src\main\java\io\homeassistant\companion\android\widgets\media_player_controls\MediaPlayerControlsWidgetConfigureActivity.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)

Rename: media_player_controls to mediaplayer

> Task :wear:ktlintMainSourceSetFormat FAILED
home-assistant-android\wear\src\main\java\io\homeassistant\companion\android\onboarding\manual_setup\ManualSetupActivity.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)
home-assistant-android\wear\src\main\java\io\homeassistant\companion\android\onboarding\manual_setup\ManualSetupModule.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)
home-assistant-android\wear\src\main\java\io\homeassistant\companion\android\onboarding\manual_setup\ManualSetupPresenter.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)
home-assistant-android\wear\src\main\java\io\homeassistant\companion\android\onboarding\manual_setup\ManualSetupPresenterImpl.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)
home-assistant-android\wear\src\main\java\io\homeassistant\companion\android\onboarding\manual_setup\ManualSetupView.kt:1:1 Package name must not contain underscore (cannot be auto-corrected)

Rename: manual_setup to manual

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joris Pelgröm <joris.pelgrom@gmail.com>
2023-03-01 12:05:54 -05:00
dmiales 9a4d00f05d
Feature/screen orientation (#3362)
* feature/landscape add setting for fix landscape orientation

* feature/landscape add setting for fix screen orientation

* feature/screen_orientation code review

* feature/screen_orientation code review
2023-02-24 14:31:53 -05:00
Joris Pelgröm ebda0a23a5
Enable/disable sensors per-server (#3357)
* Sync sensors with individual servers

 - Update sensors once, and allow syncing enabled/state with individual servers instead of doing the same for every server
 - Default to the default sensor enabled state for new servers instead of copying another server

* Make last update sensor server-specific

* UI

* New servers: enable if enabled on any server

* Handle per-server enabled state in location tracking

* Fix icons in dark mode
2023-02-24 14:10:52 -05:00
Joris Pelgröm 4bda27387c
Server gestures and chooser (#3346)
* Server gestures and chooser

 - Add gestures to quickly switch between multiple servers
 - Add a chooser to select a server, and add a gesture for it

* Fix history (new page is added _after_ loading finishes)
2023-02-23 20:04:25 +01:00
Joris Pelgröm 25dd869272
Sync Thread datasets when starting Matter commissioning (#3349)
* Sync Thread datasets when starting Matter commissioning

 - When starting Matter commissioning from the frontend, check if there are Thread datasets on the device or in core but not the other, and if so try to sync them

* Also sync Thread datasets in shared device flow

 - Datasets may not be used by the system but it is useful for future devices
 - Make methods in ThreadManager a bit more general
2023-02-21 13:27:29 -05:00
Daniel Shokouhi 5f164ff5a6
Bump some project dependencies (#3347)
* Bump some project dependencies

* Bump kotlin too

* Use correct kotlin library
2023-02-21 12:55:00 -05:00
dependabot[bot] 4fcd20c72d
Bump com.google.dagger:hilt-android from 2.44.2 to 2.45 (#3335)
Bumps [com.google.dagger:hilt-android](https://github.com/google/dagger) from 2.44.2 to 2.45.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.44.2...dagger-2.45)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 09:01:08 -05:00
Daniel Shokouhi fd1ae9e39b
Update sensor enabled by default logic to be more granular (#3315) 2023-02-15 01:56:18 +00:00
dependabot[bot] 55fff2b87f
Bump com.google.dagger:hilt-android-compiler from 2.44.2 to 2.45 (#3330)
Bumps [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) from 2.44.2 to 2.45.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.44.2...dagger-2.45)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-14 20:35:38 -05:00
Daniel Shokouhi fafbfdca77
Default to carrier name when SIM sensor display name is null (#3316) 2023-02-14 20:31:01 -05:00
Joris Pelgröm f7cec0e5a2
Multiserver (#3332)
* Multiserver foundation

 - A foundation to build multiserver support on. Not ready for general use.

* Update new vehicle support

* Rebase fixes

* Multiserver settings

 - Show settings for the correct server when editing server settings from the settings

* Bind session to device/install

 - Save an install id with the app install to make sure that it isn't re-used on another device causing issues

* Add migration

 - Migrate server info from shared preferences to the database after database migration and clean up
 - Remove unused url shared preferences
 - Read/save server version from/to database

* Fix auth error when session is refreshed

* Show server name instead of URL

 - Read the server name when getting the config, and save it to the database
 - Allow the user to override the server name in the app's settings

* Multiserver notifications

 - Make notifications aware of which server sent the notification
 - Show server name in notification if more than 1 server is added to the app
 - Use the server-specific repositories when calling webhooks/authenticating/etc

* Handle multiserver in websocket worker

 - Copy the settings database row to the new server ID to allow for server-level settings (websocket) while keeping the original for app-level settings (sensor update frequency), and handle this in onboarding
 - Make the websocket worker check in on all servers and open/close connections where required
 - Add the webhook_id to websocket notifications to link them to servers
 - Update ServerManager servers to defaultServers because I'm using the same filter everywhere

* Migrate shared preferences

 - Move server-specific device name to Server and secret key to ServerConnectionInfo
 - Add a server ID key to the remaining shared preferences and migrate existing values

* Add option to delete server from settings

 - Allow deleting servers directly from the app's settings, because you might not be able to do so from the frontend.

* WebView switching and active server management

 - Allow switching which server is considered 'active' and used for the webview when loading
 - On auth errors remove the server instead of removing the URLs (?)
 - When getting external auth consider that the server might just have been removed (possible race condition from frontend which frequently causes 1 unauthorized connection when logging out)
 - Fetch config after adding a new server to fill in name and version before first use

* Sync registrations and blocking load

 - When starting the app, sync all registrations
 - Remove Wear state with server but new registration required
 - When receiving a new push token, update all registrations
 - Do a blocking load for getting the servers because otherwise the app might think it's not registered when running in the background

* Use StateFlow for the server list

 - Don't manually refresh but use a StateFlow to get updates pushed when the list of servers changes
 - Make settings use unique server keys to prevent constant remove/re-add

* Sensor updates and sync with multiple servers

 - Send sensor updates to all servers and sync changes to the app. Sensors are shared across all servers the app is connected to so changing enabled state on one server will update it for all servers.
 - Don't update sensor enabled state for location tracking directly from onboarding, this should be done in the result.
 - Remove unused SensorWithSettings class

* Send NFC tag scans to all servers

* QS tiles server selection

 - Listen to updates for a specific server
 - Allow selecting server if there is more than one

* Shortcuts server selection

 - Allow selecting server if there is more than one
 - Extract OutlinedButton with DropdownMenu for server selection to a standalone Composable
 - Update QS tiles to not automatically reset server ID when server no longer exists, align with shortcuts

* Fix revoked sessions + crashing app

 - When a session is revoked update the session object to reflect it
 - Fix app crashes on revoked sessions because of race conditions with the AlertDialog causing window active/inactive at the same time as finishing it

* Extra server onboarding tweaks

 - Skip welcome and location
 - Save/fix notification preference for minimal version

* Fix sensor state type conversion errors for new servers

 - If the state is removed but the type isn't, this can result in unwanted conversions throwing errors so remove the state type as well when copying a sensor

* Matter multiserver

 - Request specific server ID in Matter functions
 - Add server selection to shared Matter device flow

* Android Auto multiserver

 - Allow switching server in Android Auto. Defaults to active server, note that it doesn't change the default but only changes it in AA.

* Widgets server selection

 - Add server selection to all widgets and update handling to use the selected server

* Clean up TODOs out of scope

* Device controls multiserver

 - Subscribe to updates for each server that controls are added for
 - Allow managing lock screen enabled controls for each server

* Don't try to register sensors when finishing

 - Don't try to do a sensor update when finishing, as this may cause unintended use of resources we're trying to clean up (when deleting a server)

* Server-level zones and location tracking

 - Keep track of which server a zone belongs to for location tracking, and send updates only to that server
 - Add server name to zone selection setting

* Merge fix

* Show 'Activate Server' any time there are multiple servers

 - If the user is looking for the option to go to their server why hide it if it is already used, making them go back twice?

* More consistent strings

* Improve add server feedback in settings

 - Preserve the activate server before adding a new one to prevent unexpected active server changes
 - Show a Snackbar when another server is added indicating success with a button to activate it, or failure

* Remove unused ServerManager

* Fix tag import
2023-02-14 20:30:06 -05:00
Daniel Shokouhi 047abe93ba
Add new option to only show favorites on home screen (#3276)
* Add new option to only show favorites on home screen

* Review comments

* Review comments
2023-02-01 12:04:24 -05:00
Joris Pelgröm ef1f386ad0
Send sensor state as null if not set or blank (#3293)
Send sensor state as null if blank

 - Prevent core errors about invalid state types because of the device class/state class/unit by sending blank strings as null instead of a blank string
2023-02-01 12:03:37 -05:00
Daniel Shokouhi 60f76fcd45
Add TTS notifications to Wear OS (#3266) 2023-01-31 14:18:58 -05:00
Joris Pelgröm bd822afaba
Tweak Matter design (#3274)
- Update images to align with Matter branding guidelines
 - Remove "shared" from screens as this flow is also used for fast pair where it makes no sense
2023-01-26 18:01:36 -05:00
dependabot[bot] cfc07362e8
Bump jackson-module-kotlin from 2.13.4 to 2.13.5 (#3256)
Bumps [jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin) from 2.13.4 to 2.13.5.
- [Release notes](https://github.com/FasterXML/jackson-module-kotlin/releases)
- [Commits](https://github.com/FasterXML/jackson-module-kotlin/compare/jackson-module-kotlin-2.13.4...jackson-module-kotlin-2.13.5)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.module:jackson-module-kotlin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 20:32:51 -05:00
Daniel Shokouhi 6be617e666
Add ble transmitter and beacon monitor notification commands to Wear OS (#3253)
* Add ble transmitter and beacon monitor commands to Wear OS

* Move log to command check failure
2023-01-25 20:32:32 -05:00
Joris Pelgröm 594e6964f4
Improve state for Android Auto: translate, timestamps (#3262)
- Use string resources for common states to allow for translation
 - Format timestamps to a relative time (if recent) to make it easier to read
2023-01-24 22:37:00 -05:00
Joost Lekkerkerker 59fa25ece0
Migrated all table and column names to lower snake case (#3195)
* Migrated all table names to lower snake case

* Migrated all table names to lower snake case

* Migrated all table names to lower snake case

* Migrated all column names to lower snake case

* Migrated all column names to lower snake case

* Merged the migrations to 1 migration

* Fixed feedback

* Update migration script
2023-01-24 22:30:36 -05:00
Daniel Shokouhi 65696e891b
Make conversation activity launchable (#3254)
* Make conversation activity launchable

* Use better launcher icons per review comments

* Review comments
2023-01-24 22:27:04 -05:00
Joris Pelgröm 38d394f839
Fix scene and script Android Auto actions (#3252)
- Scenes need to be turned on
 - Scripts need to be turned on and off
2023-01-21 08:01:50 -05:00
Joris Pelgröm a4fd7d4fd8
Set Wear OAuth redirect URI automatically and catch exceptions (#3244)
- Allow the Wear support libraries to specify the redirect URI to use for OAuth login
 - Catch any exceptions that might be thrown when building an OAuth request
2023-01-20 14:11:01 -05:00
Joris Pelgröm e382a4b687
Split app-level and server-level settings (#3241)
* Move server settings to a server settings screen

 - Move server-specific settings to a new screen to be accessed from the main settings only containing server specific settings in preparation for multiserver
 - Sensors is currently not server-specific even though one setting is stored by server ID, to be fixed later

* Store app preferences in another shared preferences file

 - Store app preferences not in the integration shared preferences file, but in the shared preferences file for general prefs (it is named themes but there are already other app-level prefs in it)
 - Move Wear specific preferences to it's own repository + shared preferences file

* Improve server row with local data

 - While we don't have a server name or user name, show the registration name when available to improve the server row layout

* Simplify location permission request code

 - Remove the flexible permission requests as it isn't used in the current settings structure, only expect location permissions
 - Switch from the deprecated functions to the new flow using activity result contracts

* Remove unused string
2023-01-20 14:10:21 -05:00
Anna Tikhomirova 1638c0f99e
Wi-Fi sensor improvements (#3239)
Use rssi instead of scanResults to reliably get signal strength.
Get some info (IP, link speed, frequency, signal strength) and determine connection status even if Location is disabled on a device.
2023-01-20 14:04:50 -05:00
Daniel Shokouhi cce8b60c66
Conversation tile design changes (#3233)
* Update conversation UI with speech bubble

* Clean up design, vibrate when displaying response, close activity if screen turns off

* Review comments

* Switch response side to better match frontend

* Design tweaks

* Use row padding instead of spacer
2023-01-20 14:03:30 -05:00
Daniel Shokouhi 346ef3da5f
Initial commit of notification support on Wear OS (#3221)
* Initial commit of wear OS notifications

* Update to allow message and title

* Move constants to object to reduce imports

* Split up logic to match phone app

* Update readme and set websocket to false for wear OS

* Bump firebase BOM
2023-01-20 14:02:03 -05:00
Justin Bassett 5cd74c0179
Add and Android Auto sensor! (#3228)
* Add and Android Auto sensor!

* Fix build.

* Add version check on sensor.
2023-01-16 08:50:07 -05:00
Daniel Shokouhi 9337f6b471
Fix conversation data response type (#3231) 2023-01-16 08:49:37 -05:00
Daniel Shokouhi d7ee395306
Fix beacon monitor not updating after move to common (#3220) 2023-01-13 18:35:35 -05:00
Justin Bassett 1e910e7ec7
Bunch of Android Auto enhancements (#3225)
* Bunch of Android Auto enhancements

* Bump icon sizes.

* Formatting.

* Review Fixes.

* Ooops.

* Missed size.
2023-01-13 13:27:35 -05:00
Justin Bassett 220b73d20f
Bump a bunch of dependencies. (#3216) 2023-01-13 11:18:54 -05:00
Kostas Chatzikokolakis bca80f6391
Add UUID filter to Beacon Monitor (#3178) 2023-01-13 11:06:29 -05:00
Daniel Shokouhi a5cbe04315
Update conversation tile text and icon (#3209)
* Update conversation tile text and icon

* Minor design tweaks: increase corner radius, push down icon

* Update per review comment
2023-01-12 16:05:07 -05:00
Joris Pelgröm d6fbc1e95d
Minor Android Auto improvements (#3218)
- Fix low res entity icons
 - Fix domains not being translated
 - Add support for input_button
 - Use domain extension property
2023-01-12 15:26:40 -05:00
Justin Bassett ee4272a168
Initial Android Auto Support (#3211)
* Initial work on Android Auto support.

* Get some toggling working, add a main view that is useful.

* Make sure we can test this on every commit.

* Migrate to full flavor.
2023-01-11 17:31:53 -05:00
Joris Pelgröm 081fd8b8c1
Try/catch for individual sensor updates (#3203)
- Individual sensor update exceptions weren't caught like for multiple sensor updates
2023-01-11 16:38:46 -05:00
Daniel Shokouhi db63a38cd5
Migrate bluetooth sensors to common and add to wear OS (#3168)
* Migrate bluetooth sensors to common and add to wear OS

* Add missing BT permissions and register for state change events

* Update permissions again
2023-01-11 16:37:00 -05:00
Joris Pelgröm efb2390597
Add option for unlocked only quick settings tiles (#3189)
- Add option to quick settings tile to only allow interacting with it when the device is unlocked, similar to device controls on Android 13 (but phrased differently to match the system default behavior)
2022-12-30 20:34:31 -05:00
Joris Pelgröm a9e3a5daee
More quick settings tiles when needed (#3185)
- Add a lot more quick settings tile services
 - Enable QS tile services only for tiles up to the highest tile # in use + 4, with a minimum of 12, to prevent long lists and make it work 'automagically'
2022-12-30 20:27:27 -05:00
Joris Pelgröm 4ff2fcca4b
Update instead of cancel notification on replies (#3167)
* Update instead of cancel notification on reply

 - When a notification is replied to, update it instead of cancelling it to allow the other to continue manipulating it

* Support multiple replies

 - Keep a history of replies in the bundle to match system behavior

* Only keep replies that are actually shown
2022-12-30 20:15:36 -05:00
dependabot[bot] 37e00233bd
Bump android-beacon-library from 2.19.4 to 2.19.5 (#3179)
Bumps [android-beacon-library](https://github.com/AltBeacon/android-beacon-library) from 2.19.4 to 2.19.5.
- [Release notes](https://github.com/AltBeacon/android-beacon-library/releases)
- [Changelog](https://github.com/AltBeacon/android-beacon-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/AltBeacon/android-beacon-library/commits)

---
updated-dependencies:
- dependency-name: org.altbeacon:android-beacon-library
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-30 19:53:50 -05:00
Joris Pelgröm f928da2e6d
Matter dependency update and tweaks for shared devices + errors (#3161)
* Update Matter dependency

* Improve shared device commissioning

 - Show device name if available
 - Show error codes if returned

* Show toast for commissioning request errors

 - When an error occurs for commissioning requests/before the Play Services UI is shown, show a toast informing the user that Matter is currently unavailable. Most user-facing errors will be shown in the Play Services UI (during commissioning).
2022-12-18 21:37:35 +00:00
chriss158 e5191aed51
Add setting to start the app always on the first dashboard view (#3024)
* Add setting to start the app always on the first dashboard view

* Run linting

* Do not close SettingsActivity

* Only show first view if not in HA Config + Fix flash of dashboard when navigating to app settings

* Scroll to top when calling first view of dashboard

If we are on a another view a we are scrolled to the bottom, the first view will be also at the bottom

* Use default dashboard as starting dashboard

* Allow HA config dashboard to call the first view of dashboard

- Also disallow /hassio (Home Assistant addons) to call the first view

* Enhance show first view setting description

* Fix class name spelling LifecycleHandler

* Fix calling first view of dashboard on config/areas and config/automation

Co-authored-by: Justin Bassett <bassett.justint@gmail.com>
2022-12-18 21:08:22 +00:00
Joris Pelgröm 7e5e3adfe9
Use entity icon for quick settings tiles by default (#3160)
- When creating a new quick setting tile, use the entity's icon by default
 - Move Wear icon based on entity domain code to common
2022-12-18 15:31:01 -05:00
Daniel Shokouhi 7f32738e10
Add a tile to start a conversation (#3158)
* Add a tile to interact with conversation integration

* Check HA core version and that conversation is enabled

* Rename search to conversation

* Add some TODOs, review comments for more clean up

* Review comment

* Add back private set
2022-12-18 15:25:00 -05:00
Daniel Shokouhi 8df504e1d7
Migrate more sensors to Wear OS (#3115) 2022-12-18 15:20:12 -05:00
Alex Bilevskiy c3349bb25a
use custom user-agent in websocket requests (#3137)
* use custom user-agent in websocket requests

* expose USER_AGENT const; fix imports in WebSocketRepositoryImpl.kt
2022-12-16 10:00:45 -05:00
Daniel Shokouhi e7c18b870c
Add new option to vibrate when quick settings tile is clicked (#3123)
* Add new option to vibrate when quick settings tile is clicked

* Use vibration effects if the device supports it

* Review comments

* Remove question mark

* Set switch color when unchecked
2022-12-16 09:55:59 -05:00
Joris Pelgröm 69d5949f14
Add initial Matter commissioning support (#3132)
* Matter commissioning: MVP

 - Implement a basic framework for the app to support Matter commissioning
 - Add hooks for the `matter/commission` message that will be sent by the frontend to trigger Matter commissioning

* [WIP] HA as Matter share target

* [WIP] Updated commissioning flow

 - Add websocket Matter API support
 - Update architecture to better ensure a working minimal build
 - Remove external bus responses for Matter commissioning message

* Rename MatterRepository

* Handle shared Matter devices

 - Adds UI to handle shared Matter devices instead of copying the pairing code to the clipboard
 - Updates the on network pairing pin/code to be a String, which may be received for shared devices

* Cleanup test button

* Pairing code type and service error handling

 - Update pairing/pin code type to Long for server
 - Send Play Services error if commissioning returned an error

* Increase timeout for Matter commissioning requests

* Use normal commissioning for shared devices

 - Use the normal matter/commission command for devices shared with the app
 - Shared device UI polishing

* Fix minimal and remove old name

* Update frontend commissioning status enum
2022-12-03 17:36:12 -05:00
Joris Pelgröm 442cb25e59
Add deeplinks to Wear OS sensor sync notifications (#3105)
Add deeplinks to Wear sensor sync notifications
2022-11-28 22:11:57 -05:00
Daniel Shokouhi fd7a593c41
Fix current version sensor so it properly reports the flavor (#3104)
* Fix current version sensor so it properly reports the flavor

* Review comments
2022-11-28 22:11:12 -05:00
Daniel Shokouhi f15b192a79
Reduce usage of job scheduling to avoid throttling (#3087) 2022-11-22 14:04:55 -05:00
Joris Pelgröm c50ce30b5b
Update and fix in-app language picker (#3080)
* Manage app language using AndroidX, integrate with Android 13

 - Manage the app language using AndroidX to fix the setting not being applied and to be able to easily integrate with Android 13's system setting

* Move locales_config.xml to common

* Generate locales_config.xml when downloading translations

* Fix multiple variants for languages being collapsed into one

* Fix language codes with region variants

* Don't split languages when using app bundles

* Rename
2022-11-22 13:59:24 -05:00
Daniel Shokouhi 5a38f95482
Add proper device class for daily distance sensor on Wear OS3 (#3079)
* Add proper device class for daily distance sensor on Wear OS3

* Only use the device class distance when supported
2022-11-22 13:57:21 -05:00
dependabot[bot] 62ebb90f2e
Bump hilt-android from 2.44 to 2.44.2 (#3071)
Bumps [hilt-android](https://github.com/google/dagger) from 2.44 to 2.44.2.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.44...dagger-2.44.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 14:42:31 +00:00
dependabot[bot] 1b5ab1c2ec
Bump hilt-android-compiler from 2.44 to 2.44.2 (#3072)
Bumps [hilt-android-compiler](https://github.com/google/dagger) from 2.44 to 2.44.2.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.44...dagger-2.44.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 09:30:21 -05:00
Joris Pelgröm 0bccff65c3
Revert jackson-module-kotlin bump to fix compatibility on older Android version (#3077) 2022-11-17 09:06:31 -05:00
Joris Pelgröm 23e65c491a
Make active websocket message tracking thread-safe (#3061)
- Make sure that the `activeMessages` map that tracks the active messages/subscriptions on the websocket is thread-safe to prevent exceptions when it is read/modified from different coroutines.
2022-11-12 17:37:33 -05:00
Daniel Shokouhi 494414eb87
Add Daily Calories, Distance and Steps sensors for health services (#3054)
* Add Daily Calories, Distance and Steps sensors for health services

* Process data points before condition to push update
2022-11-12 08:24:17 -05:00
dependabot[bot] a20fb24ddc
Bump jackson-module-kotlin from 2.13.4 to 2.14.0 (#3048)
Bumps [jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin) from 2.13.4 to 2.14.0.
- [Release notes](https://github.com/FasterXML/jackson-module-kotlin/releases)
- [Commits](https://github.com/FasterXML/jackson-module-kotlin/compare/jackson-module-kotlin-2.13.4...jackson-module-kotlin-2.14.0)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.module:jackson-module-kotlin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-09 16:18:05 -05:00
Joris Pelgröm e1c636e44e
Catch exceptions while sending websocket messages (#3046)
- Don't crash the app when the connection is closed while a message was still being sent on the websocket. Instead return null like what is done for invalid messages.
2022-11-09 16:16:05 -05:00
Daniel Shokouhi 57b3b771b4
Track time between hardware sensor updates to restart the listener as needed (#3026)
* Check if listener got stuck for heart rate sensor and restart if needed

* Apply reset listener logic to other hardware sensors

* Review comments
2022-11-09 16:14:49 -05:00
Daniel Shokouhi affc60178e
Add daily floors sensor for Wear OS3 devices (#3005)
* Add daily floors sensor for Wear OS3 devices

* Do a compatibility check for sensor availability in health services

* Print more logs and attempt to send latest data, update more getAvailableSensor methods

* Process review comments

* Process more review comments, use actual time in millis

* Clear out available sensors when updating with new list

* Log the capabilities in case we need to troubleshoot later

* Review comment

* Missed one additional review comment

* Return immediately instead of storing a list
2022-11-09 16:12:13 -05:00
Mads Sørensen e01246ae28
Add caching of favorites in Wear OS, resulting in prettier loading (#2982)
* Add caching of favorites, results in prettier loading

* Update wear/src/main/java/io/homeassistant/companion/android/home/MainViewModel.kt

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>

* Implement a lot suggestions from @jpelgrom
Revert previous changes to database and implement properly

* Apply suggestions from code review

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>

* Implement suggestions from @jpelgrom

* Remove null assertions from icon function

* Update wear/src/main/java/io/homeassistant/companion/android/home/views/MainView.kt

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>

* Fallback to entity ID if friendly_name is missing when creating cache,
Remove wrapper function to delete cached items

* Remove "clear cache" button

* Implement changes by @jpelgrom

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>
2022-11-09 16:06:38 -05:00
Daniel Shokouhi c89184bf31
Bump and switch to compose BOM dependency (#3028)
* Bump and switch to compose BOM dependency

* Bump kotlin and compose extensions
2022-11-03 12:31:35 -04:00
Joris Pelgröm 3b93bc1860
Fix location updates on core <2022.2 (#3030)
- Including `location_name` always breaks compatibility with previous versions as it will reject updates with unknown keys. Only including non-null values seems to work correctly and makes it work again on older versions.
2022-11-03 12:30:07 -04:00
Daniel Shokouhi 3afc5d4d55
Don't check Wifi SSID when home wifi list is empty (#3025) 2022-11-03 12:29:05 -04:00
Joris Pelgröm 9eac506105
Only resume once for websocket message responses (#3023)
- Don't try to resume on a websocket response coroutine if it was already resumed.
2022-11-03 12:28:44 -04:00
Joris Pelgröm c57b80b978
Only use internal URL when data is also using Wi-Fi (#3015) 2022-11-03 12:27:23 -04:00
Daniel Shokouhi 7f5dd17c87
Add a heart rate sensor to Wear OS (#3008) 2022-10-28 13:34:05 -04:00
Tiger Oakes 3f9b01affa
Remove unused setters (#3002) 2022-10-28 13:20:29 -04:00
Daniel Shokouhi 2a56db4a17
Add user activity sensor from health services for Wear OS (#2995)
* Add user activity sensor from health services for Wear OS

* Only add health services if device supports it

* Move library initialization to after isEnabled check

* Review comments
2022-10-25 21:31:28 +00:00
Jorden 1faf03a490
Add Wet Mode Sensor (#2994)
* Add Wet Mode Sensor

* Add Wet Mode Sensor

* Change Description

* Fix spelling

* Fix Sloppy mistakes
2022-10-25 17:12:28 -04:00
Tiger Oakes 993012f9dd
Convert Play tasks to coroutines (#2962)
* Convert tasks to coroutines

* Fix lint issues

* fullImplementation
2022-10-25 17:07:19 -04:00
Daniel Shokouhi c95725f767
Add more Wear OS sensors (#2981)
* Add more Wear OS sensors

* Update description for how sensors update, also update the type
2022-10-21 18:19:41 +00:00
Joris Pelgröm 760aca4fa1
Tweak onboarding design to be more unified (#2979) 2022-10-21 14:01:05 -04:00
Joris Pelgröm e637b423f2
Support zone name only location tracking (#2969)
* Support zone name only location tracking

* Update strings to match iOS

* Only add Sent location setting on supported versions

* String updates

* Simplify code as the setting is always on
2022-10-21 13:59:02 -04:00
Daniel Shokouhi e8fe823312
Add On Body sensor for Wear OS (#2961)
* Add On Body sensor for Wear OS

* Remove unnecessary requirement
2022-10-21 13:47:20 -04:00
RoboMagus 1f226a71fe
Settings activity app lock (#2926)
* Extract app lock timout functionality from WebViewActivity

* Add app lock authentication to SettingsActivity.
Handle enabling app lock setting authentication in SettingsActivity to avoid callback clash.

* Add blurview to SettingsActivity when app is locked

* Increase blur radius: 5px seems small enough to have text still somewhat legible

* Cleanup

* Cache appLock state for use in touch listeners

* Review rework

* Add onWindowFocusChanged to settingsActivity to check for authentication

* Cleanup SessionExpireMillis functions

* Fix logging formats

* Cleanup debug logging in onResume / onWindowFocusChanged handlers

* Linter fix

* Test SettingsActivity blurview without explicit background

* Improve isAppLocked() debug logging

* Increase applock grace period

* Fix setLockAuthenticationResult return value

* remove authentication from onResume. Perform only onWindowFocusChanged.

* Prevent double authentication prompt when enabling app lock

* Fix missing NotificationManagerCompat import
2022-10-21 13:41:24 -04:00
Joris Pelgröm acd8d2d660
Improve settings when using Home Assistant Cloud (#2965)
* Save cloud URL separately and add pref

 - Save the cloud / remote UI url that is received during registration separately, and add a preference to use the cloud url instead of the external url
 - Save the cloud / remote UI url and cloudhook url received during webhook config updates, to be able to support using cloud after the app was set up
 - Clean up cloudhook url when logging out

* Add UI for "Use Home Assistant Cloud" url

* Cleanup

* Fix function order
2022-10-19 14:53:01 -04:00
Daniel Shokouhi 865c911cb0
Add a screen off timeout sensor and command for control (#2960) 2022-10-19 14:50:25 -04:00
Daniel Shokouhi 4ded46af4d
Clean up spacing in BLE transmitter description (#2952) 2022-10-19 14:47:47 -04:00
Joris Pelgröm 0ea8821193
Update filter in Manage Sensors to all/enabled/disabled (#2950)
* Update filter in Manage Sensors to all/enabled/disabled

* Cleanup when (enums are exhaustive)
2022-10-19 14:47:23 -04:00
Joris Pelgröm dd800d00ea
Use compressed entity changes for device controls (#2942)
* Use compressed entity changes for device controls

 - Add support for the subscribe_entities websocket subscription which delivers initial state + changes in a compressed format to reduce data usage
 - Use the new subscribe_entities format in device controls on supported Home Assistant versions

* Less duplicate code
2022-10-19 14:47:10 -04:00
Joris Pelgröm 4a9dd8ba04
Android 13 notification changes + target (#2682)
* Request notification permission during onboarding

 - When using Android 13 or the minimal version, add a screen to onboarding to request to enable notifications on the device. This screen is based on iOS onboarding. When tapping Continue, on Android 13 this requests the system permission and/or on the minimal version this changes the websocket setting.
 - Compile with and target SDK 33 (targeting required to be able to request notification system permission on demand)

* Add notification settings link in settings when off

 - Show a new setting in settings for the user to enable notifications for the Home Assistant app, either because the permission was denied (Android 13) or the user manually turned off all notifications (Android 8-12).
 - This new setting replaces the notification channels setting when everything is off; in this case there is no point managing individual channels. If at least one channel is on, the existing notification channels setting is shown instead.

* Compose tweaks

 - Remove redundant content description for icon
 - Change to a simpler scroll modifier

* Fix skipping notifications on minimal version

 - Ensure that the value is actually saved to the database

* Post Bluetooth on/off commands as if invalid

 - When using Android 13, post notification commands to control Bluetooth on/off as a normal notification as if they were invalid, as the function has been deprecated for the app

* Remove type that can be inferred
2022-10-19 14:43:15 -04:00
Justin Bassett 1adc33bf61
Bump Hilt version to 2.44 (#2939)
Bump hilt version to 2.44
2022-10-01 17:12:32 -04:00
Joris Pelgröm abf0220430
Update Gradle to 7.5.1, Android Gradle plugin to 7.3.0 (#2934)
- Update Gradle to latest version (7.5.1)
 - Update Android Gradle plugin to latest version (7.3.0)
 - Move package property out of manifest into gradle build files namespace as recommended
2022-10-01 16:14:45 -04:00
Joris Pelgröm c2937e77aa
Simplify themes (#2923)
* Merge Follow Home Assistant/Follow System Settings theme

 - As these two themes behave the same now, don't present two options but instead just one. The default setting has been renamed back to "Follow System Settings" to best match expectations. Internally the "android" setting still works, settings will show "Not set".

* Remove useless webview force dark

 - The WebView force dark settings are no longer required (and will no longer be supported when targeting Android 13), as the latest appcompat/webview/HA frontend already respect the app's theme setting and allow overriding it
2022-10-01 16:11:31 -04:00
Daniel Shokouhi 60aadc906a
Show custom icon if set for the entity in device controls (#2922)
* Add support for showing custom icons in device controls

* Clean up and set color based on state

* Set icon size and adjust colors based on domain

* Move color values to resources and add more color options from source

* Review comments

* Only set the icon if it exists in the library
2022-10-01 16:10:52 -04:00
Joris Pelgröm ceac76cd9c
Fix websocket subscription race/dropping first message (#2902)
* Fix websocket subscription race/dropping first message

 - Fixes a race condition in the websocket repository for subscriptions, where the first message in a subscription might be dropped because the Flow + ProducerScope that handle the message weren't set up until after the subscription confirmation was received.
 - Inspired by home-assistant-js-websocket, make sure the response + subscription handlers are set up immediately after _sending_ the initial message. To make sure no messages are dropped, it'll now use a Channel to buffer event messages while not yet ready to receive them. The Channel will be collected inside the existing Flow that is only active while there are subscribers.
 - Send unsubscribe when receiving events for a subscription that isn't handled by the app.

* Fix websocket notifications causing unsubscribe
2022-10-01 16:09:59 -04:00
Daniel Shokouhi 1a5776371e
Add commands to control screen brightness and a sensor to get its value (#2894)
* Add commands to control screen brightness and a sensor to get the value

* Minor file clean up

* Review comments

* Rename Device Settings to Display Sensors
2022-10-01 16:09:01 -04:00
Daniel Shokouhi cabd41e6d5
Breaking Change: Only update geocoded sensor with location if the setting is turned on (#2913)
* Add a setting to control if the geocoded sensor should update with device tracker

* Update strings for settings
2022-09-26 10:55:02 -04:00
Daniel Shokouhi 7c6096634f
Allow custom intents register for categories in case they are required (#2901)
* Allow custom intents register for categories in case they are required

* Update description

* Update string to be more generalized and readable
2022-09-24 16:03:32 -04:00
Joris Pelgröm 2f552ca4c1
Fix another race condition in websocket unsubscribe/resubscribe (#2892)
- If the app checked for an active subscription right in between removing the flow and removing the subscription ID, this could result in an invalid state. To prevent this, use the same mutex that is used when obtaining the subscription when unsubscribing so that it is either completely removed or not removed at all.
 - Remove non-null assertion !! for the returned flow, at this point it is better to return an empty flow than to crash.
2022-09-24 16:01:47 -04:00
Daniel Shokouhi 91a4b02500
Change TTS error message and clean up some other strings (#2890) 2022-09-24 16:01:20 -04:00
Daniel Shokouhi 763819746a
Add a dynamic color sensor for accent color (#2884)
* Add a dynamic color sensor for accent color

* Update colors to color to match material design label
2022-09-24 15:56:10 -04:00
Joris Pelgröm 80816df6f5
Add support for using BSSIDs for internal connection (#2883)
* Add support for using BSSIDs for internal connection

 - Add support for entering BSSIDs to use for detecting when the internal connection URL should be used. These are saved like any regular SSID, but contain the prefix "BSSID:".

* Add link to documentation
2022-09-24 15:55:36 -04:00
Joris Pelgröm 6756e21112
Fix template widgets that render null in websocket subscription (#2866)
Fix widgets that return null in websocket subscription

 - Just like in the preview, null is a valid result and should be handled by the app
2022-09-10 15:18:10 -04:00
Joris Pelgröm bdc9094845
Improve adding quick settings tile (#2860)
* Improve adding quick settings tiles

 - Use the new option available on Android 13 to prompt the user to add a tile to the quick settings panel, if a tile wasn't already added
 - Switch Toast to Snackbar
 - Move some logic from the manage tiles view to viewmodel

* Only show subtitle field when supported

 - Setting a tile subtitle is only supported on Android Q+, so don't show the field on versions before that!

* Deeplink into app for tiles that aren't setup

 - Instead of disabling a tile if it isn't setup, if the user is logged in set it up as inactive with the default icon/label and deeplink into the app settings with a notice that it needs to be setup first. This provides a better first use experience, as the user can simply tap it to setup instead of requiring them to manually go to the settings.
2022-09-10 15:16:36 -04:00
Joris Pelgröm 45cdaeb764
Fix race condition in websocket unsubscribe/resubscribe (#2855)
- If the app tries to start a new websocket subscription before the last one was properly unsubscribed, the app will return a flow that is null and crash. To prevent this, change the unsubscribe logic to immediately remove the subscription ID - the confirmation isn't used. This will allow the app to start a new subscription and create a new flow even if the previous unsubscribe hasn't yet fully finished (which is OK).
2022-09-05 18:05:28 -04:00
Joris Pelgröm b2ff51f0c1
Fix entity registry change type / crash (#2854)
Fix entity registry change type

 - This isn't always a string but can also be an object or map
2022-09-05 18:04:44 -04:00
Daniel Shokouhi 5cad75d1eb
Add a setting to battery power sensor to convert current when it is not in microamps (#2848) 2022-09-05 15:42:13 +00:00
dependabot[bot] 2380741a45
Bump jackson-module-kotlin from 2.13.3 to 2.13.4 (#2851)
Bumps [jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin) from 2.13.3 to 2.13.4.
- [Release notes](https://github.com/FasterXML/jackson-module-kotlin/releases)
- [Commits](https://github.com/FasterXML/jackson-module-kotlin/compare/jackson-module-kotlin-2.13.3...jackson-module-kotlin-2.13.4)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.module:jackson-module-kotlin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-05 14:42:26 +00:00
Joris Pelgröm a711c659a4
Update Wear onboarding to always use phone for sign in (#2838)
* Always do Wear onboarding on phone

 - Switch the Wear onboarding to always use the sign in flow on the paired phone, instead of offering the option to sign in completely on the watch.
 - When opening the companion app using the Wear app, immediately link the user to the list of instances or sign in screen.
 - Use standard OAuth flow for devices without companion app installed.
 - Fix type casting of location preference in Wear onboarding result.

* Fix ListenableFuture await import
2022-09-05 10:25:13 -04:00
Daniel Shokouhi dab3640c6b
Fix sensorDao not initialized error after geocoded update (#2772)
* Fix sensorDao not initialized error after geocoded update

* Switch to sending an intent to update the sensor

* Review comments
2022-09-05 10:11:38 -04:00
Adrian Huber d0016e530e
Add Beacon Monitor (#2472)
* Add BLE Beacon Monitoring Sensor

* Fix on/off toggle

* Add on/off commands

* Fix commands

* Add all beacons to attributtes

* Add Kalman Filter

* Improve performance

* More settings

* cleanup

* Fix linter errors

* Update description

* Show monitoring state in sensor

* Add missing permissions

* Fix permissions

* Fix Bluetooth state of Android 12

* Use instance instead of singelton

* Use runBlocking for updateLastSendState

* Use own scope for beacon manager

* Use new notification commands

* fix rebase

* use null instead of empty string

* return if sensor is disabled
2022-09-05 10:07:26 -04:00
leroyboerefijn 3926a04e21
Update companion settings landing page for Wear settings (#2837)
* Update companion settings landing page for Wear settings

* Fix description

* Update text and label
2022-09-05 10:04:26 -04:00
Joris Pelgröm c6b36d82bb
Support device controls on locked Android 13 device (#2820)
- Add support for using device controls while the device is locked on Android 13 devices
 - Start compiling with Android 13's SDK to make this possible
2022-09-05 09:58:13 -04:00
Joris Pelgröm 232fbb2b2d
Better state change subscriptions in entity state and media player widgets (#2814)
Implement subscribe_trigger and use it in widgets

 - Implement support for subscribing using subscribe_trigger, currently used to get state changes only for specific entities
 - Change the entity state and media player widgets to use this new subscription instead of subscribing to all state changes, based on the template widget
 - Removed some placeholder code from media player widget
2022-09-05 09:56:44 -04:00
RoboMagus 2cf5a7d215
Option to bypass app lock on home network (#2800)
* Add setting to bypass app lock on home network

* Debug loging to check logic

* Fix logic. Cleanup logging.

* Disable home lock bypass when no home networks are configured.

* Only check for WiFi SSID, not internal URL when evaluating isLockEnabled.

* Fix build error
2022-09-05 09:53:07 -04:00
andyboeh 6b06e0d8a8
Add authentication to widget buttons (#2798) 2022-09-05 09:50:53 -04:00
Joris Pelgröm 84aa4454b7
Support websocket message coalescing (#2829)
- Add support for the new feature where core might combine multiple responses in to one single websocket message if it's faster. This might return a JSON array of objects instead of a single object.
 - Adjust logging for websocket, no longer prints entire result on non-debug builds.
2022-08-29 21:01:12 -04:00
Joris Pelgröm 3908a07c1f
Prevent crashes on Wear when offline / server no longer available (#2825)
- Catch exceptions thrown when executing calls to change an entity state instead of crashing the app
 - When revoking a session fails continue with logout as the server might no longer be available and the user otherwise might be 'locked in' with no way to change the server
2022-08-29 20:53:52 -04:00
Aaron Wood cfafffd27f
Remove toast when failing to send notification clear event (#2576) 2022-08-29 20:31:49 -04:00
Wouter van der Wal 0148c65284
Calculate fan speed step count (#2818)
* Calculate fan speed step count

* Fix linting issues

* Fixed wrong function name in log text

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>

Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>
2022-08-29 20:27:02 -04:00
leroyboerefijn d00c823651
Faster entity selection Wear OS (#2804)
* Always collapse headers and add favorites section

* Remove unneeded entity update subscription

* Process comments

* Use shorthand for favorites loop in MainView
2022-08-29 20:24:35 -04:00
Joris Pelgröm a995d9410b
Support multiple subscriptions of same type in websocket and use in template widget (#2801)
* Update WebSocketRepository for multiple subscriptions of same type

 - Change the structure of how the websocket repository tracks individual subscriptions to allow subscribing multiple times with the same type, but different data

* Update TemplateWidget to use template subscriptions

 - Instead of depending on entity state changes and refreshing any time there is a change, use the render_template subscription for the template widget to limit the amount of data and power used. To make this possible without too much abstractions, the TemplateWidget no longer implements BaseWidgetProvider.
 - Fix hardcoded "Loading" string

* Handle potential null subscription ID

 - Implements #2795 for changes to tracked subscription ID

* Handle failed subscribing similar to other failures (null)

 - When subscribing fails, return null and don't store an active subscription instead of continuing and returning a flow (which would never emit messages)

* Update manifest
2022-08-29 20:23:48 -04:00
Daniel Shokouhi ef5ec73a87
Add a battery power sensor (#2799)
* Add a charging wattage sensor

* Rename sensor to battery power, update icon logic and expand description
2022-08-19 21:26:14 -04:00
Rocik 4b8b3abf4b
Fix crash on widget update when internet is not connected (#2615) 2022-08-19 21:15:38 -04:00
Daniel Shokouhi 06fe9569cc
Don't attempt to unsubscribe from event when the ID is null (#2795)
* Don't attempt to unsubscribe from event when the ID is null

* Clean up the subscription when the ID is null

* Update logic
2022-08-19 20:31:52 -04:00
Joris Pelgröm 4e55fa67f5
Handle foreground service restrictions for SensorWorker (#2791)
- Catch a ForegroundServiceStartNotAllowedException on Android 12+ and continue in the background instead of failing the job
2022-08-13 20:52:13 -04:00
Joris Pelgröm 550c18c6e2
Handle foreground service restrictions for persistent connection (#2790)
* Handle foreground service restrictions for persistent connection

 - When trying to start the WebsocketManager as a foreground service, catch exceptions due to restrictions and show the user a notification to fix it

* Update logging in WebsocketManager
2022-08-13 20:49:55 -04:00
Joseph Madamba 80a669da4e
Fix typo on location tracking description (#2784) 2022-08-13 20:39:54 -04:00
Daniel Shokouhi 280c325ca5
Save the last response so we can properly unsubscribe from events when the response ID has changed (#2781)
* Save the last response so we can properly unsubscribe from events when the ID has changed

* Apply code review suggestion

* Clean up last response after unsubscribing

* Only save the ID instead of the entire response
2022-08-13 20:38:50 -04:00
Joris Pelgröm 906e1f7a9b
Fix potential client certificate crashes (#2767)
- When unable to load the certificate chain or private key, the app should return null which will result in a system prompt to select a valid, available certificate
2022-08-06 13:02:58 -04:00
dependabot[bot] ca6c0c505f
Bump hilt-android from 2.42 to 2.43.2 (#2754)
Bumps [hilt-android](https://github.com/google/dagger) from 2.42 to 2.43.2.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.42...dagger-2.43.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 22:59:49 +00:00
dependabot[bot] c45618b355
Bump hilt-android-compiler from 2.42 to 2.43.2 (#2755)
Bumps [hilt-android-compiler](https://github.com/google/dagger) from 2.42 to 2.43.2.
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.42...dagger-2.43.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 18:24:00 -04:00
Daniel Shokouhi c717e16afc
Update geocode location sensor with location updates that are sent to HA (#2757)
* Actually update geocoded sensor on location updates we send to HA

* Ensure sensor is updated before checking if we should send the update

* Move update logic to sensor receiver, ensure last sent attributes are updated
2022-08-04 18:00:07 -04:00
Daniel Shokouhi d68666dae0
Bump some app dependencies (#2751)
* Bump some phone app dependencies

* Add wear dependencies

* Bump compile SDK in common
2022-08-03 18:03:14 -04:00
Daniel Shokouhi db0ddf25c2
Actually check the paired state instead of assuming it for bluetooth connection sensor (#2738)
* Actually check the paired state instead of assuming it

* Ensure the attributes have no duplicates by making the lists distinct

* Actually check for duplicate devices to remove them

* Apply code suggestion

* Revert some changes and remove allowDuplicates per comment
2022-08-03 18:01:21 -04:00
Daniel Shokouhi 8d57290314
Add support for lock domain in QS tiles and other improvements (#2737)
* Add support for lock domain in QS tiles, change tile not setup message to be more precise

* Update dispatcher

* Review comments: Remove not setup from string, only get state if domain is lock when tile is clicked

* Remove duplicate strings
2022-08-03 18:01:13 -04:00
Márton Maráz 7f1677a2dd
Fix Last Notification sensor not updating when notification is repeated with the same content (#2734)
Make Sensor::lastSentState and lastSentIcon nullable, set them to null when forceUpdate = true, and make null their default value everywhere.
2022-08-03 17:58:23 -04:00
Joris Pelgröm 80d05a77a9
Fix sensor re-registration on logout/login on core 2022.6+ (#2730)
- Make it possible to distinguish between unable to get response/not supported and got a response but server doesn't know about entity. If there is a response but the server doesn't know about the entity, even though it should according to the database, re-register the sensor.
2022-07-29 17:56:33 -04:00
Daniel Shokouhi d03eb74fa9
Improve logging and error messages during onboarding (#2716)
* Add logging in authentication fragment to print errors

* Expand error messages to contain more useful data

* Add error content to pop-up to provide more data to the user

* Show more descriptive onReceivedError message

* Ensure the correct messages are used

* Add changes from @jpelgrom to only show the error on the expected URL

* Add condition to onReceivedErrror as well
2022-07-29 17:51:44 -04:00