Skip to content

Commit

Permalink
Add new feed from drawer
Browse files Browse the repository at this point in the history
  • Loading branch information
prof18 committed May 7, 2024
1 parent 1638472 commit 296478f
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .fleet/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"backend.maxHeapSizeMb": 4553,
"backend.maxHeapSizeMb": 7967,
"run.destination.stop.already.running": "Always"
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ internal fun CompactHomeView(
Drawer(
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ internal fun ExpandedHomeView(
.padding(paddingValues),
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ internal fun MediumHomeView(
.padding(paddingValues),
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ internal fun CompactView(
Drawer(
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ internal fun ExpandedView(
.padding(paddingValues),
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ internal fun MediumView(
.padding(paddingValues),
navDrawerState = navDrawerState,
currentFeedFilter = currentFeedFilter,
onAddFeedClicked = onAddFeedClick,
onFeedFilterSelected = { feedFilter ->
onFeedFilterSelected(feedFilter)
scope.launch {
Expand Down
9 changes: 8 additions & 1 deletion iosApp/Source/App/CompactView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ struct CompactView: View {

@State private var browserToOpen: BrowserToPresent?

@State var showAddFeedSheet = false

let homeViewModel: HomeViewModel

var body: some View {
Expand Down Expand Up @@ -63,8 +65,13 @@ struct CompactView: View {
},
onShowSettingsClick: {
// On compact view it's handled by the home
},
onAddFeedClick: {
showAddFeedSheet.toggle()
}
)
).sheet(isPresented: $showAddFeedSheet) {
AddFeedScreen(showCloseButton: true)
}
.navigationDestination(for: CompactViewRoute.self) { route in
switch route {
case .feed:
Expand Down
66 changes: 52 additions & 14 deletions iosApp/Source/App/Drawer/SidebarDrawer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import NukeUI
@MainActor
struct SidebarDrawer: View {

@EnvironmentObject var appState: AppState

@Binding var selectedDrawerItem: DrawerItem?

let navDrawerState: NavDrawerState
Expand All @@ -22,6 +24,7 @@ struct SidebarDrawer: View {
let onForceRefreshClick: () -> Void
let deleteAllFeeds: () -> Void
let onShowSettingsClick: () -> Void
let onAddFeedClick: () -> Void

var body: some View {
List(selection: $selectedDrawerItem) {
Expand Down Expand Up @@ -107,7 +110,8 @@ struct SidebarDrawer: View {
}
}
}
}, header: {
},
header: {
Text(feedFlowStrings.drawerTitleCategories)
}
)
Expand All @@ -124,8 +128,9 @@ struct SidebarDrawer: View {
makeFeedSourceDrawerItem(drawerItem: drawerFeedSource)
}
}
}, header: {
Text(feedFlowStrings.drawerTitleFeedSources)
},
header: {
makeAddFeedButton(title: feedFlowStrings.drawerTitleFeedSources)
}
)
}
Expand All @@ -149,18 +154,51 @@ struct SidebarDrawer: View {
makeCategoryDropdown(
drawerItems: navDrawerState.feedSourcesByCategory[categoryWrapper] ?? [],
title: title
)
.accessibilityIdentifier("\(TestingTag.shared.FEED_SOURCE_SELECTOR)_\(title)")

).accessibilityIdentifier("\(TestingTag.shared.FEED_SOURCE_SELECTOR)_\(title)")
}
},
header: {
Text(feedFlowStrings.drawerTitleFeedSources)
makeAddFeedButton(title: feedFlowStrings.drawerTitleFeedSources)
}
)
}
}

@ViewBuilder
private func makeAddFeedButton(title: String) -> some View {
HStack {
Text(title)
Spacer()
Button(
action: {
onAddFeedClick()
},
label: {
Image(systemName: "plus.app")
}
)
}
.if(appState.sizeClass == .compact) { view in
view.listRowInsets(
EdgeInsets(
top: Spacing.small,
leading: Spacing.small,
bottom: Spacing.small,
trailing: Spacing.small
)
)
}.if(appState.sizeClass == .regular) { view in
view.listRowInsets(
EdgeInsets(
top: Spacing.small,
leading: Spacing.small,
bottom: Spacing.small,
trailing: -Spacing.xsmall
)
)
}
}

@ViewBuilder
private func makeFeedSourceDrawerItem(drawerItem: DrawerItem.DrawerFeedSource) -> some View {
HStack {
Expand Down Expand Up @@ -193,8 +231,7 @@ struct SidebarDrawer: View {
.contentShape(Rectangle())
.onTapGesture {
self.selectedDrawerItem = drawerItem
self.onFeedFilterSelected( FeedFilter.Source(feedSource: drawerItem.feedSource )
)
self.onFeedFilterSelected(FeedFilter.Source(feedSource: drawerItem.feedSource))
}
}

Expand Down Expand Up @@ -268,10 +305,11 @@ struct SidebarDrawer: View {
selectedDrawerItem: .constant(nil),
navDrawerState: PreviewItemsKt.navDrawerState,
onFeedFilterSelected: { _ in },
onMarkAllReadClick: { },
onDeleteOldFeedClick: { },
onForceRefreshClick: { },
deleteAllFeeds: { },
onShowSettingsClick: { }
onMarkAllReadClick: {},
onDeleteOldFeedClick: {},
onForceRefreshClick: {},
deleteAllFeeds: {},
onShowSettingsClick: {},
onAddFeedClick: {}
)
}
9 changes: 9 additions & 0 deletions iosApp/Source/App/RegularView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ struct RegularView: View {
@State var showSettings: Bool = false
@State private var browserToOpen: BrowserToPresent?

@State var showAddFeedSheet = false

var drawerItems: [DrawerItem] = []
let homeViewModel: HomeViewModel

Expand Down Expand Up @@ -62,6 +64,10 @@ struct RegularView: View {
},
onShowSettingsClick: {
showSettings.toggle()
},
onAddFeedClick: {
// TODO: open the add
showAddFeedSheet.toggle()
}
)
.navigationBarTitleDisplayMode(.inline)
Expand Down Expand Up @@ -105,6 +111,9 @@ struct RegularView: View {
}
}
}
.sheet(isPresented: $showAddFeedSheet) {
AddFeedScreen(showCloseButton: true)
}
.navigationSplitViewStyle(.balanced)
.task {
do {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Feed
import androidx.compose.material.icons.automirrored.filled.Label
import androidx.compose.material.icons.automirrored.filled.PlaylistAddCheck
import androidx.compose.material.icons.automirrored.rounded.KeyboardArrowRight
import androidx.compose.material.icons.filled.AddCircleOutline
import androidx.compose.material.icons.filled.Bookmarks
import androidx.compose.material.icons.filled.Category
import androidx.compose.material.icons.filled.Feed
import androidx.compose.material.icons.filled.Label
import androidx.compose.material.icons.filled.PlaylistAddCheck
import androidx.compose.material3.Divider
import androidx.compose.material.icons.outlined.AddCircleOutline
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationDrawerItem
Expand Down Expand Up @@ -57,6 +59,7 @@ fun Drawer(
navDrawerState: NavDrawerState,
currentFeedFilter: FeedFilter,
onFeedFilterSelected: (FeedFilter) -> Unit,
onAddFeedClicked: () -> Unit,
modifier: Modifier = Modifier,
) {
LazyColumn(
Expand Down Expand Up @@ -87,6 +90,12 @@ fun Drawer(
)
}

item {
DrawerAddItem(
onAddFeedClicked = onAddFeedClicked,
)
}

if (navDrawerState.categories.isNotEmpty()) {
item {
DrawerDivider()
Expand Down Expand Up @@ -117,7 +126,7 @@ fun Drawer(

@Composable
private fun DrawerDivider() {
Divider(
HorizontalDivider(
modifier = Modifier
.padding(vertical = Spacing.regular),
thickness = 0.2.dp,
Expand All @@ -139,7 +148,7 @@ private fun DrawerTimelineItem(
},
icon = {
Icon(
imageVector = Icons.Default.Feed,
imageVector = Icons.AutoMirrored.Filled.Feed,
contentDescription = null,
)
},
Expand All @@ -164,7 +173,7 @@ private fun DrawerReadItem(
},
icon = {
Icon(
imageVector = Icons.Default.PlaylistAddCheck,
imageVector = Icons.AutoMirrored.Filled.PlaylistAddCheck,
contentDescription = null,
)
},
Expand Down Expand Up @@ -200,6 +209,30 @@ private fun DrawerBookmarksItem(
)
}

@Composable
private fun DrawerAddItem(
onAddFeedClicked: () -> Unit,
) {
NavigationDrawerItem(
selected = false,
label = {
Text(
text = "Add Feed",
)
},
icon = {
Icon(
imageVector = Icons.Default.AddCircleOutline,
contentDescription = null,
)
},
colors = NavigationDrawerItemDefaults.colors(unselectedContainerColor = Color.Transparent),
onClick = {
onAddFeedClicked()
},
)
}

@Composable
private fun DrawerCategoriesSection(
navDrawerState: NavDrawerState,
Expand Down Expand Up @@ -241,7 +274,7 @@ private fun DrawerCategoryItem(
},
icon = {
Icon(
imageVector = Icons.Default.Label,
imageVector = Icons.AutoMirrored.Filled.Label,
contentDescription = null,
)
},
Expand Down

0 comments on commit 296478f

Please sign in to comment.