summaryrefslogtreecommitdiffstats
path: root/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:34:42 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:34:42 +0000
commitda4c7e7ed675c3bf405668739c3012d140856109 (patch)
treecdd868dba063fecba609a1d819de271f0d51b23e /mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt
parentAdding upstream version 125.0.3. (diff)
downloadfirefox-da4c7e7ed675c3bf405668739c3012d140856109.tar.xz
firefox-da4c7e7ed675c3bf405668739c3012d140856109.zip
Adding upstream version 126.0.upstream/126.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt')
-rw-r--r--mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt52
1 files changed, 52 insertions, 0 deletions
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt
new file mode 100644
index 0000000000..58ef98f1f1
--- /dev/null
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt
@@ -0,0 +1,52 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.fenix.tabstray.viewholders
+
+import android.view.View
+import androidx.compose.ui.platform.ComposeView
+import androidx.recyclerview.widget.RecyclerView
+import mozilla.components.lib.state.ext.observeAsComposableState
+import org.mozilla.fenix.tabstray.SyncedTabsInteractor
+import org.mozilla.fenix.tabstray.TabsTrayState
+import org.mozilla.fenix.tabstray.TabsTrayStore
+import org.mozilla.fenix.tabstray.syncedtabs.SyncedTabsList
+import org.mozilla.fenix.theme.FirefoxTheme
+import org.mozilla.fenix.theme.Theme
+
+/**
+ * Temporary ViewHolder to render [SyncedTabsList] until all of the Tabs Tray is written in Compose.
+ *
+ * @param composeView Root ComposeView passed-in from TrayPagerAdapter.
+ * @param tabsTrayStore Store used as a Composable State to listen for changes to [TabsTrayState.syncedTabs].
+ * @param interactor [SyncedTabsInteractor] used to respond to interactions with synced tabs.
+ */
+class SyncedTabsPageViewHolder(
+ private val composeView: ComposeView,
+ private val tabsTrayStore: TabsTrayStore,
+ private val interactor: SyncedTabsInteractor,
+) : AbstractPageViewHolder(composeView) {
+
+ fun bind() {
+ composeView.setContent {
+ val tabs = tabsTrayStore.observeAsComposableState { state -> state.syncedTabs }.value
+ FirefoxTheme(theme = Theme.getTheme(allowPrivateTheme = false)) {
+ SyncedTabsList(
+ syncedTabs = tabs ?: emptyList(),
+ onTabClick = interactor::onSyncedTabClicked,
+ )
+ }
+ }
+ }
+
+ override fun bind(adapter: RecyclerView.Adapter<out RecyclerView.ViewHolder>) = Unit // no-op
+
+ override fun detachedFromWindow() = Unit // no-op
+
+ override fun attachedToWindow() = Unit // no-op
+
+ companion object {
+ val LAYOUT_ID = View.generateViewId()
+ }
+}