~ghost08/libphoton

d8105ae971c2b9a1bc000fd23ddd19cc4128d110 — Vladimír Magyar 2 years ago a971311
Add visibleCards and cards to public
2 files changed, 18 insertions(+), 15 deletions(-)

M libphoton.go
M plugins.go
M libphoton.go => libphoton.go +15 -12
@@ 70,6 70,9 @@ func New(cb Callbacks, paths []string, options ...Option) (*Photon, error) {
	}
	p.imgDownloader.client = p.httpClient
	p.mediaExtractor.Client = p.httpClient
	if err = p.loadPlugins(); err != nil {
		log.Fatal("ERROR:", err)
	}
	events.Emit(&events.Init{})
	return p, nil
}


@@ 144,7 147,7 @@ func (p *Photon) SearchQuery(q string) {
}

func (p *Photon) RefreshFeed() {
	p.cards = nil
	p.Cards = nil
	feeds := make(chan *gofeed.Feed)
	for _, feedURL := range p.feedInputs {
		feedURL := feedURL


@@ 208,15 211,15 @@ func (p *Photon) RefreshFeed() {
				Feed:   f,
			}
		}
		p.cards = append(p.cards, newCards...)
		p.Cards = append(p.Cards, newCards...)
		if feedsGot == len(p.feedInputs) {
			break
		}
	}
	sort.Sort(p.cards)
	sort.Sort(p.Cards)
	p.filterCards()
	if len(p.visibleCards) > 0 {
		p.SelectedCard = p.visibleCards[0]
	if len(p.VisibleCards) > 0 {
		p.SelectedCard = p.VisibleCards[0]
	}
	events.Emit(&events.FeedsDownloaded{})
}


@@ 233,26 236,26 @@ func (p *Photon) filterCards() {
	*/
	query := strings.ToLower(strings.TrimPrefix(p.searchQuery, "/"))
	if query == "" {
		p.visibleCards = p.cards
		p.VisibleCards = p.Cards
		return
	}
	p.visibleCards = nil
	for _, card := range p.cards {
	p.VisibleCards = nil
	for _, card := range p.Cards {
		if strings.Contains(strings.ToLower(card.Item.Title), query) {
			p.visibleCards = append(p.visibleCards, card)
			p.VisibleCards = append(p.VisibleCards, card)
			continue
		}
		if strings.Contains(strings.ToLower(card.Item.Description), query) {
			p.visibleCards = append(p.visibleCards, card)
			p.VisibleCards = append(p.VisibleCards, card)
			continue
		}
		if strings.Contains(strings.ToLower(card.Feed.Title), query) {
			p.visibleCards = append(p.visibleCards, card)
			p.VisibleCards = append(p.VisibleCards, card)
			continue
		}
		if card.Item.Author != nil {
			if strings.Contains(strings.ToLower(card.Item.Author.Name), query) {
				p.visibleCards = append(p.visibleCards, card)
				p.VisibleCards = append(p.VisibleCards, card)
				continue
			}
		}

M plugins.go => plugins.go +3 -3
@@ 17,7 17,7 @@ import (

var luaState *lua.LState

func (p *Photon) LoadPlugins() error {
func (p *Photon) loadPlugins() error {
	plugins, err := findPlugins()
	if err != nil {
		return fmt.Errorf("finding plugins: %w", err)


@@ 76,8 76,8 @@ func (p *Photon) photonLoader(L *lua.LState) int {
	L.SetField(mod, "Normal", lua.LNumber(states.Normal))
	L.SetField(mod, "Article", lua.LNumber(states.Article))
	L.SetField(mod, "Search", lua.LNumber(states.Search))
	L.SetField(mod, "cards", newCards(&p.cards, L))
	L.SetField(mod, "visibleCards", newCards(&p.visibleCards, L))
	L.SetField(mod, "cards", newCards(&p.Cards, L))
	L.SetField(mod, "visibleCards", newCards(&p.VisibleCards, L))
	L.SetField(mod, "selectedCard", p.newSelectedCard(L))
	L.Push(mod)