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 { if #available(iOS 16.0, *) {
case .search: SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!))
if #available(iOS 16.0, *) { .scrollDismissesKeyboard(.immediately)
SearchHomeView(damus_state: damus_state!, model: SearchHomeModel(damus_state: damus_state!)) .opacity(selected_timeline == .search ? 1 : 0)
.scrollDismissesKeyboard(.immediately) } 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
case .notifications:
NotificationsView(state: damus, notifications: home.notifications)
case .dms:
DirectMessagesView(damus_state: damus_state!, model: damus_state!.dms, settings: damus_state!.settings)
} }
PostingTimelineView
.opacity(selected_timeline == .home ? 1 : 0)
NotificationsView(state: damus, notifications: home.notifications)
.opacity(selected_timeline == .notifications ? 1 : 0)
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,10 +91,12 @@ struct DirectMessagesView: View {
.tabViewStyle(.page(indexDisplayMode: .never)) .tabViewStyle(.page(indexDisplayMode: .never))
} }
.toolbar { .toolbar {
ToolbarItem(placement: .navigationBarTrailing) { if selected_timeline == .dms {
if would_filter_non_friends_from_dms(contacts: damus_state.contacts, dms: self.model.dms) { ToolbarItem(placement: .navigationBarTrailing) {
if would_filter_non_friends_from_dms(contacts: damus_state.contacts, dms: self.model.dms) {
FriendsButton(filter: $settings.friend_filter)
FriendsButton(filter: $settings.friend_filter)
}
} }
} }
} }

View File

@@ -82,7 +82,8 @@ 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
var mystery: some View { var mystery: some View {