Commit graph

317 commits

Author SHA1 Message Date
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