shithub: hell

ref: a959728f2058c24c83b69faca05ef065ca7586d5
dir: /status.go/

View raw version
package main

import (
	"context"
	"time"

	"github.com/mattn/go-mastodon"
)

func GetStatusesSince(ID mastodon.ID, GetTimeline func(ctx context.Context, pg *mastodon.Pagination) ([]*mastodon.Status, error)) ([]*mastodon.Status, error) {

	page := &mastodon.Pagination{MinID: ID}

	var err error
	var statuses []*mastodon.Status

	for {
		statusbatch, err := GetTimeline(context.Background(), page)
		if err != nil {
			return statuses, err
		}

		if len(statusbatch) == 0 {
			break
		}

		for i := len(statusbatch) - 1; i >= 0; i-- {
			statuses = append(statuses, statusbatch[i])
		}
		//I really don't understand the server's results but erase the max ID and it paginates up I don't know man
		page.MaxID = ""
		time.Sleep(1 * time.Second)
	}

	return statuses, err

}