diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
commit | da4c7e7ed675c3bf405668739c3012d140856109 (patch) | |
tree | cdd868dba063fecba609a1d819de271f0d51b23e /mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/viewholders/SyncedTabsPageViewHolder.kt | |
parent | Adding upstream version 125.0.3. (diff) | |
download | firefox-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.kt | 52 |
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() + } +} |