43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package components
|
|
|
|
import (
|
|
"dk/internal/helpers/markdown"
|
|
"dk/internal/models/news"
|
|
"dk/internal/models/users"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func GenerateTownNews() string {
|
|
title := `<div class="mb-1"><h4 class="mb-025">Latest News</h4>`
|
|
|
|
news, err := news.Recent(1)
|
|
if err == nil && len(news) > 0 {
|
|
item := news[0]
|
|
content := fmt.Sprintf(`<span class="light">%s</span></div>`, item.ReadableTime())
|
|
return title + content + fmt.Sprintf(`<div>%s</div>`, markdown.MarkdownToHTML(item.Content))
|
|
}
|
|
|
|
return title + "<div>No news!</div>"
|
|
}
|
|
|
|
func GenerateTownWhosOnline() string {
|
|
title := `<h4 class="mb-025">Who's Online</h4>`
|
|
|
|
onlineUsers, err := users.Online(10 * time.Minute)
|
|
if err == nil && len(onlineUsers) > 0 {
|
|
if len(onlineUsers) == 1 {
|
|
title += "<p>There is 1 user online in the last 10 minutes:</p>"
|
|
} else {
|
|
title += fmt.Sprintf("<p>There are %d users online in the last 10 minutes:</p>", len(onlineUsers))
|
|
}
|
|
|
|
for _, user := range onlineUsers {
|
|
title += fmt.Sprintf(`<div>%s</div>`, user.Username)
|
|
}
|
|
return title
|
|
}
|
|
|
|
return title + "<div>No one!</div>"
|
|
}
|