mirror of
https://github.com/home-assistant/android
synced 2024-07-22 10:54:12 +00:00
Fix "Always show first view" option with HA > 2023.04
This commit is contained in:
parent
75c7c08b2b
commit
bb1421e3f7
|
@ -1523,15 +1523,36 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
// /config/* as these are the settings of HA but NOT /config/dashboard. This is just the overview of the HA settings
|
||||
// /hassio/* as these are the addons section of HA settings.
|
||||
if (webView.url?.matches(".*://.*/(config/(?!\\bdashboard\\b)|hassio)/*.*".toRegex()) == false) {
|
||||
Log.d(TAG, "Show first view of default dashboard.")
|
||||
val currentHomeAssistantVersion = presenter.getActiveServerVersion()
|
||||
|
||||
Log.d(TAG, "Show first view of default dashboard (Current Server Home Assistant version: ${currentHomeAssistantVersion?.year}.${currentHomeAssistantVersion?.month})")
|
||||
|
||||
var clickElement = """
|
||||
document.querySelector('body > home-assistant')
|
||||
.shadowRoot.querySelector('home-assistant-main')
|
||||
.shadowRoot.querySelector('ha-drawer > ha-sidebar')
|
||||
.shadowRoot.querySelector('paper-listbox > ' + anchor)
|
||||
"""
|
||||
|
||||
if (currentHomeAssistantVersion != null) {
|
||||
if (currentHomeAssistantVersion.month < 4 || currentHomeAssistantVersion.year < 2023) {
|
||||
// For HA < 2023.04 we nee a different selector
|
||||
clickElement = """
|
||||
document.querySelector('body > home-assistant')
|
||||
.shadowRoot.querySelector('home-assistant-main')
|
||||
.shadowRoot.querySelector('#drawer > ha-sidebar')
|
||||
.shadowRoot.querySelector('paper-listbox > ' + anchor)
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
webView.evaluateJavascript(
|
||||
"""
|
||||
var anchor = 'a:nth-child(1)';
|
||||
var defaultPanel = window.localStorage.getItem('defaultPanel')?.replaceAll('"',"");
|
||||
if(defaultPanel) anchor = 'a[href="/' + defaultPanel + '"]';
|
||||
document.querySelector('body > home-assistant').shadowRoot.querySelector('home-assistant-main')
|
||||
.shadowRoot.querySelector('#drawer > ha-sidebar')
|
||||
.shadowRoot.querySelector('paper-listbox > ' + anchor).click();
|
||||
var clickElement = $clickElement;
|
||||
clickElement.click();
|
||||
window.scrollTo(0, 0);
|
||||
""",
|
||||
null
|
||||
|
|
|
@ -3,6 +3,7 @@ package io.homeassistant.companion.android.webview
|
|||
import android.content.Context
|
||||
import android.content.IntentSender
|
||||
import androidx.activity.result.ActivityResult
|
||||
import io.homeassistant.companion.android.common.data.HomeAssistantVersion
|
||||
import io.homeassistant.companion.android.matter.MatterFrontendCommissioningStatus
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
|
@ -17,6 +18,8 @@ interface WebViewPresenter {
|
|||
fun nextServer()
|
||||
fun previousServer()
|
||||
|
||||
fun getActiveServerVersion(): HomeAssistantVersion?
|
||||
|
||||
fun onGetExternalAuth(context: Context, callback: String, force: Boolean)
|
||||
|
||||
fun checkSecurityVersion()
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.net.Uri
|
|||
import android.util.Log
|
||||
import androidx.activity.result.ActivityResult
|
||||
import dagger.hilt.android.qualifiers.ActivityContext
|
||||
import io.homeassistant.companion.android.common.data.HomeAssistantVersion
|
||||
import io.homeassistant.companion.android.common.data.authentication.SessionState
|
||||
import io.homeassistant.companion.android.common.data.prefs.PrefsRepository
|
||||
import io.homeassistant.companion.android.common.data.servers.ServerManager
|
||||
|
@ -142,6 +143,9 @@ class WebViewPresenterImpl @Inject constructor(
|
|||
override fun nextServer() = moveToServer(next = true)
|
||||
|
||||
override fun previousServer() = moveToServer(next = false)
|
||||
override fun getActiveServerVersion(): HomeAssistantVersion? {
|
||||
return serverManager.getServer(getActiveServer())?.version
|
||||
}
|
||||
|
||||
private fun moveToServer(next: Boolean) {
|
||||
val servers = serverManager.defaultServers
|
||||
|
|
Loading…
Reference in a new issue