Commit graph

474 commits

Author SHA1 Message Date
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
Joris Pelgröm 00c2ef6d9e
Add toggle for Assist as assistant app on Wear (#3663)
Add toggle for assistant app intent filter on Wear

 - Adds a toggle for enabling/disabling Assist as an assistant app (= intent filter on Assist activity), as users may not be able to change the app used after choosing 'Always' and Wear OS 2 doesn't ask the user which app to use which can result in Assist instead of the Google Assistant being forced.
2023-07-17 08:10:15 -04:00
Joris Pelgröm cd62f17fac
Use new entity picker for more settings (#3662) 2023-07-17 08:08:51 -04:00
Joris Pelgröm bc103636db
Update/replace deprecations in app module (#3661) 2023-07-17 08:08:20 -04:00
drosoCode 33dfc69949
Add CarInfo sensors (#3399)
* Add CarInfoSensorManager

* use overrideLibrary instead of increasing minSdk

* use fullImplementation

* ensure that the sensor is enabled

* check sensorid for required permissions

* fix formatting

* start app notification

* merge CarInfoSensorManager into AndroidAutoSensorManager

* fix formatting

* fix merge error

* add other sensors

car name, manufacturer, manufacturing year, odometer, ev status (connected, charging port open/close)

* prevent multiple notifications

* apply review comments

* add "needs to be started" state to sensors

* apply review comments

* add android auto channel

* set car battery level as diagnostic sensor

* remove onNewIntent (not needed)

* formatting

* remove notification code

* replace "android_auto" prefix by "car"

* move carinfo sensors to main instead of full

* move android car sdk override to main

* update unavailable message

* add hasSensor method

* hide sensors for automotive

* move automotive check and limit sensors to full version

* remove _level from sensor names and ids

* remove alreadySentMessage
2023-07-17 08:05:00 -04:00
Joris Pelgröm 9d64260e1f
Implement a frontend-like single entity picker (#3653)
* Implement a frontend-like single entity picker

 - Adds a new Composable `SingleEntityPicker` which aims to provide a text input with autocomplete search for entities like the frontend, where you can pick one

* Improve filtering to allow suggestions with space, searching for entity IDs

 - Trim search input so the space automatically added after an IME suggestion is ignored
 - Also search entity ID but sort those results second, friendly name keeps priority
2023-07-14 15:34:05 -04:00
Joris Pelgröm 8bf32b30e9
Minor update to Auto(motive) login screen (#3647) 2023-07-09 17:31:27 -04:00
dependabot[bot] 7a8247caf9
Bump org.altbeacon:android-beacon-library from 2.19.5 to 2.19.6 (#3629)
* Bump org.altbeacon:android-beacon-library from 2.19.5 to 2.19.6

Bumps [org.altbeacon:android-beacon-library](https://github.com/AltBeacon/android-beacon-library) from 2.19.5 to 2.19.6.
- [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>

* Remove unused beacon library in app/automotive, add appcompat to common

---------

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-07-07 11:53:39 -04:00
Joris Pelgröm 0949d570d5
Add Android Auto notification extension (#3642)
Add Auto notification extension + vector icon

 - Add an option to have notifications show up on Android Auto
 - Apply color filter to MDI notification icons as Android Auto doesn't make them white
 - Switch default notification icon for vector icon
2023-07-07 11:51:10 -04:00
Joris Pelgröm 774e89c58e
Implement suggestion area in app settings (#3640)
Implement suggestion area in settings

 - Add a suggestion area to the top of the main app settings screen where very important settings can be promoted; to start setting HA as assistant app and enabling the notification permission
2023-07-07 11:41:35 -04:00
Joris Pelgröm d1b17aa606
Jetpack Compose icon dialog (#3631)
* Add icon dialog based on Jetpack Compose

TODO

* Migrate to new icon dialog

* Migrate old database

* Don't wrap with drawablecompat

* Rebase fixes and updates

 - Fix and update database migration
 - Fix dependencies
 - Fix shortcut icons
 - Fix ComposeView in AlertDialog not working by switching implementation to DialogFragment
 - Fix icons that no longer exist
 - ktlint

* Visual compatibility

 - Automotive asset
 - Handle icon ids in shortcuts to prevent users losing icons when updating shortcuts
 - Add padding, color filter to shortcut icons to keep icons consistent with older icons
 - Increase button widget icon padding to keep sizing consistent
 - Add tip to dialog about searching in non-English languages

* Fix line endings

---------

Co-authored-by: Tiger Oakes <contact@tigeroakes.com>
2023-07-04 13:25:32 -04:00
Justin Bassett 7a7464c070
Bump dependency versions. (#3627) 2023-07-01 01:14:24 +00:00
Joris Pelgröm 3338437e7d
Support sensor display precision (#3625)
* Support sensor display precision

* Apply Lint suggestion in same function
2023-06-30 20:04:56 -04:00
Joris Pelgröm 8dbdfebb7b
Hide a few GMS features unavailable on Automotive (#3623) 2023-06-30 18:26:20 -04:00
Joris Pelgröm 2023268e37
Add 'Manage assistants' button to native Assist (#3616) 2023-06-29 22:19:45 -04:00
Joris Pelgröm 48a7755e62
Add shortcut for Assist (#3615)
- Adds a shortcut to the app that allows accessing Assist from the home screen, including options for pipeline and voice/text
2023-06-29 22:19:13 -04:00
Joris Pelgröm 1ed0f6a094
Add troubleshooting menu to settings, with Thread credentials sync (#3614)
* Add troubleshooting menu to settings, with Thread credentials sync

 - Add a troubleshooting menu to the app settings which includes logs/debugging settings
 - Add an option to manually sync Thread credentials and view the result

* Less technical messages matching frontend
2023-06-29 22:18:28 -04:00
Joris Pelgröm edf6ba5b9f
Use Assist pipeline STT/TTS on Wear OS (#3611)
* Use Assist pipeline STT/TTS on Wear OS

 - Update Assist pipeline support on Wear OS to use the pipelines' STT/TTS capabilities, if available and if the app has the required permission
 - Move UrlHandler functions (app) to UrlUtil (common)

* Create a base AssistViewModel for sharing code

 - Creates AssistViewModelBase in common to share Assist tasks that appear in both the main app and watch app

* Keep screen on during voice input to avoid interruption
2023-06-29 22:17:26 -04:00
Justin Bassett 0ef3bc4461
First attempt at a new release model. (#3597)
* First attempt at a new release model.

* Fix bad syntax

* Bump year and month with another job

* Use the plugin's version in apps.

* Make sure to generate the pre release weekly.

* Review Comments.
2023-06-26 09:05:17 -04:00
Joris Pelgröm 02793338e2
Minor Assist UI feedback/changes (#3607)
- Remove attribution
 - Scroll when messages are updated in case messages are longer than the "…" while running
 - Animation for active voice input
2023-06-25 21:59:55 -04:00