Polish email

Signed-off-by: AKP <tom@tdpain.net>
This commit is contained in:
akp 2022-04-05 09:35:16 +01:00
parent db7abef705
commit fcf501e78d
No known key found for this signature in database
GPG key ID: AA5726202C8879B7
4 changed files with 35 additions and 9 deletions

1
.gitignore vendored
View file

@ -25,3 +25,4 @@
run/
bin/
walrss/internal/state/version.go

View file

@ -1,6 +1,6 @@
.PHONY: prebuild fmt
build: templates
build: templates writeVersionNumber
mkdir -p bin
go build -o bin/walrss github.com/codemicro/walrss/walrss
@ -12,4 +12,7 @@ fmt:
go fmt github.com/codemicro/walrss/...
templates:
qtc -skipLineComments -ext qtpl.html -dir walrss/internal/http/views
qtc -skipLineComments -ext qtpl.html -dir walrss/internal/http/views
writeVersionNumber:
bash ./writeVersionNumber.sh

View file

@ -42,8 +42,17 @@ func ProcessFeeds(st *state.State, day db.SendDay, hour int) error {
return err
}
var interval time.Duration
if ur.Schedule.Day == db.SendDaily {
interval = time.Hour * 24
} else {
interval = time.Hour * 24 * 7
}
var processedFeeds []*processedFeed
startTime := time.Now().UTC()
for _, f := range userFeeds {
pf := new(processedFeed)
pf.Name = f.Name
@ -52,13 +61,12 @@ func ProcessFeeds(st *state.State, day db.SendDay, hour int) error {
if err != nil {
pf.Error = err
} else {
// TODO: this interval is wack
pf.Items = filterFeedContent(rawFeed, time.Date(2022, 04, 01, 0, 0, 0, 0, time.UTC))
pf.Items = filterFeedContent(rawFeed, time.Now().UTC().Add(-interval))
}
processedFeeds = append(processedFeeds, pf)
}
plainContent, htmlContent, err := generateEmail(st, processedFeeds)
plainContent, htmlContent, err := generateEmail(st, processedFeeds, interval, time.Now().UTC().Sub(startTime))
if err != nil {
return err
}
@ -130,7 +138,7 @@ func filterFeedContent(feed *gofeed.Feed, earliestPublishTime time.Time) []*feed
return o
}
func generateEmail(st *state.State, processedItems []*processedFeed) (plain, html []byte, err error) {
func generateEmail(st *state.State, processedItems []*processedFeed, interval, timeToGenerate time.Duration) (plain, html []byte, err error) {
sort.Slice(processedItems, func(i, j int) bool {
pi, pj := processedItems[i], processedItems[j]
@ -147,8 +155,15 @@ func generateEmail(st *state.State, processedItems []*processedFeed) (plain, htm
var sb strings.Builder
sb.WriteString("Here are the updates to the feeds you're subscribed to that have been published since we " +
"last sent you a digest.\n\n")
sb.WriteString("Here are the updates to the feeds you're subscribed to that have been published in the last ")
if interval.Hours() == 24 {
sb.WriteString("24 hours")
} else {
sb.WriteString(fmt.Sprintf("%.0f days", interval.Hours()/24))
}
sb.WriteString(".\n\n")
if len(processedItems) == 0 {
sb.WriteString("*There's nothing to show here right now.*\n\n")
@ -197,7 +212,7 @@ func generateEmail(st *state.State, processedItems []*processedFeed) (plain, htm
Product: hermes.Product{
Name: "Walrss",
Link: st.Config.Server.ExternalURL,
Copyright: ":)",
Copyright: fmt.Sprintf("This email was generated in %.2f seconds by Walrss v%s.\nhttps://github.com/codemicro/walrss", timeToGenerate.Seconds(), state.Version),
},
Theme: new(hermes.Flat),
}

7
writeVersionNumber.sh Normal file
View file

@ -0,0 +1,7 @@
#!/bin/bash
cat << EOF > walrss/internal/state/version.go
package state
const Version = "$(git rev-parse HEAD | head -c 7)"
EOF