mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-11 05:06:51 +00:00
feat(GODT-2289): UIDValidity as Timestamp
Update UIDValidity to be timestamp with the number of seconds since the 1st of February 2023. This avoids the problem where we lose the last UIDValidity value due to the vault being missing/corrupted/deleted.
This commit is contained in:
@ -17,8 +17,6 @@
|
||||
|
||||
package vault
|
||||
|
||||
import "github.com/ProtonMail/gluon/imap"
|
||||
|
||||
// UserData holds information about a single bridge user.
|
||||
// The user may or may not be logged in.
|
||||
type UserData struct {
|
||||
@ -28,7 +26,6 @@ type UserData struct {
|
||||
|
||||
GluonKey []byte
|
||||
GluonIDs map[string]string
|
||||
UIDValidity map[string]imap.UID
|
||||
BridgePass []byte // raw token represented as byte slice (needs to be encoded)
|
||||
AddressMode AddressMode
|
||||
|
||||
@ -79,7 +76,6 @@ func newDefaultUser(userID, username, primaryEmail, authUID, authRef string, key
|
||||
|
||||
GluonKey: newRandomToken(32),
|
||||
GluonIDs: make(map[string]string),
|
||||
UIDValidity: make(map[string]imap.UID),
|
||||
BridgePass: newRandomToken(16),
|
||||
AddressMode: CombinedMode,
|
||||
|
||||
|
||||
@ -20,7 +20,6 @@ package vault
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/ProtonMail/gluon/imap"
|
||||
"github.com/bradenaw/juniper/xslices"
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
@ -81,24 +80,6 @@ func (user *User) RemoveGluonID(addrID, gluonID string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (user *User) GetUIDValidity(addrID string) imap.UID {
|
||||
if validity, ok := user.vault.getUser(user.userID).UIDValidity[addrID]; ok {
|
||||
return validity
|
||||
}
|
||||
|
||||
if err := user.SetUIDValidity(addrID, 1000); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return user.GetUIDValidity(addrID)
|
||||
}
|
||||
|
||||
func (user *User) SetUIDValidity(addrID string, validity imap.UID) error {
|
||||
return user.vault.modUser(user.userID, func(data *UserData) {
|
||||
data.UIDValidity[addrID] = validity
|
||||
})
|
||||
}
|
||||
|
||||
// AddressMode returns the user's address mode.
|
||||
func (user *User) AddressMode() AddressMode {
|
||||
return user.vault.getUser(user.userID).AddressMode
|
||||
@ -208,10 +189,6 @@ func (user *User) ClearSyncStatus() error {
|
||||
data.SyncStatus = SyncStatus{}
|
||||
|
||||
data.EventID = ""
|
||||
|
||||
for addrID := range data.UIDValidity {
|
||||
data.UIDValidity[addrID]++
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user