Compare commits

...

1 Commits

Author SHA1 Message Date
85185f189e Use opacity modifier instead of conditionals to hide unselected timelines to retain scroll positions
Changelog-Fixed: Use opacity modifier instead of conditionals to hide unselected timelines to retain scroll positions
2023-12-08 16:01:39 -08:00
3 changed files with 27 additions and 24 deletions

View File

@@ -153,26 +153,25 @@ struct ContentView: View {
} }
func MainContent(damus: DamusState) -> some View { func MainContent(damus: DamusState) -> some View {
VStack { ZStack {
switch selected_timeline {
case .search:
if #available(iOS 16.0, *) { if #available(iOS 16.0, *) {
SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!)) SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!))
.scrollDismissesKeyboard(.immediately) .scrollDismissesKeyboard(.immediately)
.opacity(selected_timeline == .search ? 1 : 0)
} else { } else {
// Fallback on earlier versions // Fallback on earlier versions
SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!)) SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!))
.opacity(selected_timeline == .search ? 1 : 0)
} }
case .home:
PostingTimelineView PostingTimelineView
.opacity(selected_timeline == .home ? 1 : 0)
case .notifications:
NotificationsView(state: damus, notifications: home.notifications) NotificationsView(state: damus, notifications: home.notifications)
.opacity(selected_timeline == .notifications ? 1 : 0)
case .dms:
DirectMessagesView(damus_state: damus_state!, model: damus_state!.dms, settings: damus_state!.settings) DirectMessagesView(damus_state: damus_state!, model: damus_state!.dms, settings: damus_state!.settings)
} .opacity(selected_timeline == .dms ? 1 : 0)
} }
.navigationBarTitle(timeline_name(selected_timeline), displayMode: .inline) .navigationBarTitle(timeline_name(selected_timeline), displayMode: .inline)
.toolbar { .toolbar {

View File

@@ -18,6 +18,7 @@ struct DirectMessagesView: View {
@State var dm_type: DMType = .friend @State var dm_type: DMType = .friend
@ObservedObject var model: DirectMessagesModel @ObservedObject var model: DirectMessagesModel
@ObservedObject var settings: UserSettingsStore @ObservedObject var settings: UserSettingsStore
@SceneStorage("ContentView.selected_timeline") var selected_timeline: Timeline = .home
func MainContent(requests: Bool) -> some View { func MainContent(requests: Bool) -> some View {
ScrollView { ScrollView {
@@ -90,6 +91,7 @@ struct DirectMessagesView: View {
.tabViewStyle(.page(indexDisplayMode: .never)) .tabViewStyle(.page(indexDisplayMode: .never))
} }
.toolbar { .toolbar {
if selected_timeline == .dms {
ToolbarItem(placement: .navigationBarTrailing) { ToolbarItem(placement: .navigationBarTrailing) {
if would_filter_non_friends_from_dms(contacts: damus_state.contacts, dms: self.model.dms) { if would_filter_non_friends_from_dms(contacts: damus_state.contacts, dms: self.model.dms) {
@@ -97,6 +99,7 @@ struct DirectMessagesView: View {
} }
} }
} }
}
.navigationTitle(NSLocalizedString("DMs", comment: "Navigation title for view of DMs, where DM is an English abbreviation for Direct Message.")) .navigationTitle(NSLocalizedString("DMs", comment: "Navigation title for view of DMs, where DM is an English abbreviation for Direct Message."))
} }
} }

View File

@@ -82,6 +82,7 @@ struct NotificationsView: View {
@ObservedObject var notifications: NotificationsModel @ObservedObject var notifications: NotificationsModel
@StateObject var filter = NotificationFilter() @StateObject var filter = NotificationFilter()
@SceneStorage("NotificationsView.filter_state") var filter_state: NotificationFilterState = .all @SceneStorage("NotificationsView.filter_state") var filter_state: NotificationFilterState = .all
@SceneStorage("ContentView.selected_timeline") var selected_timeline: Timeline = .home
@Environment(\.colorScheme) var colorScheme @Environment(\.colorScheme) var colorScheme