2024-01-22 15:22:16 +00:00
|
|
|
package news
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2024-09-13 17:07:32 +00:00
|
|
|
"github.com/maddalax/mhtml/framework/h"
|
|
|
|
|
"github.com/maddalax/mhtml/starter-template/database"
|
2024-09-11 17:31:40 +00:00
|
|
|
"time"
|
2024-01-22 15:22:16 +00:00
|
|
|
)
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func StoryList() h.Renderable {
|
2024-01-22 15:22:16 +00:00
|
|
|
|
2024-09-11 00:52:18 +00:00
|
|
|
posts, _ := database.GetOrSet[[]Post]("posts", func() []Post {
|
|
|
|
|
p, _ := List()
|
|
|
|
|
return p
|
|
|
|
|
})
|
2024-01-22 15:22:16 +00:00
|
|
|
|
2024-09-11 17:31:40 +00:00
|
|
|
time.Sleep(200 * time.Millisecond)
|
|
|
|
|
|
2024-09-11 00:52:18 +00:00
|
|
|
if len(*posts) == 0 {
|
2024-09-13 15:47:18 +00:00
|
|
|
return h.Pf("No results found")
|
2024-01-22 15:22:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return h.Fragment(
|
2024-09-11 23:41:21 +00:00
|
|
|
h.Div(h.List(*posts, func(item Post, index int) h.Renderable {
|
2024-01-22 15:22:16 +00:00
|
|
|
return StoryCard(item)
|
|
|
|
|
})),
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func StoryCard(post Post) h.Renderable {
|
2024-01-22 15:22:16 +00:00
|
|
|
url := fmt.Sprintf("/news/%d", post.Id)
|
2024-09-11 17:31:40 +00:00
|
|
|
return h.Div(
|
2024-09-11 00:52:18 +00:00
|
|
|
h.Class("items-center bg-indigo-200 p-4 rounded"),
|
2024-09-13 15:47:18 +00:00
|
|
|
h.A(h.Text(post.Title), h.Href(url)),
|
2024-01-22 15:22:16 +00:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func StoryFull(id string) h.Renderable {
|
2024-01-22 15:22:16 +00:00
|
|
|
post, err := Get(id)
|
|
|
|
|
if err != nil {
|
2024-09-13 15:47:18 +00:00
|
|
|
return h.Pf(err.Error())
|
2024-01-22 15:22:16 +00:00
|
|
|
}
|
|
|
|
|
return StoryCard(post)
|
|
|
|
|
}
|