This is a non-behavioral change in preparation for the actual switchover from Strings to Ids. The purpose of this kit is to reduce the size of the switchover commit which is going to be very large.
100 lines
2.8 KiB
Swift
100 lines
2.8 KiB
Swift
//
|
|
// FollowingView.swift
|
|
// damus
|
|
//
|
|
// Created by William Casarin on 2022-05-16.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct FollowUserView: View {
|
|
let target: FollowTarget
|
|
let damus_state: DamusState
|
|
|
|
var body: some View {
|
|
HStack {
|
|
UserViewRow(damus_state: damus_state, pubkey: target.pubkey)
|
|
.onTapGesture {
|
|
damus_state.nav.push(route: Route.ProfileByKey(pubkey: target.pubkey))
|
|
}
|
|
|
|
FollowButtonView(target: target, follows_you: false, follow_state: damus_state.contacts.follow_state(target.pubkey))
|
|
}
|
|
Spacer()
|
|
}
|
|
}
|
|
|
|
struct FollowersYouKnowView: View {
|
|
let damus_state: DamusState
|
|
let friended_followers: [Pubkey]
|
|
@ObservedObject var followers: FollowersModel
|
|
|
|
var body: some View {
|
|
ScrollView {
|
|
LazyVStack(alignment: .leading) {
|
|
ForEach(friended_followers, id: \.self) { pk in
|
|
FollowUserView(target: .pubkey(pk), damus_state: damus_state)
|
|
}
|
|
}
|
|
.padding(.horizontal)
|
|
}
|
|
.navigationBarTitle(NSLocalizedString("Followers You Know", comment: "Navigation bar title for view that shows who is following a user."))
|
|
}
|
|
}
|
|
|
|
struct FollowersView: View {
|
|
let damus_state: DamusState
|
|
@ObservedObject var followers: FollowersModel
|
|
|
|
var body: some View {
|
|
ScrollView {
|
|
LazyVStack(alignment: .leading) {
|
|
ForEach(followers.contacts ?? [], id: \.self) { pk in
|
|
FollowUserView(target: .pubkey(pk), damus_state: damus_state)
|
|
}
|
|
}
|
|
.padding(.horizontal)
|
|
}
|
|
.navigationBarTitle(NSLocalizedString("Followers", comment: "Navigation bar title for view that shows who is following a user."))
|
|
.onAppear {
|
|
followers.subscribe()
|
|
}
|
|
.onDisappear {
|
|
followers.unsubscribe()
|
|
}
|
|
}
|
|
}
|
|
|
|
struct FollowingView: View {
|
|
let damus_state: DamusState
|
|
|
|
let following: FollowingModel
|
|
|
|
|
|
var body: some View {
|
|
ScrollView {
|
|
LazyVStack(alignment: .leading) {
|
|
ForEach(following.contacts.reversed(), id: \.self) { pk in
|
|
FollowUserView(target: .pubkey(pk), damus_state: damus_state)
|
|
}
|
|
}
|
|
.padding()
|
|
}
|
|
.onAppear {
|
|
following.subscribe()
|
|
}
|
|
.onDisappear {
|
|
following.unsubscribe()
|
|
}
|
|
.navigationBarTitle(NSLocalizedString("Following", comment: "Navigation bar title for view that shows who a user is following."))
|
|
}
|
|
}
|
|
|
|
/*
|
|
struct FollowingView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
FollowingView(contact: <#NostrEvent#>, damus_state: <#DamusState#>)
|
|
}
|
|
}
|
|
*/
|