From ac481925622df9bf8024d1b5726282d0214fd22b Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:47:07 +0000 Subject: [bugfix] poll vote count fixes (#2444) * don't drop all vote counts if hideCounts is set, refactors poll option extraction slightly * omit voters_count when not set * make voters_count a ptr to ensure it is omit unless definitely needed * handle case of expires_at, voters_count and option.votes_count being nilable * faster isNil check * remove omitempty tags since mastodon API marks things as nullable but still sets them in outgoing json --- internal/router/template.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'internal/router') diff --git a/internal/router/template.go b/internal/router/template.go index 804f532bd..d5e36d6f2 100644 --- a/internal/router/template.go +++ b/internal/router/template.go @@ -24,6 +24,7 @@ import ( "path/filepath" "strings" "time" + "unsafe" "github.com/gin-gonic/gin" apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" @@ -172,6 +173,13 @@ func increment(i int) int { return i + 1 } +// isNil will safely check if 'v' is nil without +// dealing with weird Go interface nil bullshit. +func isNil(i interface{}) bool { + type eface struct{ _, data unsafe.Pointer } + return (*eface)(unsafe.Pointer(&i)).data == nil +} + func LoadTemplateFunctions(engine *gin.Engine) { engine.SetFuncMap(template.FuncMap{ "escape": escape, @@ -185,5 +193,6 @@ func LoadTemplateFunctions(engine *gin.Engine) { "emojify": emojify, "acctInstance": acctInstance, "increment": increment, + "isNil": isNil, }) } -- cgit v1.2.3