Commit graph

1276 commits

Author SHA1 Message Date
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
dependabot[bot] 647d6c4533
Bump sentry-android from 6.4.0 to 6.4.1 (#2836)
Bumps [sentry-android](https://github.com/getsentry/sentry-java) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/getsentry/sentry-java/releases)
- [Changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-java/compare/6.4.0...6.4.1)

---
updated-dependencies:
- dependency-name: io.sentry:sentry-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-09-05 10:05:33 -04:00
Joris Pelgröm e31ec2f731
Send external url to Wear discovery (#2839) 2022-09-05 10:05:04 -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 567e286bfa
Fix media notification command (#2835)
Fix media command

 - Fixes the media command code using 'command' to check if it is included but 'media_command' to do the actual command
2022-09-05 10:00:08 -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
Daniel Shokouhi 6e647cb436
Only add next subscription if control is not null (#2812)
* Only add next subscription if control is not null

* Add one more null check for control
2022-08-29 20:50:09 -04:00
Aaron Wood cfafffd27f
Remove toast when failing to send notification clear event (#2576) 2022-08-29 20:31:49 -04:00
dependabot[bot] 809c7a4f09
Bump org.jlleitschuh.gradle.ktlint from 10.3.0 to 11.0.0 (#2817)
Bumps org.jlleitschuh.gradle.ktlint from 10.3.0 to 11.0.0.

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

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-08-29 20:29:51 -04:00
Joris Pelgröm e30390533d
Don't notify about cancellations in WebsocketManager (#2831)
Don't notify about cancellations in WebSocketManager
2022-08-29 20:27:46 -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
Joris Pelgröm af0371fb7b
Fix adding media player widget from settings (#2813)
- Adding a media player widget from settings didn't work because the list used to check that entities have been selected isn't updated immediately, but only on load or in a callback after pinning the widget. To work around this, manually check it before pinning the widget.
2022-08-29 20:26:39 -04:00
Daniel Shokouhi db8913c712
Breaking Change: Add some more attributes to geocoded sensor and check that device supports it (#2809)
* Add some more attributes to geocoded sensor and check that device supports it

* Remove language attribute as it does not supply the expected data

* Combine latitude and longitude into the location attribute again
2022-08-29 20:25:48 -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 ebc6b76dda
Update changelog week of 8/19 (#2808)
* Update changelog week of 8/19

* Mention battery power sensor
2022-08-20 08:52:49 -07: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
dependabot[bot] 358854b894
Bump sentry-android from 6.3.1 to 6.4.0 (#2806)
Bumps [sentry-android](https://github.com/getsentry/sentry-java) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/getsentry/sentry-java/releases)
- [Changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-java/compare/6.3.1...6.4.0)

---
updated-dependencies:
- dependency-name: io.sentry:sentry-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>
2022-08-19 20:35:11 -04:00
Daniel Shokouhi efdd5272e0
Add exclude recents flag to avoid showing multiple open activities in recents (#2805)
Add exclude recents flag to avoid showing multiple open activities
2022-08-19 20:34:57 -04:00
Daniel Shokouhi da8263dc9c
Only update geocode sensor if accuracy and time are valid, like location updates (#2802) 2022-08-19 20:34:33 -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
Daniel Shokouhi ae0f788bb4
Expand the error so its more meaningful (#2794) 2022-08-19 20:30:55 -04:00
dependabot[bot] e7dcdacda0
Bump accompanist-appcompat-theme from 0.25.0 to 0.25.1 (#2787)
Bumps [accompanist-appcompat-theme](https://github.com/google/accompanist) from 0.25.0 to 0.25.1.
- [Release notes](https://github.com/google/accompanist/releases)
- [Commits](https://github.com/google/accompanist/compare/v0.25.0...v0.25.1)

---
updated-dependencies:
- dependency-name: com.google.accompanist:accompanist-appcompat-theme
  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-08-13 20:58:03 -04:00
Daniel Shokouhi 7f5ec402db
Bump some more app dependencies (#2792) 2022-08-13 20:52:34 -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 5e11df521c
Fix opening my.home-assistant.io links (#2780) 2022-08-13 20:38:07 -04:00
Joris Pelgröm 3436f2169d
Use OkHttpClient to download notification videos (#2779)
- Change to the OkHttpClient used elsewhere by the app to download notification videos to resolve problems related to cookies and mTLS authentication. As a result, storing and deleting the file is now handled by the app instead of by the system.
2022-08-13 20:37:26 -04:00
Daniel Shokouhi d3c22cf341
Fix unable to Toast on QS tiles being clicked error (#2776)
* Fix unable to Toast on QS tiles being clicked error

* Review comments
2022-08-13 20:36:32 -04:00
Daniel Shokouhi 03a356f147
Only change channel if variable actually provided (#2773) 2022-08-13 20:33:22 -04:00
Rogue136198 0c9e8ac65f
Improve Notification GIFs (#2657)
* Modify Notification GIF Framerate

Modoify VIDEO_INCREMENT_MICROSECONDS to have notification GIFs generate a frame every 0.5 seconds for a video instead of the current every 2 seconds. This should result in smoother notification animations thus improving the UX

* Increase processingFrames.size

Increase processingFrames.size as increasing the framerate results in the animation ending too soon

* Scale video to a max width of 480 while maintaining video ratio

Notification video width scaled to 480. (1920 / 4) Height will scale accordingly while maintaining video aspect ratio. e.g. 1920x2560 will be scaled to 480x640

Frames are set to every 1 seconds with 5 frames resulting in a 5 second GIF

* Update MessagingManager.kt

Based on research and rapid prototyping under another fork, I've decided that scaling the image to a fixed width and a ratioed height is not going to work. There are issues that need to be resolved which result in the image being cut off and stretched in the notification. 

End result is the only overall change is changing the frame generation from once every 2 seconds to once every 1 second. This has improved the fluidity of notifications but I understand is my own subjective opinion.

This means there is still a potential case where 4K cameras will exceed the size limits of notifications.

* Typo fix

* Re-Implement Scaling to a Constant Width

* Update MessagingManager.kt

* Add logic to not scale videos smaller than specified width and Increase GIF speed (ViewFlipper)

* Tune processing times

Tune processing time to have one frame generated every 0.75s, then frames are played back at 3x speed. This results in 9 seconds of activity being played in 3 seconds.

* Implement Dynamic Frame Count

Dynamic number of frames up to a specified size limit (currently 2.5MB)

* Review Before Merge
2022-08-13 20:33:00 -04:00
Joris Pelgröm 22df320fd9
Use OkHttpClient to download notification images (#2768)
- Change to the OkHttpClient used elsewhere by the app to download notification images to resolve problems related to cookies and mTLS authentication
2022-08-06 13:03:38 -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
Joris Pelgröm 5d5e31e1cf
Update Wear OS companion app packages (#2766) 2022-08-06 13:02:26 -04:00
Daniel Shokouhi cc68946026
Add fragment dependency to resolve settings view model crashes (#2764) 2022-08-05 01:25:19 +00: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
Daniel Shokouhi 06b3dd386f
Update change log for week of 8/3 (#2756) 2022-08-04 15:55:35 -07:00
dependabot[bot] 3d009ac2b2
Bump firebase-appdistribution-gradle from 3.0.2 to 3.0.3 (#2762)
Bumps firebase-appdistribution-gradle from 3.0.2 to 3.0.3.

---
updated-dependencies:
- dependency-name: com.google.firebase:firebase-appdistribution-gradle
  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>
2022-08-04 22:43:47 +00:00
dependabot[bot] e34b395e50
Bump hilt-android-gradle-plugin from 2.43.1 to 2.43.2 (#2761)
Bumps [hilt-android-gradle-plugin](https://github.com/google/dagger) from 2.43.1 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.43.1...dagger-2.43.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:hilt-android-gradle-plugin
  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>
2022-08-04 22:29:02 +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