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:
James Houlahan
2022-11-01 12:19:36 +01:00
parent dbfb7572a8
commit 99745ac067
4 changed files with 7 additions and 17 deletions

View File

@ -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)
}

View File

@ -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.