diff options
author | 2023-12-12 13:47:07 +0000 | |
---|---|---|
committer | 2023-12-12 13:47:07 +0000 | |
commit | ac481925622df9bf8024d1b5726282d0214fd22b (patch) | |
tree | debb07d995a352f8c34673c3bbfc1d71a17248ff /internal/router | |
parent | [bugfix] ensure the 'Closing' flag doesn't get cached (#2443) (diff) | |
download | gotosocial-ac481925622df9bf8024d1b5726282d0214fd22b.tar.xz |
[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
Diffstat (limited to 'internal/router')
-rw-r--r-- | internal/router/template.go | 9 |
1 files changed, 9 insertions, 0 deletions
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, }) } |