Simplify presence stringification (should help with vector-im/element-android#5712)
This commit is contained in:
parent
99f2007eb6
commit
99ef547295
7 changed files with 36 additions and 87 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue