diff --git a/domain/src/main/java/org/monogram/domain/models/webapp/WebAppEvents.kt b/domain/src/main/java/org/monogram/domain/models/webapp/WebAppEvents.kt index a3312a36..ea9a49c2 100644 --- a/domain/src/main/java/org/monogram/domain/models/webapp/WebAppEvents.kt +++ b/domain/src/main/java/org/monogram/domain/models/webapp/WebAppEvents.kt @@ -8,7 +8,6 @@ sealed class WebAppEvent { data object RequestTheme : WebAppEvent() data class SetBackgroundColor(val color: String) : WebAppEvent() data class SetHeaderColor(val colorKey: String?, val color: String?) : WebAppEvent() - data class SetHeaderText(val text: String) : WebAppEvent() data class SetBottomBarColor(val color: String) : WebAppEvent() data class SetupMainButton( val isVisible: Boolean, diff --git a/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppState.kt b/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppState.kt index 213261d6..ad2393bb 100644 --- a/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppState.kt +++ b/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppState.kt @@ -76,8 +76,6 @@ class MiniAppState( var backgroundColor by mutableStateOf(initialThemeParams.backgroundColor?.let { Color(it.toColorInt()) }) var bottomBarColor by mutableStateOf(initialThemeParams.bottomBarBackgroundColor?.let { Color(it.toColorInt()) }) - var headerText by mutableStateOf(botName) - var isExpanded by mutableStateOf(false) var isFullscreen by mutableStateOf(false) @@ -619,10 +617,6 @@ class MiniAppState( topBarColor = themeParams.headerBackgroundColor?.let { Color(it.toColorInt()) } } - override fun onSetHeaderText(text: String) { - headerText = text - } - override fun onSetBottomBarColor(color: Int) { bottomBarColor = Color(color) } diff --git a/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppViewer.kt b/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppViewer.kt index 85eea84d..7bcf868e 100644 --- a/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppViewer.kt +++ b/presentation/src/main/java/org/monogram/presentation/features/webapp/MiniAppViewer.kt @@ -362,7 +362,7 @@ fun MiniAppViewer( Column(modifier = Modifier.fillMaxSize()) { if (!state.isFullscreen) { MiniAppTopBar( - headerText = state.headerText, + headerText = botName, isBackButtonVisible = state.isBackButtonVisible, isSettingsButtonVisible = state.isSettingsButtonVisible, isInitializing = state.isInitializing, diff --git a/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebAppHost.kt b/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebAppHost.kt index 970332f7..c2d4152a 100644 --- a/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebAppHost.kt +++ b/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebAppHost.kt @@ -53,7 +53,6 @@ interface TelegramWebAppHost { fun onSetBackgroundColor(color: Int) fun onSetHeaderColor(colorKey: String?, customColor: Int?) fun onResetHeaderColor() - fun onSetHeaderText(text: String) fun onSetBottomBarColor(color: Int) fun onResetBottomBarColor() fun onSetupClosingBehavior(needConfirmation: Boolean) diff --git a/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebviewProxy.kt b/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebviewProxy.kt index 067abf4e..3029ab6c 100644 --- a/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebviewProxy.kt +++ b/presentation/src/main/java/org/monogram/presentation/features/webapp/TelegramWebviewProxy.kt @@ -118,7 +118,6 @@ class TelegramWebviewProxy( data.optString("color_key").takeIf { it.isNotEmpty() }, data.optString("color").takeIf { it.isNotEmpty() }) - "web_app_set_header_text" -> WebAppEvent.SetHeaderText(data.optString("text")) "web_app_set_bottom_bar_color" -> WebAppEvent.SetBottomBarColor(data.optString("color")) "web_app_setup_main_button" -> WebAppEvent.SetupMainButton( data.optBoolean("is_visible"), data.optBoolean("is_active"), @@ -305,7 +304,6 @@ class TelegramWebviewProxy( is WebAppEvent.SetBackgroundColor -> host.onSetBackgroundColor(parseColor(event.color)) is WebAppEvent.SetHeaderColor -> host.onSetHeaderColor(event.colorKey, event.color?.let { parseColor(it) }) - is WebAppEvent.SetHeaderText -> host.onSetHeaderText(event.text) is WebAppEvent.SetBottomBarColor -> host.onSetBottomBarColor(parseColor(event.color)) is WebAppEvent.SetupMainButton -> host.onSetupMainButton( event.isVisible, diff --git a/presentation/src/main/java/org/monogram/presentation/features/webapp/components/MiniAppWebView.kt b/presentation/src/main/java/org/monogram/presentation/features/webapp/components/MiniAppWebView.kt index 12754742..6794b4b1 100644 --- a/presentation/src/main/java/org/monogram/presentation/features/webapp/components/MiniAppWebView.kt +++ b/presentation/src/main/java/org/monogram/presentation/features/webapp/components/MiniAppWebView.kt @@ -11,6 +11,10 @@ import android.view.ViewGroup import android.webkit.* import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.viewinterop.AndroidView @@ -34,6 +38,8 @@ fun MiniAppWebView( onLoadingChanged: (Boolean) -> Unit, modifier: Modifier = Modifier ) { + var lastLoadedUrl by remember { mutableStateOf(url) } + AndroidView( factory = { ctx -> WebView(ctx).apply { @@ -130,8 +136,9 @@ fun MiniAppWebView( view.setBackgroundColor( backgroundColor?.toArgb() ?: themeParams.backgroundColor?.toColorInt() ?: Color.TRANSPARENT ) - if (url.isNotEmpty() && view.url != url) { + if (url.isNotEmpty() && url != lastLoadedUrl) { view.loadUrl(url, mapOf("Accept-Language" to acceptLanguage)) + lastLoadedUrl = url } } )