HomeView: refactor
Trying to clean this view up a bit
This commit is contained in:
@@ -370,81 +370,25 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onReceive(handle_notify(.unfollow)) { notif in
|
.onReceive(handle_notify(.unfollow)) { notif in
|
||||||
guard let privkey = self.privkey else {
|
guard let state = self.damus_state else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
handle_unfollow(state: state, notif: notif)
|
||||||
guard let damus = self.damus_state else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let target = notif.object as! FollowTarget
|
|
||||||
let pk = target.pubkey
|
|
||||||
|
|
||||||
if let ev = unfollow_user(postbox: damus.postbox,
|
|
||||||
our_contacts: damus.contacts.event,
|
|
||||||
pubkey: damus.pubkey,
|
|
||||||
privkey: privkey,
|
|
||||||
unfollow: pk) {
|
|
||||||
notify(.unfollowed, pk)
|
|
||||||
|
|
||||||
damus.contacts.event = ev
|
|
||||||
damus.contacts.remove_friend(pk)
|
|
||||||
//friend_events = friend_events.filter { $0.pubkey != pk }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.onReceive(handle_notify(.follow)) { notif in
|
.onReceive(handle_notify(.follow)) { notif in
|
||||||
guard let privkey = self.privkey else {
|
guard let state = self.damus_state else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
handle_follow(state: state, notif: notif)
|
||||||
let fnotify = notif.object as! FollowTarget
|
|
||||||
guard let damus = self.damus_state else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if let ev = follow_user(pool: damus.pool,
|
|
||||||
our_contacts: damus.contacts.event,
|
|
||||||
pubkey: damus.pubkey,
|
|
||||||
privkey: privkey,
|
|
||||||
follow: ReferencedId(ref_id: fnotify.pubkey, relay_id: nil, key: "p")) {
|
|
||||||
notify(.followed, fnotify.pubkey)
|
|
||||||
|
|
||||||
damus_state?.contacts.event = ev
|
|
||||||
|
|
||||||
switch fnotify {
|
|
||||||
case .pubkey(let pk):
|
|
||||||
damus.contacts.add_friend_pubkey(pk)
|
|
||||||
case .contact(let ev):
|
|
||||||
damus.contacts.add_friend_contact(ev)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.onReceive(handle_notify(.post)) { obj in
|
.onReceive(handle_notify(.post)) { notif in
|
||||||
guard let privkey = self.privkey else {
|
guard let state = self.damus_state,
|
||||||
return
|
let keypair = state.keypair.to_full() else {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let post_res = obj.object as! NostrPostResult
|
if !handle_post_notification(keypair: keypair, postbox: state.postbox, events: state.events, notif: notif) {
|
||||||
switch post_res {
|
self.active_sheet = nil
|
||||||
case .post(let post):
|
|
||||||
//let post = tup.0
|
|
||||||
//let to_relays = tup.1
|
|
||||||
print("post \(post.content)")
|
|
||||||
let new_ev = post_to_event(post: post, privkey: privkey, pubkey: pubkey)
|
|
||||||
guard let ds = self.damus_state else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ds.postbox.send(new_ev)
|
|
||||||
for eref in new_ev.referenced_ids.prefix(3) {
|
|
||||||
// also broadcast at most 3 referenced events
|
|
||||||
if let ev = ds.events.lookup(eref.ref_id) {
|
|
||||||
ds.postbox.send(ev)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case .cancel:
|
|
||||||
active_sheet = nil
|
|
||||||
print("post cancelled")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onReceive(timer) { n in
|
.onReceive(timer) { n in
|
||||||
@@ -528,19 +472,11 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Button(NSLocalizedString("Yes, Overwrite", comment: "Text of button that confirms to overwrite the existing mutelist.")) {
|
Button(NSLocalizedString("Yes, Overwrite", comment: "Text of button that confirms to overwrite the existing mutelist.")) {
|
||||||
guard let ds = damus_state else {
|
guard let ds = damus_state,
|
||||||
return
|
let keypair = ds.keypair.to_full(),
|
||||||
}
|
let pubkey = muting,
|
||||||
|
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: pubkey)
|
||||||
guard let keypair = ds.keypair.to_full() else {
|
else {
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
guard let pubkey = muting else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
guard let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: pubkey) else {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,3 +784,73 @@ func timeline_name(_ timeline: Timeline?) -> String {
|
|||||||
return NSLocalizedString("DMs", comment: "Toolbar label for DMs view, where DM is the English abbreviation for Direct Message.")
|
return NSLocalizedString("DMs", comment: "Toolbar label for DMs view, where DM is the English abbreviation for Direct Message.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handle_unfollow(state: DamusState, notif: Notification) {
|
||||||
|
guard let privkey = state.keypair.privkey else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let target = notif.object as! FollowTarget
|
||||||
|
let pk = target.pubkey
|
||||||
|
|
||||||
|
if let ev = unfollow_user(postbox: state.postbox,
|
||||||
|
our_contacts: state.contacts.event,
|
||||||
|
pubkey: state.pubkey,
|
||||||
|
privkey: privkey,
|
||||||
|
unfollow: pk) {
|
||||||
|
notify(.unfollowed, pk)
|
||||||
|
|
||||||
|
state.contacts.event = ev
|
||||||
|
state.contacts.remove_friend(pk)
|
||||||
|
//friend_events = friend_events.filter { $0.pubkey != pk }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handle_follow(state: DamusState, notif: Notification) {
|
||||||
|
guard let privkey = state.keypair.privkey else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let fnotify = notif.object as! FollowTarget
|
||||||
|
|
||||||
|
if let ev = follow_user(pool: state.pool,
|
||||||
|
our_contacts: state.contacts.event,
|
||||||
|
pubkey: state.pubkey,
|
||||||
|
privkey: privkey,
|
||||||
|
follow: ReferencedId(ref_id: fnotify.pubkey, relay_id: nil, key: "p")) {
|
||||||
|
notify(.followed, fnotify.pubkey)
|
||||||
|
|
||||||
|
state.contacts.event = ev
|
||||||
|
|
||||||
|
switch fnotify {
|
||||||
|
case .pubkey(let pk):
|
||||||
|
state.contacts.add_friend_pubkey(pk)
|
||||||
|
case .contact(let ev):
|
||||||
|
state.contacts.add_friend_contact(ev)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handle_post_notification(keypair: FullKeypair, postbox: PostBox, events: EventCache, notif: Notification) -> Bool {
|
||||||
|
let post_res = notif.object as! NostrPostResult
|
||||||
|
switch post_res {
|
||||||
|
case .post(let post):
|
||||||
|
//let post = tup.0
|
||||||
|
//let to_relays = tup.1
|
||||||
|
print("post \(post.content)")
|
||||||
|
let new_ev = post_to_event(post: post, privkey: keypair.privkey, pubkey: keypair.pubkey)
|
||||||
|
postbox.send(new_ev)
|
||||||
|
for eref in new_ev.referenced_ids.prefix(3) {
|
||||||
|
// also broadcast at most 3 referenced events
|
||||||
|
if let ev = events.lookup(eref.ref_id) {
|
||||||
|
postbox.send(ev)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
case .cancel:
|
||||||
|
print("post cancelled")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user