[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
This commit is contained in:
kim 2023-12-12 13:47:07 +00:00 committed by GitHub
commit ac48192562
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 111 additions and 67 deletions

View file

@ -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,
})
}