mirror of
https://github.com/status-im/status-go.git
synced 2025-01-15 09:19:26 +00:00
89251e8416
* Added community sync protobuf * Updated community sync send logic * Integrated syncCommunity handling * Added synced_at field and tidied up some other logic * persistence testing * Added testing and join functionality * Fixed issue with empty scan params * Finshed persistence tests for new db funcs * Midway debug of description not persisting after sync * Resolved final issues and tidied up * Polish * delint * Fix error not handled on SetPrivateKey * fix infinite loop, again * Added muted option and test fix * Added Muted to syncing functions, not just in persistence * Fix bug introduced with Muted property * Added a couple of notes for future devs * Added most of the sync RequestToJoin functionality Tests need to be completed and tests are giving some errors * Finished tests for getJoinedAndPending * Added note * Resolving lint * Fix of protobuf gen bug * Fixes to community sync tests * Fixes to test * Continued fix of e2e * Final fix to e2e testing * Updated migration position * resolve missing import * Apparently the linter spellchecks * Fix bug from #2276 merge * Bug fix for leaving quirkiness * Addressed superfluous MessengerResponse field * Addressed feedback * VERSION bump
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package communities
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/status-im/status-go/eth-node/crypto"
|
|
"github.com/status-im/status-go/eth-node/types"
|
|
"github.com/status-im/status-go/protocol/protobuf"
|
|
)
|
|
|
|
type RequestToJoinState uint
|
|
|
|
const (
|
|
RequestToJoinStatePending RequestToJoinState = iota + 1
|
|
RequestToJoinStateDeclined
|
|
RequestToJoinStateAccepted
|
|
)
|
|
|
|
type RequestToJoin struct {
|
|
ID types.HexBytes `json:"id"`
|
|
PublicKey string `json:"publicKey"`
|
|
Clock uint64 `json:"clock"`
|
|
ENSName string `json:"ensName,omitempty"`
|
|
ChatID string `json:"chatId"`
|
|
CommunityID types.HexBytes `json:"communityId"`
|
|
State RequestToJoinState `json:"state"`
|
|
Our bool `json:"our"`
|
|
}
|
|
|
|
func (r *RequestToJoin) CalculateID() {
|
|
idString := fmt.Sprintf("%s-%s", r.PublicKey, r.CommunityID)
|
|
r.ID = crypto.Keccak256([]byte(idString))
|
|
}
|
|
|
|
func (r *RequestToJoin) ToSyncProtobuf() *protobuf.SyncCommunityRequestsToJoin {
|
|
return &protobuf.SyncCommunityRequestsToJoin{
|
|
Id: r.ID,
|
|
PublicKey: r.PublicKey,
|
|
Clock: r.Clock,
|
|
EnsName: r.ENSName,
|
|
ChatId: r.ChatID,
|
|
CommunityId: r.CommunityID,
|
|
State: uint64(r.State),
|
|
}
|
|
}
|
|
|
|
func (r *RequestToJoin) InitFromSyncProtobuf(proto *protobuf.SyncCommunityRequestsToJoin) {
|
|
r.ID = proto.Id
|
|
r.PublicKey = proto.PublicKey
|
|
r.Clock = proto.Clock
|
|
r.ENSName = proto.EnsName
|
|
r.ChatID = proto.ChatId
|
|
r.CommunityID = proto.CommunityId
|
|
r.State = RequestToJoinState(proto.State)
|
|
}
|
|
|
|
func (r *RequestToJoin) Empty() bool {
|
|
return len(r.ID)+len(r.PublicKey)+int(r.Clock)+len(r.ENSName)+len(r.ChatID)+len(r.CommunityID)+int(r.State) == 0
|
|
}
|