shithub: hell

ref: dc12017f82c0df2d816a36c78546188976d120cf
dir: /pages.go/

View raw version
package main

import (
	"context"
	"fmt"
	"strings"
	
	"codeberg.org/penny64/hellclient-go-mastodon"
)

type StatusLoader interface {
	Load(int) *[]PageItem
}

type Page struct {
	loader StatusLoader
	index int
	itembuffer *[]PageItem
	
}
type NotificationPages struct {
	hc *Hellclient
	page *mastodon.Pagination
}

type PageItem struct {
	itemtext string
	lines    int
}

func (noticeData *NotificationPages) Load(limit int) *[]PageItem {
	if noticeData.page == nil {
		noticeData.page = &mastodon.Pagination{}
	}
	noticeData.page.Limit = int64(limit)
	notices, err := noticeData.hc.client.GetNotifications(context.Background(), noticeData.page)
	if err != nil {
		fmt.Printf("Error getting notification page: %s\n", err)
	}
	
	fmt.Printf("%+v\n", noticeData.page)
	noticeArray := noticeData.hc.RenderNotificationsArray(notices)
	var itemArray []PageItem
	for i, _ := range noticeArray {
		item := PageItem{itemtext: noticeArray[i]}
		itemArray = append(itemArray, item)
	}
	noticeData.page.MinID = ""
	return &itemArray
}


func (page *Page) String() string {
	var sb strings.Builder
	if page.itembuffer == nil {
		page.itembuffer = &[]PageItem{}
	}
	if len(*page.itembuffer) < (page.index + 5) {
		*page.itembuffer = append(*page.itembuffer, *page.loader.Load(20)...)

	}
	var items []PageItem
	if len(*page.itembuffer) >= page.index {
		items = (*page.itembuffer)[page.index:]
	}

	if len(items) > 5 {
		items = items[:5]
	}
	reverseditems := reverseArray(items)
	for i, _ := range reverseditems {
		sb.WriteString(reverseditems[i].itemtext)
	}
	return sb.String()
}

func (page *Page) Next() {
	page.index = page.index + 5
}

func (page *Page) Prev() {
	page.index = page.index - 5
}

func (page *Page) Current() int {
	return 0
}