Simplify presence stringification (should help with vector-im/element-android#5712)

This commit is contained in:
Neil Alexander 2022-04-07 10:10:28 +01:00
parent 99f2007eb6
commit 99ef547295
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
7 changed files with 36 additions and 87 deletions

View file

@ -21,25 +21,41 @@ import (
"github.com/matrix-org/gomatrixserverlib"
)
//go:generate stringer -type=Presence -linecomment
type Presence uint8
const (
PresenceUnavailable Presence = iota + 1 // unavailable
PresenceOnline // online
PresenceOffline // offline
PresenceUnknown Presence = iota
PresenceUnavailable // unavailable
PresenceOnline // online
PresenceOffline // offline
)
func (p Presence) String() string {
switch p {
case PresenceUnavailable:
return "unavailable"
case PresenceOnline:
return "online"
case PresenceOffline:
return "offline"
default:
return "unknown"
}
}
// PresenceFromString returns the integer representation of the given input presence.
// Returns false for ok, if input is not a valid presence value.
func PresenceFromString(input string) (p Presence, ok bool) {
for i := 0; i < len(_Presence_index)-1; i++ {
l, r := _Presence_index[i], _Presence_index[i+1]
if strings.EqualFold(input, _Presence_name[l:r]) {
return Presence(i + 1), true
}
func PresenceFromString(input string) (Presence, bool) {
switch strings.ToLower(input) {
case "unavailable":
return PresenceUnavailable, true
case "online":
return PresenceOnline, true
case "offline":
return PresenceOffline, true
default:
return PresenceUnknown, false
}
return 0, false
}
type PresenceInternal struct {