shithub: hell

ref: 9ab6febaf561d60c49f62f003245e80340873ffc
dir: /status.go/

View raw version
package main

import (
	"context"
	"fmt"

	"codeberg.org/penny64/hellclient-go-mastodon"
)

func (hc *Hellclient) 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 {
		var statusbatch []*mastodon.Status

		statusfunc := func(job *GenericJob) { statusbatch, err = GetTimeline(context.Background(), page) }
		statusjob := hc.dispatchFunc(statusfunc)
		statusjob.Wait()
		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 = ""
		fmt.Printf("Loaded %v statuses....", len(statuses))
	}

	return statuses, err

}