blob: 58ef98f1f1645d4ba975f0c8c1b8612e6d703a56 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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()
}
}
|