events/beeper: make order_string a pointer

This commit is contained in:
Tulir Asokan 2024-11-18 19:52:36 +02:00
commit 88dd813d67
2 changed files with 23 additions and 14 deletions

View file

@ -114,35 +114,44 @@ type BeeperEncodedOrder struct {
suborder int64
}
func NewBeeperEncodedOrder(order int64, suborder int64) BeeperEncodedOrder {
return BeeperEncodedOrder{order: order, suborder: suborder}
func NewBeeperEncodedOrder(order int64, suborder int64) *BeeperEncodedOrder {
return &BeeperEncodedOrder{order: order, suborder: suborder}
}
func BeeperEncodedOrderFromString(str string) (BeeperEncodedOrder, error) {
func BeeperEncodedOrderFromString(str string) (*BeeperEncodedOrder, error) {
order, suborder, err := decodeIntPair(str)
if err != nil {
return BeeperEncodedOrder{}, err
return nil, err
}
return BeeperEncodedOrder{order: order, suborder: suborder}, nil
return &BeeperEncodedOrder{order: order, suborder: suborder}, nil
}
func (b BeeperEncodedOrder) String() string {
func (b *BeeperEncodedOrder) String() string {
if b == nil {
return ""
}
return encodeIntPair(b.order, b.suborder)
}
func (b BeeperEncodedOrder) OrderPair() (int64, int64) {
func (b *BeeperEncodedOrder) OrderPair() (int64, int64) {
if b == nil {
return 0, 0
}
return b.order, b.suborder
}
func (b BeeperEncodedOrder) IsZero() bool {
return b.order == 0 && b.suborder == 0
func (b *BeeperEncodedOrder) IsZero() bool {
return b == nil || (b.order == 0 && b.suborder == 0)
}
func (b BeeperEncodedOrder) MarshalJSON() ([]byte, error) {
func (b *BeeperEncodedOrder) MarshalJSON() ([]byte, error) {
return []byte(`"` + b.String() + `"`), nil
}
func (b *BeeperEncodedOrder) UnmarshalJSON(data []byte) error {
if b == nil {
return fmt.Errorf("BeeperEncodedOrder: receiver is nil")
}
str := string(data)
if len(str) < 2 {
return fmt.Errorf("invalid encoded order string: %s", str)

View file

@ -144,10 +144,10 @@ type Unsigned struct {
RedactedBecause *Event `json:"redacted_because,omitempty"`
InviteRoomState []StrippedState `json:"invite_room_state,omitempty"`
BeeperHSOrder int64 `json:"com.beeper.hs.order,omitempty"`
BeeperHSSuborder int64 `json:"com.beeper.hs.suborder,omitempty"`
BeeperHSOrderString BeeperEncodedOrder `json:"com.beeper.hs.order_string,omitempty"`
BeeperFromBackup bool `json:"com.beeper.from_backup,omitempty"`
BeeperHSOrder int64 `json:"com.beeper.hs.order,omitempty"`
BeeperHSSuborder int64 `json:"com.beeper.hs.suborder,omitempty"`
BeeperHSOrderString *BeeperEncodedOrder `json:"com.beeper.hs.order_string,omitempty"`
BeeperFromBackup bool `json:"com.beeper.from_backup,omitempty"`
}
func (us *Unsigned) IsEmpty() bool {