From cf26b198ee8bec834b661533cc42b4e356300362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=9E=E3=83=AA=E3=82=A6=E3=82=B9?= Date: Thu, 5 Jan 2023 17:40:18 -0500 Subject: [PATCH] Refactored CreateReply --- models/reply/reply.go | 1 + system/discourse/discourse.go | 14 ++++++-------- ui/windows/postcreate/handlers.go | 32 ++++++++++++++----------------- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/models/reply/reply.go b/models/reply/reply.go index 3edf367..0ea1872 100644 --- a/models/reply/reply.go +++ b/models/reply/reply.go @@ -9,6 +9,7 @@ import ( type Reply struct { ID string InReplyTo string + Index int Body string diff --git a/system/discourse/discourse.go b/system/discourse/discourse.go index 076c64c..0f9d6b2 100644 --- a/system/discourse/discourse.go +++ b/system/discourse/discourse.go @@ -265,6 +265,7 @@ func (sys *System) LoadPost(p *post.Post) error { p.Replies = append(p.Replies, reply.Reply{ ID: strconv.Itoa(i.ID), InReplyTo: p.ID, + Index: idx, Body: cookedMd, @@ -313,17 +314,14 @@ func (sys *System) CreateReply(r *reply.Reply) error { return err } - var inReplyTo int = -1 - if r.InReplyTo != "" { - inReplyTo, err = strconv.Atoi(r.InReplyTo) - if err != nil { - return err - } + inReplyTo, err := strconv.Atoi(r.InReplyTo) + if err != nil { + return err } var ap api.CreatePostModel - if inReplyTo == -1 { + if r.Index == -1 { // Looks like we're replying directly to a post ap = api.CreatePostModel{ Raw: r.Body, @@ -335,7 +333,7 @@ func (sys *System) CreateReply(r *reply.Reply) error { ap = api.CreatePostModel{ Raw: r.Body, TopicID: inReplyTo, - ReplyToPostNumber: ID, + ReplyToPostNumber: r.Index, CreatedAt: time.Now().Format(time.RFC3339Nano), } } diff --git a/ui/windows/postcreate/handlers.go b/ui/windows/postcreate/handlers.go index 95e8e3b..015bde7 100644 --- a/ui/windows/postcreate/handlers.go +++ b/ui/windows/postcreate/handlers.go @@ -1,8 +1,6 @@ package postcreate import ( - "strconv" - tea "github.com/charmbracelet/bubbletea" "github.com/mrusme/gobbs/models/post" "github.com/mrusme/gobbs/models/reply" @@ -12,27 +10,25 @@ import ( func handleSubmit(mi interface{}) (bool, []tea.Cmd) { var m *Model = mi.(*Model) var cmds []tea.Cmd - var irtID string = "" - var irtIRT string = "" - var irtSysIDX int = 0 + var r reply.Reply if m.replyToIdx == 0 { - pst := m.replyToIface.(post.Post) - irtID = pst.ID - irtSysIDX = pst.SysIDX + // No numbers were typed before hitting `r` so we're replying to the actual + // Post + x := m.replyToIface.(post.Post) + r = reply.Reply{ + ID: x.ID, + InReplyTo: "", + Index: -1, + SysIDX: x.SysIDX, + } } else { - rply := m.replyToIface.(reply.Reply) - irtID = strconv.Itoa(m.replyToIdx + 1) - irtIRT = rply.InReplyTo // TODO: THis is empty? Why? - irtSysIDX = rply.SysIDX + // Numbers were typed before hitting `r`, so we're taking the actual reply + // here + r = m.replyToIface.(reply.Reply) } - r := reply.Reply{ - ID: irtID, - InReplyTo: irtIRT, - Body: m.textarea.Value(), - SysIDX: irtSysIDX, - } + r.Body = m.textarea.Value() err := m.a.CreateReply(&r) if err != nil {