mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-15 14:56:42 +00:00
Other: Switch to faster message IDs route
The new API route lets us query exactly which message IDs a user has, allowing us to begin syncing much faster than before.
This commit is contained in:
@ -151,7 +151,7 @@ func getParentID( //nolint:funlen
|
||||
filter["AddressID"] = []string{authAddrID}
|
||||
}
|
||||
|
||||
metadata, err := client.GetAllMessageMetadata(ctx, filter)
|
||||
metadata, err := client.GetMessageMetadata(ctx, filter)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to get message metadata: %w", err)
|
||||
}
|
||||
@ -176,7 +176,7 @@ func getParentID( //nolint:funlen
|
||||
filter["AddressID"] = []string{authAddrID}
|
||||
}
|
||||
|
||||
metadata, err := client.GetAllMessageMetadata(ctx, filter)
|
||||
metadata, err := client.GetMessageMetadata(ctx, filter)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to get message metadata: %w", err)
|
||||
}
|
||||
|
||||
@ -188,19 +188,9 @@ func syncMessages( //nolint:funlen
|
||||
syncWorkers, syncBuffer int,
|
||||
) error {
|
||||
// Determine which messages to sync.
|
||||
metadata, err := client.GetAllMessageMetadata(ctx, nil)
|
||||
messageIDs, err := client.GetMessageIDs(ctx, vault.SyncStatus().LastMessageID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get all message metadata: %w", err)
|
||||
}
|
||||
|
||||
// Get the message IDs to sync.
|
||||
messageIDs := xslices.Map(metadata, func(metadata liteapi.MessageMetadata) string {
|
||||
return metadata.ID
|
||||
})
|
||||
|
||||
// If possible, begin syncing from one beyond the last synced message.
|
||||
if idx := xslices.Index(messageIDs, vault.SyncStatus().LastMessageID); idx >= 0 {
|
||||
messageIDs = messageIDs[idx+1:]
|
||||
return fmt.Errorf("failed to get message IDs to sync: %w", err)
|
||||
}
|
||||
|
||||
// Fetch and build each message.
|
||||
|
||||
Reference in New Issue
Block a user