Skip to content

Commit

Permalink
Publish contact code periodically
Browse files Browse the repository at this point in the history
  • Loading branch information
cammellos committed Jun 19, 2019
1 parent 1aa3e28 commit f6fba1d
Show file tree
Hide file tree
Showing 30 changed files with 674 additions and 363 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.26.0-beta.0
0.27.0-beta.0
31 changes: 0 additions & 31 deletions api/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"github.com/status-im/status-go/services/personal"
"github.com/status-im/status-go/services/rpcfilters"
"github.com/status-im/status-go/services/shhext/chat/crypto"
"github.com/status-im/status-go/services/shhext/filter"
"github.com/status-im/status-go/services/subscriptions"
"github.com/status-im/status-go/services/typeddata"
"github.com/status-im/status-go/signal"
Expand Down Expand Up @@ -659,36 +658,6 @@ func (b *StatusBackend) SignGroupMembership(content string) (string, error) {
return crypto.Sign(content, selectedChatAccount.AccountKey.PrivateKey)
}

// LoadFilters loads filter on sshext
func (b *StatusBackend) LoadFilters(chats []*filter.Chat) ([]*filter.Chat, error) {
st, err := b.statusNode.ShhExtService()
if err != nil {
return nil, err
}

return st.LoadFilters(chats)
}

// LoadFilter loads filter on sshext
func (b *StatusBackend) LoadFilter(chat *filter.Chat) ([]*filter.Chat, error) {
st, err := b.statusNode.ShhExtService()
if err != nil {
return nil, err
}

return st.LoadFilter(chat)
}

// RemoveFilter remove a filter
func (b *StatusBackend) RemoveFilter(chat *filter.Chat) error {
st, err := b.statusNode.ShhExtService()
if err != nil {
return err
}

return st.RemoveFilter(chat)
}

// EnableInstallation enables an installation for multi-device sync.
func (b *StatusBackend) EnableInstallation(installationID string) error {
selectedChatAccount, err := b.AccountManager().SelectedChatAccount()
Expand Down
74 changes: 0 additions & 74 deletions lib/library.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/profiling"
"github.com/status-im/status-go/services/personal"
"github.com/status-im/status-go/services/shhext/filter"
"github.com/status-im/status-go/services/typeddata"
"github.com/status-im/status-go/signal"
"github.com/status-im/status-go/transactions"
Expand Down Expand Up @@ -52,79 +51,6 @@ func StopNode() *C.char {
return makeJSONResponse(nil)
}

// LoadFilters load all whisper filters
//export LoadFilters
func LoadFilters(chatsStr *C.char) *C.char {
var chats []*filter.Chat

if err := json.Unmarshal([]byte(C.GoString(chatsStr)), &chats); err != nil {
return makeJSONResponse(err)
}

response, err := statusBackend.LoadFilters(chats)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Chats []*filter.Chat `json:"result"`
}{Chats: response})
if err != nil {
return makeJSONResponse(err)
}

return C.CString(string(data))
}

// LoadFilter load a whisper filter
//export LoadFilter
func LoadFilter(chatStr *C.char) *C.char {
var chat *filter.Chat

if err := json.Unmarshal([]byte(C.GoString(chatStr)), &chat); err != nil {
return makeJSONResponse(err)
}

response, err := statusBackend.LoadFilter(chat)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Chats []*filter.Chat `json:"result"`
}{Chats: response})

if err != nil {
return makeJSONResponse(err)
}

return C.CString(string(data))
}

// RemoveFilter load a whisper filter
//export RemoveFilter
func RemoveFilter(chatStr *C.char) *C.char {
var chat *filter.Chat

if err := json.Unmarshal([]byte(C.GoString(chatStr)), &chat); err != nil {
return makeJSONResponse(err)
}

err := statusBackend.RemoveFilter(chat)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Response string `json:"response"`
}{Response: "ok"})
if err != nil {
return makeJSONResponse(err)
}

return C.CString(string(data))
}

// ExtractGroupMembershipSignatures extract public keys from tuples of content/signature
//export ExtractGroupMembershipSignatures
func ExtractGroupMembershipSignatures(signaturePairsStr *C.char) *C.char {
Expand Down
71 changes: 0 additions & 71 deletions mobile/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/profiling"
"github.com/status-im/status-go/services/personal"
"github.com/status-im/status-go/services/shhext/filter"
"github.com/status-im/status-go/services/typeddata"
"github.com/status-im/status-go/signal"
"github.com/status-im/status-go/transactions"
Expand Down Expand Up @@ -614,73 +613,3 @@ func SignHash(hexEncodedHash string) string {

return hexEncodedSignature
}

// LoadFilters load all whisper filters
func LoadFilters(chatsStr string) string {
var chats []*filter.Chat

if err := json.Unmarshal([]byte(chatsStr), &chats); err != nil {
return makeJSONResponse(err)
}

response, err := statusBackend.LoadFilters(chats)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Chats []*filter.Chat `json:"result"`
}{Chats: response})
if err != nil {
return makeJSONResponse(err)
}

return string(data)
}

// LoadFilter load a whisper filter
func LoadFilter(chatStr string) string {
var chat *filter.Chat

if err := json.Unmarshal([]byte(chatStr), &chat); err != nil {
return makeJSONResponse(err)
}

response, err := statusBackend.LoadFilter(chat)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Chats []*filter.Chat `json:"result"`
}{Chats: response})
if err != nil {
return makeJSONResponse(err)
}

return string(data)
}

// RemoveFilter load a whisper filter
//export RemoveFilter
func RemoveFilter(chatStr string) string {
var chat *filter.Chat

if err := json.Unmarshal([]byte(chatStr), &chat); err != nil {
return makeJSONResponse(err)
}

err := statusBackend.RemoveFilter(chat)
if err != nil {
return makeJSONResponse(err)
}

data, err := json.Marshal(struct {
Response string `json:"response"`
}{Response: "ok"})
if err != nil {
return makeJSONResponse(err)
}

return string(data)
}
30 changes: 28 additions & 2 deletions services/shhext/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/status-im/status-go/mailserver"
"github.com/status-im/status-go/services/shhext/chat"
"github.com/status-im/status-go/services/shhext/dedup"
"github.com/status-im/status-go/services/shhext/filter"
"github.com/status-im/status-go/services/shhext/mailservers"
whisper "github.com/status-im/whisper/whisperv6"
)
Expand Down Expand Up @@ -466,12 +467,22 @@ func (api *PublicAPI) ConfirmMessagesProcessedByID(messageIDs [][]byte) error {

// SendPublicMessage sends a public chat message to the underlying transport
func (api *PublicAPI) SendPublicMessage(ctx context.Context, msg chat.SendPublicMessageRPC) (hexutil.Bytes, error) {
return api.service.SendPublicMessage(ctx, msg)
message, err := api.service.CreatePublicMessage(msg.Sig, msg.Chat, msg.Payload, false)
if err != nil {
return nil, err
}

return api.Post(ctx, *message)
}

// SendDirectMessage sends a 1:1 chat message to the underlying transport
func (api *PublicAPI) SendDirectMessage(ctx context.Context, msg chat.SendDirectMessageRPC) (hexutil.Bytes, error) {
return api.service.SendDirectMessage(ctx, msg)
message, err := api.service.CreateDirectMessage(msg.Sig, msg.PubKey, msg.DH, msg.Payload)
if err != nil {
return nil, err
}

return api.Post(ctx, *message)
}

func (api *PublicAPI) requestMessagesUsingPayload(request db.HistoryRequest, peer, symkeyID string, payload []byte, force bool, timeout time.Duration, topics []whisper.TopicType) (hash common.Hash, err error) {
Expand Down Expand Up @@ -582,6 +593,21 @@ func (api *PublicAPI) CompleteRequest(parent context.Context, hex string) (err e
return err
}

// LoadFilters load all the necessary filters
func (api *PublicAPI) LoadFilters(parent context.Context, chats []*filter.Chat) ([]*filter.Chat, error) {
return api.service.LoadFilters(chats)
}

// LoadFilter load a single filter
func (api *PublicAPI) LoadFilter(parent context.Context, chat *filter.Chat) ([]*filter.Chat, error) {
return api.service.LoadFilter(chat)
}

// RemoveFilter remove a single filter
func (api *PublicAPI) RemoveFilters(parent context.Context, chats []*filter.Chat) error {
return api.service.RemoveFilters(chats)
}

// -----
// HELPER
// -----
Expand Down
6 changes: 3 additions & 3 deletions services/shhext/chat/db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (
"os"

sqlite "github.com/mutecomm/go-sqlcipher" // We require go sqlcipher that overrides default implementation
"github.com/status-im/migrate"
"github.com/status-im/migrate/database/sqlcipher"
"github.com/status-im/migrate/source/go_bindata"
"github.com/status-im/migrate/v4"
"github.com/status-im/migrate/v4/database/sqlcipher"
"github.com/status-im/migrate/v4/source/go_bindata"
"github.com/status-im/status-go/services/shhext/chat/db/migrations"
)

Expand Down
46 changes: 46 additions & 0 deletions services/shhext/chat/db/migrations/bindata.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions services/shhext/chat/encryption.go
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,7 @@ func (s *EncryptionService) EncryptPayload(theirIdentityKey *ecdsa.PublicKey, my

// We don't have any, send a message with DH
if len(installations) == 0 {
s.log.Debug("no installations, sending to all devices")
encryptedPayload, err := s.EncryptPayloadWithDH(theirIdentityKey, payload)
return encryptedPayload, targetedInstallations, err
}
Expand Down
Loading

0 comments on commit f6fba1d

Please sign in to comment.