- 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.
* Add support for intent scheme URI in clickAction and actionable notifications
* Add a new prefix for app links in actions
* Rename app link to deep link to be more precise
* Use correct intent prefix
* Take user to the play store if the app is not installed
* Fix taking user to the market if app is missing, remove ability for deep links since we can't get the package name
* Only open the play store if we have an actual package to open to
* 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
* Fix full screen mode for all devices
* Hide system UI when we regain focus and a video is still full screen
* Revert theme changes
* Remove unneeded line break
- Set the thumbnail template for the camera control to active as long as the camera isn't unavailable and the app was able to download an image, to show the camera image more often and better match the frontend.
- Instead of receiving all state changes when the device controls are open, only receive state changes for entities that were added as controls. This potentially reduces the amount of data used while controls are open.
Don't collapse lists by default if there's only one key
- If there is only one key, the app shouldn't collapse it by default as the app may not use a collapsible header in that case
* 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.
- 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).
* 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
* 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
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
* 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
- 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.
- 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
- 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.
* 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
* Always collapse headers and add favorites section
* Remove unneeded entity update subscription
* Process comments
* Use shorthand for favorites loop in MainView
* 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