fix(GODT-3118): Do not reset EventID when migrating sync settings

This commit is contained in:
Leander Beernaert
2023-11-13 14:57:42 +01:00
committed by Jakub Cuth
parent ea26188dc0
commit ddc5e775b9
3 changed files with 38 additions and 6 deletions

View File

@ -33,7 +33,7 @@ func migrateSyncStatusFromVault(encVault *vault.User, syncConfigDir string, user
} }
if migrated { if migrated {
if err := encVault.ClearSyncStatus(); err != nil { if err := encVault.ClearSyncStatusWithoutEventID(); err != nil {
return fmt.Errorf("failed to clear sync settings from vault: %w", err) return fmt.Errorf("failed to clear sync settings from vault: %w", err)
} }
} }

View File

@ -186,13 +186,13 @@ func (user *User) RemFailedMessageID(messageID string) error {
}) })
} }
// GetSyncStatus returns the user's sync status. // GetSyncStatusDeprecated returns the user's sync status.
func (user *User) GetSyncStatus() SyncStatus { func (user *User) GetSyncStatusDeprecated() SyncStatus {
return user.vault.getUser(user.userID).SyncStatus return user.vault.getUser(user.userID).SyncStatus
} }
// ClearSyncStatus clears the user's sync status. // ClearSyncStatusDeprecated clears the user's sync status.
func (user *User) ClearSyncStatus() error { func (user *User) ClearSyncStatusDeprecated() error {
return user.vault.modUser(user.userID, func(data *UserData) { return user.vault.modUser(user.userID, func(data *UserData) {
data.SyncStatus = SyncStatus{} data.SyncStatus = SyncStatus{}
@ -200,6 +200,13 @@ func (user *User) ClearSyncStatus() error {
}) })
} }
// ClearSyncStatusWithoutEventID clears the user's sync status without modifying EventID.
func (user *User) ClearSyncStatusWithoutEventID() error {
return user.vault.modUser(user.userID, func(data *UserData) {
data.SyncStatus = SyncStatus{}
})
}
// EventID returns the last processed event ID of the user. // EventID returns the last processed event ID of the user.
func (user *User) EventID() string { func (user *User) EventID() string {
return user.vault.getUser(user.userID).EventID return user.vault.getUser(user.userID).EventID

View File

@ -137,7 +137,7 @@ func TestUser_SyncStatus(t *testing.T) {
require.True(t, user.SyncStatus().HasMessages) require.True(t, user.SyncStatus().HasMessages)
// Clear the sync status. // Clear the sync status.
require.NoError(t, user.ClearSyncStatus()) require.NoError(t, user.ClearSyncStatusDeprecated())
// Check the user's cleared sync status. // Check the user's cleared sync status.
require.False(t, user.SyncStatus().HasLabels) require.False(t, user.SyncStatus().HasLabels)
@ -145,6 +145,31 @@ func TestUser_SyncStatus(t *testing.T) {
require.Empty(t, user.SyncStatus().LastMessageID) require.Empty(t, user.SyncStatus().LastMessageID)
} }
func TestUser_ClearSyncStatusWithoutEventID(t *testing.T) {
// Create a new test vault.
s := newVault(t)
// Create a new user.
user, err := s.AddUser("userID", "username", "username@pm.me", "authUID", "authRef", []byte("keyPass"))
require.NoError(t, err)
// Simulate finishing the sync.
require.NoError(t, user.SetHasLabels(true))
require.NoError(t, user.SetHasMessages(true))
require.True(t, user.SyncStatus().HasLabels)
require.True(t, user.SyncStatus().HasMessages)
require.NoError(t, user.SetEventID("foo"))
// Clear the sync status.
require.NoError(t, user.ClearSyncStatusWithoutEventID())
// Check the user's cleared sync status.
require.False(t, user.SyncStatus().HasLabels)
require.False(t, user.SyncStatus().HasMessages)
require.Empty(t, user.SyncStatus().LastMessageID)
require.Equal(t, "foo", user.EventID())
}
func TestUser_PrimaryEmail(t *testing.T) { func TestUser_PrimaryEmail(t *testing.T) {
// Create a new test vault. // Create a new test vault.
s := newVault(t) s := newVault(t)