Files
damus/damus/Views/SearchView.swift
William Casarin b4140dc5f2 Add a "load more" button instead of always inserting events in timelines
Changelog-Added: Add a "load more" button instead of always inserting events in timelines
2023-02-20 11:12:31 -08:00

53 lines
1.4 KiB
Swift

//
// SearchView.swift
// damus
//
// Created by William Casarin on 2022-05-09.
//
import SwiftUI
struct SearchView: View {
let appstate: DamusState
@StateObject var search: SearchModel
@Environment(\.dismiss) var dismiss
var body: some View {
TimelineView(events: search.events, loading: $search.loading, damus: appstate, show_friend_icon: true, filter: { _ in true })
.navigationBarTitle(describe_search(search.search))
.onReceive(handle_notify(.switched_timeline)) { obj in
dismiss()
}
.onAppear() {
search.subscribe()
}
.onDisappear() {
search.unsubscribe()
}
.onReceive(handle_notify(.new_mutes)) { notif in
search.filter_muted()
}
}
}
func describe_search(_ filter: NostrFilter) -> String {
if let hashtags = filter.hashtag {
if hashtags.count >= 1 {
return "#" + hashtags[0]
}
}
return "Search"
}
struct SearchView_Previews: PreviewProvider {
static var previews: some View {
let test_state = test_damus_state()
let filter = NostrFilter.filter_hashtag(["bitcoin"])
let pool = test_state.pool
let model = SearchModel(contacts: test_state.contacts, pool: pool, search: filter)
SearchView(appstate: test_state, search: model)
}
}