Commit graph

493 commits

Author SHA1 Message Date
Yuri Schimke da43981208
Better Wear Check (#4024) 2023-11-25 12:12:21 -05:00
Ruben van Dijk f5886dce1a
Added a sensor to detect if the hotspot is enabled. (#4012)
* Added a sensor to detect if the hotspot is enabled.

* Validate if we aren't running a watch before showing hotspot sensor.

* Fixed code style issues with the linter.

* Fix instant update for hotspot-sensor.

* Update hotspot icon to access-point instead of wifi.
2023-11-22 12:54:06 -05:00
Joris Pelgröm ac7ba33ae7
Show server name in "Unable to connect to Home Assistant" dialog (#3995)
- Shows the server name instead of a generic "Home Assistant" to prevent confusion when the app cannot connect in the WebViewActivity, when using multiserver.
2023-11-04 14:59:15 -04:00
Joris Pelgröm 2da1a36c55
Websocket onMessage: prevent out of order delivery due to launch (#3990)
Websocket onMessage: prevent out of order delivery due to launch
2023-11-01 19:01:20 -04:00
Joris Pelgröm e8815f12e5
Always send sensor registration device class + entity category to prevent errors due to old registration (#3977)
* Always send device class during registration

 - Always send the device class for a sensor during registration to overwrite any existing invalid values

* Only send sensor registrations with null properties to core 2023.2+
2023-10-28 11:18:03 -04:00
Joris Pelgröm 7d76bb4b51
Update tiles logged out state to prevent cut off overflow, shortcuts tile label (#3975)
Update tiles logged out state to prevent cut off overflow

 - Limit length of logged out state string to prevent text cut off and shorten strings to help with translations
 - Fix inconsistent shortcuts tile name
2023-10-28 11:15:22 -04:00
Daniel Shokouhi a596a1183d
Use deprecated wifi method in case WifiInfo is null (#3970)
* Use deprecated wifi method in case WifiInfo is null

* Add comment about why we are reusing the deprecated method
2023-10-25 23:24:27 -04:00
Joris Pelgröm 5314e4b08b
Update Jetpack/Google dependencies (Oct 2023) (#3966) 2023-10-22 12:19:47 -04:00
Joris Pelgröm cda25479d6
Add clear_notification support to Wear OS (#3956)
- Move the clear_notification command to common extensions and add support in the Wear OS app
2023-10-20 17:45:48 -04:00
Daniel Shokouhi 709ca07e8c
Shorten some settings strings (#3921)
* Shorten some settings strings

* Remove unused string
2023-10-06 16:51:32 +00:00
Márton Maráz 2641422e50
Add NFC state sensor (#3905)
* Add first draft for NFC sensor

* Rename NfcSensorManager.nfcSensor to nfcStateSensor

* Move NfcSensorManager to the common module

* Add BroadcastReceiver subscription to NfcAdapter.ACTION_ADAPTER_STATE_CHANGED in both the app and wear modules

* Remove TODO comments

* Change updateType to INTENT

* Convert simple methods to expression body

* Change mdi:nfc to mdi:nfc-variant

* Fix docs URL

* Reword NFC sensor manager according to the PR suggestions
2023-10-05 09:57:33 -04:00
Joris Pelgröm 4a4cc31b97
Update icon (#3888)
* Update icon

 - Replace old icon with the new icon
 - Update app primary color to new blue tint
 - Deduplicate resources

* Update feature graphic

* Decouple app icon color from main color
2023-09-28 17:38:48 -04:00
Joris Pelgröm b0ad11d04f
Add troubleshooting tool: location history (#3886)
* Add location history (location, trigger, result)

 - Initial setup saving data, no UI, cleanup or preferences yet

* On/off setting, limit history size and basic UI

 - Add a on/off setting for location history (default on)
 - Limit the history size to 48 hours, any older entries will be deleted during regular sensor updates
 - Add a basic UI for location history based on paging considering the possible data size with multiserver/high accuracy. The list looks good and shows status at a glance, detail view still needs work.

* Finish expanded UI

 - Make the expanded UI nicer and show relevant data, buttons for opening the location in a maps app and sharing log data
 - Add empty states for location history

* Filter by state, improve list speed

 - Add option to filter by state
 - Simplify Room configuration and sort by indexed ID to improve list loading speed

* Remove duplicate source

* Fix minimal

* Split sent into sent and failed to send
2023-09-28 17:37:37 -04:00
Lev Aronsky a31cd2fdaa
Fix isActive for locks (#3862)
* Fix isActive for locks

Lock entity should be active when locked, inactive otherwise

* Added a comment to explain the change
2023-09-19 15:40:07 -04:00
Joris Pelgröm 3915ec6d8f
Automatically fix broken registrations/webhooks (#3875) 2023-09-19 15:38:50 -04:00
Joris Pelgröm 2c20baf0f5
Add camera tile to Wear OS (#3870)
* [WIP] Prepare camera snapshot tile

* Deduplicate refresh views

* Get/save tile config in the database

* Deduplicate haptic click, add to camera refresh

* [WIP] Camera tile settings UI

 - Create UI to set camera tile settings
 - Reuse shortcut tile settings activity as a general tile settings activity

* Rename camera snapshot tile to camera tile

* Cleanup: camera entities selection, empty state, preview image

 - On initial load also create a list of camera entities to make it possible to select them without showing up elsewhere in the app
 - Add text to empty state instructing the user to set a camera
 - Update tile preview images

* Fix logged out state on missing tile config

* Force tile update on login

* Scale bitmap to fit inside screen size

 - Scale the received image to a bitmap that does not exceed the screen size to ensure timely refreshes and prevent parcels that are too big
2023-09-17 16:57:33 -04:00
Joris Pelgröm 4163e1465e
Add Android 14 device controls panel (#3855)
* Prepare controls panel activity for Android 14

* Allow controls panel to work while locked

* UI to enable/disable controls panel

 - Disable panel by default
 - Add area to controls settings on Android 14 to enable/disable panel

* Panel server/path settings

 - Add setting to choose which server and path to use for the panel

* Remove transition animation for panel

* experience -> mode
2023-09-12 21:47:57 -04:00
Guillermo Orellana 6c54aa84b7
Fix crash on empty URL strings (#3846)
defensive url parsing
2023-09-06 08:32:45 -04:00
Joris Pelgröm b6687dc762
Shortcut path input improvements (#3831) 2023-08-31 19:53:32 -04:00
Daniel Shokouhi 3cc7bdca08
Fix last update sensor intent not retrieving value (#3825)
* Fix last update sensor intent not retrieving value

* Suppress deprecation

* Move suppression
2023-08-28 17:44:10 -04:00
Daniel Shokouhi bb58a578dd
Use unavailable and unknown states consistently when dealing with sensors and entities (#3821)
* Use unavailable and unknown states consistently when dealing with sensors and entities

* Update more sensors

* Remove unused import
2023-08-28 17:43:25 -04:00
Joris Pelgröm 6d4fa06545
Thread updates: add border agent ID, multiserver improvements (#3820)
* Add/update/delete Thread credentials by border agent ID

* Multiserver: only keep one HA credential, handle credentials for deleted servers

 - Make sure the app only stores one HA credential that matches the preferred credential for the server executing the sync.
 - Create an 'orphaned Thread credentials' system to be able to delete credentials for servers that have been previously deleted.

* Fix minimal
2023-08-26 16:54:40 -04:00
Daniel Shokouhi 6c2e555e57
Various changes to entity usage (#3816)
* Various changes to entity usage

* Remove unneeded code

* String fixes

* Remove redundant string
2023-08-26 16:53:31 -04:00
Joris Pelgröm fb71b9c788
Update to Kotlin 1.9/Compose 1.5/Compose Wear 1.2/AGP 8.1.1 (#3814)
- Update to Kotlin 1.9
 - Update to Compose 1.5 and Compose Wear 1.2, both depend on and are required for Kotlin 1.9. Compose Wear includes lazy classes moving to a different package so updated imports.
 - Update to AGP 8.1.1 to remove compatibility warning
 - Update Navigation Compose to 2.7.1 as it uses Compose 1.5 internally
 - Update Accompanist to 0.32 as it uses Compose 1.5 internally
 - Switch Room to KSP instead of kapt because this (latest stable) release doesn't work with Kotlin 1.9 otherwise. As a result, we no longer need to specifically enable incremental compilation.
2023-08-24 14:51:29 -04:00
Daniel Shokouhi 1bdbd3f2ce
Android Auto: Set icon color when entity is considered in an active state (#3805)
* Android Auto: Set icon color when entity is considered in an active state

* Add link to frontend code for determing active state

* Add lawn_mower domain and a check on supported colored domains

* Split up isActive and state colored domains

* Update map screen
2023-08-24 14:43:10 -04:00
Joris Pelgröm 7f14582909
Add 'toggle' tap action to entity state widget (#3798)
* [WIP] Widget tap action: toggle entity

* Add feedback on press and failure

* Share code for pressing on entities

* Align cover press action

 - Toggle will stop if possible when opening/closing if supported so prefer toggle instead of open/close

* Toggle by default if supported

 - Set the default tap action for supported entities to toggle instead of refresh

* Update widget description
2023-08-19 19:24:44 +00:00
Joris Pelgröm e3ce9ed5b0
Fix phone state sensor only considering 1 subscription's calls (#3803) 2023-08-19 18:52:24 +00:00
Daniel Shokouhi 256835a380
Add update sensors notification command to Wear OS (#3774) 2023-08-10 13:55:54 -04:00
Joris Pelgröm 73bc7b01fa
Update strings for sentence-style casing (#3768)
* Update strings for sentence-style casing

* Don't remove strings

* Update Companion App
2023-08-07 20:17:09 +00:00
Daniel Shokouhi 28b6d8ec32
Add support for alarm control panels in android auto (#3765)
* Add support for alarm control panels in android auto

* Check for domain when checking if there is a code

* Check that armed_away is a supported state

* Review comments

* Add some missing strings, match state casing with HA core
2023-08-07 15:53:03 -04:00
Daniel Shokouhi 2d439f11ea
Set car sensors state appropriately if sensor registers with unit of measurement (#3764)
* Set car sensor state appropriately if sensor registers with unit of measurement

* Stick to unavailable for better consistency
2023-08-07 15:50:21 -04:00
Joris Pelgröm 49f3080b9e
Update ExoPlayer usage (#3760)
* Switch to StyledPlayerView for migration

* Migrate to media3 for ExoPlayer

* Replace deprecated code

* Restore/customize layout to ExoPlayer v2
2023-08-04 20:07:52 -04:00
Joris Pelgröm add1955901
Assist last used: remember STT and record proactively (before connected) (#3755)
Assist last used: remember STT and record before connected

 - For the last used pipeline for Assist, remember whether or not it supports STT input, and if it does start recording proactively/as soon as possible to avoid missing voice input while doing network checks.
 - Fix potential wrong server while sending voice data.
 - Fix voice input remaining active after getting an error response.
2023-08-04 10:59:27 -04:00
Justin Bassett 1a6c2b94d2
Initial work on migrating plugins to catalogs. (#3737)
* Initial work on migrating plugins to catalogs.

* Remove Enterprise Build profiling since we really don't use it.

* Use a common Java Version and sdk versions.

* ktlint

* Review comments.
2023-07-31 20:35:39 -04:00
Daniel Shokouhi 94413801ec
Hide some sensors from unsupported devices (#3740)
* Hide some sensors from unsupported devices

* Move UI manager to condition
2023-07-31 15:19:14 -04:00
Joris Pelgröm 670b17e76c
Apply various IDE code quality suggestions (#3734) 2023-07-31 15:17:42 -04:00
Márton Maráz a8a7363317
Implement support for multiple Shortcut Tiles on Wear OS (#3697)
* Extract JSONArray -> List<String> conversion to extension fun

* Refactor navigation around Shortcuts Tile settings

* Add ShortcutsTileId enum class

* Introduce multiple ShortcutTile subclasses and modify settings UI and storage to support multiple Tiles

* Check if correct ShortcutsTileId is passed as parameter to BaseShortcutTile

* Update TileUpdateRequester usages to account for multiple Tiles

* Add entity count to Shortcut Tile list in Settings

* Fix ktlint errors

* Fix more ktlint errors

* Extract string resource

* Add MULTI_INSTANCES_SUPPORTED to ShortcutsTile to be able to use any number of Tiles

* Refresh the list of Shortcut Tiles in the Settings without needing to restart the app

* Remove test logs

* Update androidx.wear.tiles:tiles to the latest version which doesn't yet require API 34 compileSdk version

* Fix crash when the preference's value is "{}"

* Fix crash when key String is "null" and converting to Int

* Rename placeholder variable name

* Add a comment explaining why to save the tiles in a getter

* Return emptyList() directly for clarity

* Remove icons from "Shortcut tile #n" entries in Settings

* Pass emptyList instead of using the non-null assertion operator to prevent NPEs in edge cases

* Refactor getTileShortcuts and getAllTileShortcuts in WearPrefsRepositoryImpl.
Make the code more readable and understandable, and reduce code duplication.

* Make it explicit that intKey is only intended to be null if stringKey == "null"

* Rename getTileShortcuts to getTileShortcutsAndSaveTileId and make it save the tileId not only when there's a null key in the map, but also when the tileId is not yet in the map. This way, actual Tiles and the tileId keys will be more in sync.

* Handle adding Shortcuts Tile immediately after updating the app to a new version which introduces support for multiple Shortcuts Tiles.

* Show message in the Settings when there are no Shortcuts tiles added yet.

* Refine message in the Settings when there are no Shortcuts tiles added yet

* WIP: ConfigShortcutsTile action

* Update comments about Wear OS versions

* Finalize ConfigShortcutsTile feature by applying @jpelgrom's suggestion to OpenShortcutTileSettingsActivity

* Only wrap the code in runCatching which is expected to throw an Exception under normal circumstances, when the pref value needs to be migrated from the old format.

* Call getTileShortcutsAndSaveTileId in OpenShortcutTileSettingsActivity

* Remove unnecessary stuff
2023-07-31 15:14:01 -04:00
Justin Bassett ba3170362e
First Steps into making Gradle Catalogs (#3724)
* First Steps into making Gradle Catalogs

* Rename a couple dependencies.

* Downgrade compose compiler since it'll take more to bump the kotlin version apparently.

* Code review comments.

* Refactoring these are painful.

* Now I know my ABC, next time wont you sing with me....
2023-07-29 11:11:08 -04:00
Joris Pelgröm 8f7abb4379
Fix old server references in app-level preferences (#3728) 2023-07-28 13:50:16 -04:00
Daniel Shokouhi 4069d29d0a
Android auto: Switch to GridTemplate for home screen and default to favorites if defined (#3694)
* Android auto: default to favorites if defined

* Fix changing servers

* Fix empty favorites list

* Review comments

* Account for extra grid items when showing favorites

* Switch to grid view for home screen, show all domains when there are no favorites for the server

* Review comments

* Clean up and move some methods to util

* Collect favorites with allEntities

* Review comments

* Move native mode logic back

* Check distraction again in domain screen

* Use base class to get distraction optimized variable

* Send blank template if user is not logged in

* Mark variables as private

* Fix icon resolution for grid items
2023-07-27 15:41:22 -04:00
Sebastian Lövdahl 3db34ec408
Show measurement unit in Wear OS complication (#3703)
* Show measurement unit in Wear OS complication

* Extend existing `friendlyState` method

* Make showing unit configurable (defaulting to false)

* Feedback fixes
2023-07-25 14:37:31 -04:00
Joris Pelgröm 6744b61a80
Fix Wear more details crash with Kelvin light temperature (#3706) 2023-07-24 20:54:39 +00:00
Joris Pelgröm 1cbfd11190
Use WifiManager deprecations again for instant 'location' info (#3705) 2023-07-24 20:08:30 +00:00
Joris Pelgröm 6d457cf718
Update/replace deprecations in common module (#3698) 2023-07-24 10:29:03 -04:00
Daniel Shokouhi 605e6ec914
Add favorites selection for Android Auto (#3670)
* Add favorites selection for Android Auto

* Move reorderable to implementation

* Small clean up

* Hide from minimal build

* Show on automotive builds and change some titles to match that device

* Update strings to be more precise about driving optimized

* Review comments

* Switch from string set to string to preserve order

* Move some conversion logic to PrefsRepository

* clean up

* Review comments

* Consistency updates
2023-07-21 14:11:14 -04:00
Daniel Shokouhi 455da053d1
Add sensors to report car energy profile (#3688) 2023-07-20 21:50:48 -04:00
Daniel Shokouhi d421b88db2
Send state based on reported status, apply car prefix to car sensors, add some logging around new car sensors (#3668)
* Apply car prefix to car sensors, add some logging around new car sensors

* Update state based on reported status, minor clean up

* Make code more concise per review comment

* Use unavailable when status is not given
2023-07-19 16:18:05 -04:00
Justin Bassett c4da52bdab
Hilt Dependency Update (#3681)
* Bump com.google.dagger:hilt-android-gradle-plugin from 2.46.1 to 2.47

Bumps [com.google.dagger:hilt-android-gradle-plugin](https://github.com/google/dagger) from 2.46.1 to 2.47.
- [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.46.1...dagger-2.47)

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

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

* Bump com.google.dagger:hilt-android-compiler from 2.46.1 to 2.47

Bumps [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) from 2.46.1 to 2.47.
- [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.46.1...dagger-2.47)

---
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>

* Bump com.google.dagger:hilt-android from 2.46.1 to 2.47

Bumps [com.google.dagger:hilt-android](https://github.com/google/dagger) from 2.46.1 to 2.47.
- [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.46.1...dagger-2.47)

---
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>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-19 15:35:11 -04:00
Joris Pelgröm 7b79024c1b
Update Thread network sync to update/delete HA networks (#3676) 2023-07-18 18:43:39 -04:00
Joris Pelgröm ef916f606b
Breaking change: support last_used/preferred pipeline IDs and use last_used by default (#3669)
Support last_used/preferred pipeline IDs and use last_used by default
2023-07-18 18:42:36 -04:00