Add personal filter
Add a filter for 1-to-1, currently not used but useful in potential migrations
This commit is contained in:
parent
b3efbb54f8
commit
f2139105bf
|
@ -168,12 +168,16 @@ func (s *Service) Start(checkPeriod time.Duration) {
|
||||||
|
|
||||||
// Stop removes all the filters
|
// Stop removes all the filters
|
||||||
func (s *Service) Stop() error {
|
func (s *Service) Stop() error {
|
||||||
|
close(s.quit)
|
||||||
|
|
||||||
var chats []*Chat
|
var chats []*Chat
|
||||||
|
|
||||||
close(s.quit)
|
s.mutex.Lock()
|
||||||
for _, chat := range s.chats {
|
for _, chat := range s.chats {
|
||||||
chats = append(chats, chat)
|
chats = append(chats, chat)
|
||||||
}
|
}
|
||||||
|
s.mutex.Unlock()
|
||||||
|
|
||||||
return s.Remove(chats)
|
return s.Remove(chats)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,6 +349,26 @@ func (s *Service) loadDiscovery(myKey *ecdsa.PrivateKey) error {
|
||||||
discoveryChat.FilterID = discoveryResponse.FilterID
|
discoveryChat.FilterID = discoveryResponse.FilterID
|
||||||
|
|
||||||
s.chats[discoveryChat.ChatID] = discoveryChat
|
s.chats[discoveryChat.ChatID] = discoveryChat
|
||||||
|
|
||||||
|
// Load personal discovery
|
||||||
|
personalDiscoveryTopic := fmt.Sprintf("contact-discovery-%s", identityStr)
|
||||||
|
personalDiscoveryChat := &Chat{
|
||||||
|
ChatID: personalDiscoveryTopic,
|
||||||
|
Listen: true,
|
||||||
|
Identity: identityStr,
|
||||||
|
Discovery: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
discoveryResponse, err = s.addAsymmetricFilter(myKey, personalDiscoveryChat.ChatID, true)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
personalDiscoveryChat.Topic = discoveryResponse.Topic
|
||||||
|
personalDiscoveryChat.FilterID = discoveryResponse.FilterID
|
||||||
|
|
||||||
|
s.chats[personalDiscoveryChat.ChatID] = personalDiscoveryChat
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,17 +85,22 @@ func (s *ServiceTestSuite) TearDownTest() {
|
||||||
func (s *ServiceTestSuite) TestDiscoveryAndPartitionedTopic() {
|
func (s *ServiceTestSuite) TestDiscoveryAndPartitionedTopic() {
|
||||||
chats := []*Chat{}
|
chats := []*Chat{}
|
||||||
partitionedTopic := fmt.Sprintf("contact-discovery-%d", s.keys[0].partitionedTopic)
|
partitionedTopic := fmt.Sprintf("contact-discovery-%d", s.keys[0].partitionedTopic)
|
||||||
|
personalDiscoveryTopic := fmt.Sprintf("contact-discovery-%s", s.keys[0].PublicKeyString())
|
||||||
contactCodeTopic := "0x" + s.keys[0].PublicKeyString() + "-contact-code"
|
contactCodeTopic := "0x" + s.keys[0].PublicKeyString() + "-contact-code"
|
||||||
|
|
||||||
_, err := s.service.Init(chats)
|
_, err := s.service.Init(chats)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
s.Require().Equal(3, len(s.service.chats), "It creates two filters")
|
s.Require().Equal(4, len(s.service.chats), "It creates four filters")
|
||||||
|
|
||||||
discoveryFilter := s.service.chats[discoveryTopic]
|
discoveryFilter := s.service.chats[discoveryTopic]
|
||||||
s.Require().NotNil(discoveryFilter, "It adds the discovery filter")
|
s.Require().NotNil(discoveryFilter, "It adds the discovery filter")
|
||||||
s.Require().True(discoveryFilter.Listen)
|
s.Require().True(discoveryFilter.Listen)
|
||||||
|
|
||||||
|
personalDiscoveryFilter := s.service.chats[personalDiscoveryTopic]
|
||||||
|
s.Require().NotNil(personalDiscoveryFilter, "It adds the discovery filter")
|
||||||
|
s.Require().True(personalDiscoveryFilter.Listen)
|
||||||
|
|
||||||
contactCodeFilter := s.service.chats[contactCodeTopic]
|
contactCodeFilter := s.service.chats[contactCodeTopic]
|
||||||
s.Require().NotNil(contactCodeFilter, "It adds the contact code filter")
|
s.Require().NotNil(contactCodeFilter, "It adds the contact code filter")
|
||||||
s.Require().True(contactCodeFilter.Listen)
|
s.Require().True(contactCodeFilter.Listen)
|
||||||
|
@ -127,7 +132,7 @@ func (s *ServiceTestSuite) TestPublicAndOneToOneChats() {
|
||||||
actualChats[chat.ChatID] = chat
|
actualChats[chat.ChatID] = chat
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Require().Equal(5, len(actualChats), "It creates two additional filters for the one to one and one for the public chat")
|
s.Require().Equal(6, len(actualChats), "It creates two additional filters for the one to one and one for the public chat")
|
||||||
|
|
||||||
statusFilter := actualChats["status"]
|
statusFilter := actualChats["status"]
|
||||||
s.Require().NotNil(statusFilter, "It creates a filter for the public chat")
|
s.Require().NotNil(statusFilter, "It creates a filter for the public chat")
|
||||||
|
@ -180,7 +185,7 @@ func (s *ServiceTestSuite) TestNegotiatedTopic() {
|
||||||
actualChats[chat.ChatID] = chat
|
actualChats[chat.ChatID] = chat
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Require().Equal(5, len(actualChats), "It creates two additional filters for the negotiated topics")
|
s.Require().Equal(6, len(actualChats), "It creates two additional filters for the negotiated topics")
|
||||||
|
|
||||||
negotiatedFilter1 := actualChats[negotiatedTopic1]
|
negotiatedFilter1 := actualChats[negotiatedTopic1]
|
||||||
s.Require().NotNil(negotiatedFilter1, "It adds the negotiated filter")
|
s.Require().NotNil(negotiatedFilter1, "It adds the negotiated filter")
|
||||||
|
@ -221,7 +226,7 @@ func (s *ServiceTestSuite) TestNoInstallationIDs() {
|
||||||
actualChats[chat.ChatID] = chat
|
actualChats[chat.ChatID] = chat
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Require().Equal(4, len(actualChats), "It creates two additional filters for the negotiated topics")
|
s.Require().Equal(5, len(actualChats), "It creates two additional filters for the negotiated topics")
|
||||||
|
|
||||||
negotiatedFilter1 := actualChats[negotiatedTopic1]
|
negotiatedFilter1 := actualChats[negotiatedTopic1]
|
||||||
s.Require().NotNil(negotiatedFilter1, "It adds the negotiated filter")
|
s.Require().NotNil(negotiatedFilter1, "It adds the negotiated filter")
|
||||||
|
|
|
@ -11,13 +11,13 @@ import (
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||||
"github.com/ethereum/go-ethereum/rlp"
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
|
|
||||||
"github.com/status-im/status-go/db"
|
"github.com/status-im/status-go/db"
|
||||||
"github.com/status-im/status-go/mailserver"
|
"github.com/status-im/status-go/mailserver"
|
||||||
"github.com/status-im/status-go/messaging/chat"
|
|
||||||
"github.com/status-im/status-go/messaging/filter"
|
"github.com/status-im/status-go/messaging/filter"
|
||||||
"github.com/status-im/status-go/messaging/multidevice"
|
"github.com/status-im/status-go/messaging/multidevice"
|
||||||
"github.com/status-im/status-go/services/shhext/dedup"
|
"github.com/status-im/status-go/services/shhext/dedup"
|
||||||
|
|
Loading…
Reference in New Issue