diff --git a/app/src/main/java/com/duckai/app/web/MainActivity.kt b/app/src/main/java/com/duckai/app/web/MainActivity.kt
index bf3c7cf..c7cd84f 100644
--- a/app/src/main/java/com/duckai/app/web/MainActivity.kt
+++ b/app/src/main/java/com/duckai/app/web/MainActivity.kt
@@ -4,7 +4,6 @@ import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
-import android.view.View
import android.view.inputmethod.InputMethodManager
import android.webkit.CookieManager
import android.webkit.WebView
@@ -15,6 +14,10 @@ import com.duckai.app.R
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
+
+ companion object {
+ private const val BASE_URL = "https://duck.ai"
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -22,12 +25,19 @@ class MainActivity : AppCompatActivity() {
webView = findViewById(R.id.webView)
- webView.settings.javaScriptEnabled = true
- webView.settings.domStorageEnabled = true
- webView.settings.databaseEnabled = true
- webView.settings.setSupportZoom(false)
- webView.settings.loadWithOverviewMode = true
- webView.settings.useWideViewPort = true
+ setupWebView()
+ loadUrlFromIntent()
+ }
+
+ private fun setupWebView() {
+ webView.settings.apply {
+ javaScriptEnabled = true
+ domStorageEnabled = true
+ databaseEnabled = true
+ setSupportZoom(false)
+ loadWithOverviewMode = true
+ useWideViewPort = true
+ }
webView.isFocusable = true
webView.isFocusableInTouchMode = true
@@ -35,13 +45,26 @@ class MainActivity : AppCompatActivity() {
CookieManager.getInstance().setAcceptCookie(true)
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
- webView.webViewClient = WebViewClientOverride()
+ webView.webViewClient = object : WebViewClient() {
+ override fun onPageFinished(view: WebView?, url: String?) {
+ view?.postDelayed({
+ view.evaluateJavascript(
+ "setTimeout(() => {" +
+ " const input = document.querySelector('input[type=\"text\"], textarea[id*=\"message\"], [role=\"combobox\"]');" +
+ " if(input) { input.focus(); input.click(); }" +
+ "}, 100);"
+ ) { _ -> }
+ }, 800)
+ }
+ }
+ }
+ private fun loadUrlFromIntent() {
val query = intent?.data?.getQueryParameter("q")
val url = if (query != null) {
- "https://duck.ai/?q=${Uri.encode(query)}"
+ "$BASE_URL/?q=${Uri.encode(query)}"
} else {
- "https://duck.ai/"
+ BASE_URL
}
webView.loadUrl(url)
@@ -52,32 +75,29 @@ class MainActivity : AppCompatActivity() {
}, 800)
}
- private inner class WebViewClientOverride : WebViewClient() {
- override fun onPageFinished(view: WebView?, url: String?) {
- view?.postDelayed({
- view.evaluateJavascript(
- "setTimeout(() => {" +
- " const input = document.querySelector('input[type=\"text\"], textarea[id*=\"message\"], [role=\"combobox\"]');" +
- " if(input) { input.focus(); input.click(); }" +
- "}, 100);"
- ) { _ -> }
- }, 800)
- }
- }
-
private fun showKeyboard() {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
webView.requestFocus()
imm.showSoftInput(webView, InputMethodManager.SHOW_IMPLICIT)
}
+ override fun onPause() {
+ webView.onPause()
+ super.onPause()
+ }
+
+ override fun onResume() {
+ webView.onResume()
+ super.onResume()
+ }
+
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
this.intent = intent
val query = intent?.data?.getQueryParameter("q")
if (query != null) {
- val url = "https://duck.ai/?q=${Uri.encode(query)}"
+ val url = "$BASE_URL/?q=${Uri.encode(query)}"
webView.loadUrl(url)
webView.postDelayed({
webView.requestFocus()
@@ -85,4 +105,9 @@ class MainActivity : AppCompatActivity() {
}, 1000)
}
}
+
+ override fun onDestroy() {
+ webView.destroy()
+ super.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 2b7402b..22c3a4e 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,12 +1,15 @@
-
+ android:layout_height="match_parent"
+ android:background="?attr/colorSurface">
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_search.xml b/app/src/main/res/layout/widget_search.xml
index 7d7e9c5..b48fc5b 100644
--- a/app/src/main/res/layout/widget_search.xml
+++ b/app/src/main/res/layout/widget_search.xml
@@ -3,7 +3,7 @@
android:id="@+id/widget_container"
android:layout_width="match_parent"
android:layout_height="48dp"
- android:background="@drawable/widget_background"
+ android:background="?attr/colorPrimaryContainer"
android:gravity="center"
android:orientation="horizontal"
android:paddingHorizontal="16dp">
@@ -12,6 +12,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_search"
+ android:tint="?attr/colorOnPrimaryContainer"
android:contentDescription="@string/search" />
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 700a8c7..9b5e432 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,4 +1,4 @@
- #FF5722
+ #6750A4
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 631c40a..aba6527 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,4 +4,9 @@
Search
Search DuckAI
Ask AI
+ Clear Chat History
+ Clear all chat history?
+ Yes
+ No
+ Chat history cleared
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 640ca07..87f6316 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,4 +1,21 @@
-
+
\ No newline at end of file