package message

import (
	"strings"
	"time"
)

type ThreadInboxCursor struct {
	SortAt          time.Time
	ThreadChannelID string
}

func (cursor ThreadInboxCursor) IsZero() bool {
	return cursor == (ThreadInboxCursor{})
}

func normalizeThreadInboxCursor(cursor ThreadInboxCursor) (ThreadInboxCursor, error) {
	if cursor.IsZero() {
		return ThreadInboxCursor{}, nil
	}
	trimmedThreadChannelID := strings.TrimSpace(cursor.ThreadChannelID)
	if cursor.SortAt.IsZero() || trimmedThreadChannelID == "" {
		return ThreadInboxCursor{}, badRequest("invalid thread inbox cursor")
	}
	return ThreadInboxCursor{
		SortAt:          cursor.SortAt.UTC(),
		ThreadChannelID: trimmedThreadChannelID,
	}, nil
}
