3a84afd0f1
Currently replies to messages are handled in status-react. This causes some issues with the fact that sometimes replies might come out of order, they might be offloaded to the database etc. This commit changes the behavior so that status-go always returns the replies, and in case a reply comes out of order (first the reply, later the message being replied to), it will include in the messages the updated message. It also adds some fields (RTL,Replace,LineCount) to the database which were not previously saved, resulting in some potential bugs. The method that we use to pull replies is currently a bit naive, we just pull all the message again from the database, but has the advantage of being simple. It will go through performance testing to make sure performnace are acceptable, if so I think it's reasonable to avoid some complexity. |
||
---|---|---|
.. | ||
applicationmetadata | ||
datasync | ||
encryption | ||
identity | ||
internal/sqlite | ||
migrations | ||
protobuf | ||
sqlite | ||
subscription | ||
transport | ||
tt | ||
v1 | ||
zaputil | ||
LICENSE | ||
README.md | ||
chat.go | ||
chat_group_proxy.go | ||
chat_test.go | ||
contact.go | ||
ens.go | ||
ens_test.go | ||
group_chat_system_messages.go | ||
message.go | ||
message_builder.go | ||
message_handler.go | ||
message_handler_test.go | ||
message_processor.go | ||
message_processor_test.go | ||
message_validator.go | ||
message_validator_test.go | ||
messenger.go | ||
messenger_contact_update_test.go | ||
messenger_installations_test.go | ||
messenger_test.go | ||
persistence.go | ||
persistence_legacy.go | ||
persistence_legacy_test.go | ||
timesource.go | ||
transaction_validator.go | ||
transaction_validator_test.go |
README.md
status-go/protocol
This is an implementation of the secure transport and payloads which are a part of the Status Client specification.
This implementation uses SQLite and SQLCipher for persistent storage.
The payloads are encoded using protocol-buffers.
Content
messenger.go
is the main file which exportsMessenger
struct. This is a public API to interact with this implementation of the Status Chat Protocol.protobuf/
contains protobuf files implementing payloads described in the Payloads spec.encryption/
implements the Secure Transport spec.transport/
connects the Status Chat Protocol with a wire-protocol which in our case is either Whisper or Waku.datasync/
is an adapter for MVDS.applicationmetadata/
is an outer layer wrapping a payload with an app-specific metadata like a signature.identity/
implements details related to creating a three-word name and identicon.migrations/
contains implementation specific migrations for the sqlite database which is used byMessenger
as a persistent data store.