You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt

54 lines
2.1 KiB
Kotlin

/* 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.home.recentbookmarks.view
import android.view.View
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.LifecycleOwner
import mozilla.components.lib.state.ext.observeAsComposableState
import mozilla.components.service.glean.private.NoExtras
import org.mozilla.fenix.R
import org.mozilla.fenix.components.components
import org.mozilla.fenix.compose.ComposeViewHolder
import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor
import org.mozilla.fenix.wallpapers.WallpaperState
import org.mozilla.fenix.GleanMetrics.RecentBookmarks as RecentBookmarksMetrics
class RecentBookmarksViewHolder(
composeView: ComposeView,
viewLifecycleOwner: LifecycleOwner,
val interactor: RecentBookmarksInteractor,
) : ComposeViewHolder(composeView, viewLifecycleOwner) {
init {
RecentBookmarksMetrics.shown.record(NoExtras())
}
companion object {
val LAYOUT_ID = View.generateViewId()
}
@Composable
override fun Content() {
val recentBookmarks = components.appStore.observeAsComposableState { state -> state.recentBookmarks }
val wallpaperState = components.appStore
.observeAsComposableState { state -> state.wallpaperState }.value ?: WallpaperState.default
RecentBookmarks(
bookmarks = recentBookmarks.value ?: emptyList(),
backgroundColor = wallpaperState.wallpaperCardColor,
onRecentBookmarkClick = interactor::onRecentBookmarkClicked,
menuItems = listOf(
RecentBookmarksMenuItem(
stringResource(id = R.string.recently_saved_menu_item_remove),
onClick = { bookmark -> interactor.onRecentBookmarkRemoved(bookmark) },
),
),
)
}
}