mirror of
https://github.com/status-im/status-go.git
synced 2025-01-09 22:26:30 +00:00
b37fda7731
* Rebase on 1.8.5 * Remove outdated patches and apply all others * Use shh_post that returns hash * Use bloom filter for request to mailserver * Remove tests for sending messages without subbing first * Fix deadlock in ethdb * Expect null if receipt is not yet created * Subscribe to messages before sending them in whisper test
37 lines
951 B
Go
37 lines
951 B
Go
package shhext
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
|
whisper "github.com/ethereum/go-ethereum/whisper/whisperv6"
|
|
)
|
|
|
|
// NewPublicAPI returns instance of the public API.
|
|
func NewPublicAPI(w *whisper.Whisper, tracker *tracker) *PublicAPI {
|
|
return &PublicAPI{
|
|
w: w,
|
|
publicAPI: whisper.NewPublicWhisperAPI(w),
|
|
tracker: tracker,
|
|
}
|
|
}
|
|
|
|
// PublicAPI extends whisper public API.
|
|
type PublicAPI struct {
|
|
w *whisper.Whisper
|
|
publicAPI *whisper.PublicWhisperAPI
|
|
tracker *tracker
|
|
}
|
|
|
|
// Post shamelessly copied from whisper codebase with slight modifications.
|
|
func (api *PublicAPI) Post(ctx context.Context, req whisper.NewMessage) (hash hexutil.Bytes, err error) {
|
|
hash, err = api.publicAPI.Post(ctx, req)
|
|
if err == nil {
|
|
var envHash common.Hash
|
|
copy(envHash[:], hash[:]) // slice can't be used as key
|
|
api.tracker.Add(envHash)
|
|
}
|
|
return hash, err
|
|
}
|