feat: accounts improvement
- setting clock when adding/updating accounts - syncing/backing up accounts with the time they actually were updated instead the time when dispatching is done as it was before
This commit is contained in:
parent
e4f23752a9
commit
1ae956ad3c
|
@ -2480,6 +2480,10 @@ func (m *Messenger) SyncDevices(ctx context.Context, ensName, photoPath string,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) SaveAccounts(accs []*accounts.Account) error {
|
func (m *Messenger) SaveAccounts(accs []*accounts.Account) error {
|
||||||
|
clock, _ := m.getLastClockWithRelatedChat()
|
||||||
|
for _, acc := range accs {
|
||||||
|
acc.Clock = clock
|
||||||
|
}
|
||||||
err := m.settings.SaveAccounts(accs)
|
err := m.settings.SaveAccounts(accs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -2498,27 +2502,30 @@ func (m *Messenger) DeleteAccount(address types.Address) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clock, chat := m.getLastClockWithRelatedChat()
|
||||||
|
acc.Clock = clock
|
||||||
acc.Removed = true
|
acc.Removed = true
|
||||||
|
|
||||||
accs := []*accounts.Account{acc}
|
accs := []*accounts.Account{acc}
|
||||||
return m.syncWallets(accs, m.dispatchMessage)
|
err = m.syncWallets(accs, m.dispatchMessage)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
chat.LastClockValue = clock
|
||||||
|
return m.saveChat(chat)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) prepareSyncWalletAccountsMessage(accs []*accounts.Account, clock uint64) *protobuf.SyncWalletAccounts {
|
func (m *Messenger) prepareSyncWalletAccountsMessage(accs []*accounts.Account) *protobuf.SyncWalletAccounts {
|
||||||
accountMessages := make([]*protobuf.SyncWalletAccount, 0)
|
accountMessages := make([]*protobuf.SyncWalletAccount, 0)
|
||||||
for _, acc := range accs {
|
for _, acc := range accs {
|
||||||
if acc.Chat {
|
if acc.Chat {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
var accountClock uint64
|
|
||||||
if acc.Clock == 0 {
|
|
||||||
accountClock = clock
|
|
||||||
} else {
|
|
||||||
accountClock = acc.Clock
|
|
||||||
}
|
|
||||||
syncMessage := &protobuf.SyncWalletAccount{
|
syncMessage := &protobuf.SyncWalletAccount{
|
||||||
Clock: accountClock,
|
Clock: acc.Clock,
|
||||||
Address: acc.Address.Bytes(),
|
Address: acc.Address.Bytes(),
|
||||||
Wallet: acc.Wallet,
|
Wallet: acc.Wallet,
|
||||||
Chat: acc.Chat,
|
Chat: acc.Chat,
|
||||||
|
@ -2554,9 +2561,9 @@ func (m *Messenger) syncWallets(accs []*accounts.Account, rawMessageHandler RawM
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
clock, chat := m.getLastClockWithRelatedChat()
|
_, chat := m.getLastClockWithRelatedChat()
|
||||||
|
|
||||||
message := m.prepareSyncWalletAccountsMessage(accs, clock)
|
message := m.prepareSyncWalletAccountsMessage(accs)
|
||||||
|
|
||||||
encodedMessage, err := proto.Marshal(message)
|
encodedMessage, err := proto.Marshal(message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2571,12 +2578,7 @@ func (m *Messenger) syncWallets(accs []*accounts.Account, rawMessageHandler RawM
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = rawMessageHandler(ctx, rawMessage)
|
_, err = rawMessageHandler(ctx, rawMessage)
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
chat.LastClockValue = clock
|
|
||||||
return m.saveChat(chat)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) syncContactRequestDecision(ctx context.Context, requestID string, accepted bool, rawMessageHandler RawMessageHandler) error {
|
func (m *Messenger) syncContactRequestDecision(ctx context.Context, requestID string, accepted bool, rawMessageHandler RawMessageHandler) error {
|
||||||
|
|
|
@ -95,7 +95,7 @@ func (m *Messenger) BackupData(ctx context.Context) (uint64, error) {
|
||||||
return 0, errors[0]
|
return 0, errors[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
syncWalletAccounts, err := m.backupWalletAccounts(clock)
|
syncWalletAccounts, err := m.backupWalletAccounts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
@ -400,11 +400,11 @@ func (m *Messenger) backupProfile(ctx context.Context, clock uint64) ([]*protobu
|
||||||
return backupMessages, nil
|
return backupMessages, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) backupWalletAccounts(clock uint64) (*protobuf.SyncWalletAccounts, error) {
|
func (m *Messenger) backupWalletAccounts() (*protobuf.SyncWalletAccounts, error) {
|
||||||
accounts, err := m.settings.GetAccounts()
|
accounts, err := m.settings.GetAccounts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return m.prepareSyncWalletAccountsMessage(accounts, clock), nil
|
return m.prepareSyncWalletAccountsMessage(accounts), nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue