From e14f4e29c6f22bd14f60a9eb71e9ddf6174ab913 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Wed, 20 Dec 2023 20:46:08 +0600 Subject: [PATCH] :sparkles: Added Buy me a coffee processor support --- internal/domain/config.go | 1 + web/static/styles.css | 6 + web/template/template.qtpl | 29 ++ web/template/template.qtpl.go | 692 +++++++++++++++++++--------------- 4 files changed, 417 insertions(+), 311 deletions(-) diff --git a/internal/domain/config.go b/internal/domain/config.go index 6222d83..926d13c 100644 --- a/internal/domain/config.go +++ b/internal/domain/config.go @@ -17,5 +17,6 @@ type ( YooMoney string `env:"YOOMONEY"` Kofi string `env:"KOFI"` DonationAlerts string `env:"DONATION_ALERTS"` + BuyMeACoffee string `env:"BUY_ME_A_COFFEE"` } ) diff --git a/web/static/styles.css b/web/static/styles.css index 1afc7ea..8cb09a3 100644 --- a/web/static/styles.css +++ b/web/static/styles.css @@ -111,6 +111,12 @@ button[href*='donationalerts.com'] { --color: hsl(0, 0%, 95%); } +.button[href*='buymeacoffee.com'], +button[href*='buymeacoffee.com'] { + --background: hsl(52, 100%, 50%); + --color: hsl(243, 49%, 9%); +} + .with-icon .icon, .button .icon, .button svg, diff --git a/web/template/template.qtpl b/web/template/template.qtpl index ca40f0b..22124a8 100644 --- a/web/template/template.qtpl +++ b/web/template/template.qtpl @@ -171,6 +171,21 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui {% endif %} + {% if ctx.processors.BuyMeACoffee != "" %} +
  • + + + {%= icon("bmc") %} + Buy me a coffee + +
  • + {% endif %} {% endfunc %} @@ -293,6 +308,20 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui + {% case "bmc" %} + {% endswitch %} {% endfunc %} {% endstripspace %} diff --git a/web/template/template.qtpl.go b/web/template/template.qtpl.go index 45f9bb8..ba5d7a8 100644 --- a/web/template/template.qtpl.go +++ b/web/template/template.qtpl.go @@ -484,412 +484,482 @@ func (ctx Context) streambody(qw422016 *qt422016.Writer) { qw422016.N().S(`DonationAlerts`) //line web/template/template.qtpl:173 } -//line web/template/template.qtpl:173 - qw422016.N().S(``) -//line web/template/template.qtpl:175 -} - -//line web/template/template.qtpl:175 -func (ctx Context) writebody(qq422016 qtio422016.Writer) { -//line web/template/template.qtpl:175 - qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:175 - ctx.streambody(qw422016) -//line web/template/template.qtpl:175 - qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:175 -} - -//line web/template/template.qtpl:175 -func (ctx Context) body() string { -//line web/template/template.qtpl:175 - qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:175 - ctx.writebody(qb422016) -//line web/template/template.qtpl:175 - qs422016 := string(qb422016.B) -//line web/template/template.qtpl:175 - qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:175 - return qs422016 -//line web/template/template.qtpl:175 -} - +//line web/template/template.qtpl:174 + if ctx.processors.BuyMeACoffee != "" { +//line web/template/template.qtpl:174 + qw422016.N().S(`
  • `) +//line web/template/template.qtpl:184 + streamicon(qw422016, "bmc") +//line web/template/template.qtpl:184 + qw422016.N().S(`Buy me a coffee
  • `) +//line web/template/template.qtpl:188 } -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:188 + qw422016.N().S(``) +//line web/template/template.qtpl:190 } -//line web/template/template.qtpl:184 -func (ctx Context) writedir(qq422016 qtio422016.Writer) { -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 +func (ctx Context) writebody(qq422016 qtio422016.Writer) { +//line web/template/template.qtpl:190 qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:184 - ctx.streamdir(qw422016) -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 + ctx.streambody(qw422016) +//line web/template/template.qtpl:190 qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 } -//line web/template/template.qtpl:184 -func (ctx Context) dir() string { -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 +func (ctx Context) body() string { +//line web/template/template.qtpl:190 qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:184 - ctx.writedir(qb422016) -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 + ctx.writebody(qb422016) +//line web/template/template.qtpl:190 qs422016 := string(qb422016.B) -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 return qs422016 -//line web/template/template.qtpl:184 +//line web/template/template.qtpl:190 } -//line web/template/template.qtpl:186 +//line web/template/template.qtpl:192 +func (ctx Context) streamdir(qw422016 *qt422016.Writer) { +//line web/template/template.qtpl:193 + switch ctx.language { +//line web/template/template.qtpl:194 + default: +//line web/template/template.qtpl:194 + qw422016.N().S(`ltr`) +//line web/template/template.qtpl:196 + case language.Arabic, language.Persian, language.Hebrew, language.Urdu: +//line web/template/template.qtpl:196 + qw422016.N().S(`rtl`) +//line web/template/template.qtpl:198 + } +//line web/template/template.qtpl:199 +} + +//line web/template/template.qtpl:199 +func (ctx Context) writedir(qq422016 qtio422016.Writer) { +//line web/template/template.qtpl:199 + qw422016 := qt422016.AcquireWriter(qq422016) +//line web/template/template.qtpl:199 + ctx.streamdir(qw422016) +//line web/template/template.qtpl:199 + qt422016.ReleaseWriter(qw422016) +//line web/template/template.qtpl:199 +} + +//line web/template/template.qtpl:199 +func (ctx Context) dir() string { +//line web/template/template.qtpl:199 + qb422016 := qt422016.AcquireByteBuffer() +//line web/template/template.qtpl:199 + ctx.writedir(qb422016) +//line web/template/template.qtpl:199 + qs422016 := string(qb422016.B) +//line web/template/template.qtpl:199 + qt422016.ReleaseByteBuffer(qb422016) +//line web/template/template.qtpl:199 + return qs422016 +//line web/template/template.qtpl:199 +} + +//line web/template/template.qtpl:201 func (ctx Context) streamlang(qw422016 *qt422016.Writer) { -//line web/template/template.qtpl:187 +//line web/template/template.qtpl:202 base, _ := ctx.language.Base() -//line web/template/template.qtpl:188 +//line web/template/template.qtpl:203 qw422016.E().S(base.String()) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 } -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 func (ctx Context) writelang(qq422016 qtio422016.Writer) { -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 ctx.streamlang(qw422016) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 } -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 func (ctx Context) lang() string { -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 ctx.writelang(qb422016) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 qs422016 := string(qb422016.B) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 return qs422016 -//line web/template/template.qtpl:189 +//line web/template/template.qtpl:204 } -//line web/template/template.qtpl:191 +//line web/template/template.qtpl:206 func (ctx Context) streamt(qw422016 *qt422016.Writer, format message.Reference, v ...any) { -//line web/template/template.qtpl:192 +//line web/template/template.qtpl:207 qw422016.E().S(ctx.printer.Sprintf(format, v...)) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 } -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 func (ctx Context) writet(qq422016 qtio422016.Writer, format message.Reference, v ...any) { -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 ctx.streamt(qw422016, format, v...) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 } -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 func (ctx Context) t(format message.Reference, v ...any) string { -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 ctx.writet(qb422016, format, v...) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 qs422016 := string(qb422016.B) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 return qs422016 -//line web/template/template.qtpl:193 +//line web/template/template.qtpl:208 } -//line web/template/template.qtpl:195 +//line web/template/template.qtpl:210 func (ctx Context) streamtitle(qw422016 *qt422016.Writer) { -//line web/template/template.qtpl:195 +//line web/template/template.qtpl:210 qw422016.N().S(`NotDotPay`) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 } -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 func (ctx Context) writetitle(qq422016 qtio422016.Writer) { -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 ctx.streamtitle(qw422016) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 } -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 func (ctx Context) title() string { -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 ctx.writetitle(qb422016) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 qs422016 := string(qb422016.B) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 return qs422016 -//line web/template/template.qtpl:197 +//line web/template/template.qtpl:212 } -//line web/template/template.qtpl:199 +//line web/template/template.qtpl:214 func StreamTemplate(qw422016 *qt422016.Writer, p Page) { -//line web/template/template.qtpl:199 +//line web/template/template.qtpl:214 qw422016.N().S(`NotDotPay`) -//line web/template/template.qtpl:209 - p.streamhead(qw422016) -//line web/template/template.qtpl:209 - qw422016.N().S(``) -//line web/template/template.qtpl:213 - p.streambody(qw422016) -//line web/template/template.qtpl:213 - qw422016.N().S(``) -//line web/template/template.qtpl:221 -} - -//line web/template/template.qtpl:221 -func WriteTemplate(qq422016 qtio422016.Writer, p Page) { -//line web/template/template.qtpl:221 - qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:221 - StreamTemplate(qw422016, p) -//line web/template/template.qtpl:221 - qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:221 -} - -//line web/template/template.qtpl:221 -func Template(p Page) string { -//line web/template/template.qtpl:221 - qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:221 - WriteTemplate(qb422016, p) -//line web/template/template.qtpl:221 - qs422016 := string(qb422016.B) -//line web/template/template.qtpl:221 - qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:221 - return qs422016 -//line web/template/template.qtpl:221 -} - -//line web/template/template.qtpl:223 -func streamicon(qw422016 *qt422016.Writer, id string) { //line web/template/template.qtpl:224 - switch id { -//line web/template/template.qtpl:225 - case "liberapay": -//line web/template/template.qtpl:225 - qw422016.N().S(``) //line web/template/template.qtpl:228 - qw422016.N().S(` `) + p.streambody(qw422016) //line web/template/template.qtpl:228 - qw422016.N().S(`viewBox="0 0 80 80"`) -//line web/template/template.qtpl:229 - qw422016.N().S(` `) -//line web/template/template.qtpl:229 - qw422016.N().S(`aria-hidden="true"`) -//line web/template/template.qtpl:230 - qw422016.N().S(` `) -//line web/template/template.qtpl:230 - qw422016.N().S(`focusable="false"`) -//line web/template/template.qtpl:231 - qw422016.N().S(` `) -//line web/template/template.qtpl:231 - qw422016.N().S(`xmlns="http://www.w3.org/2000/svg">`) + qw422016.N().S(``) //line web/template/template.qtpl:236 - case "paypal": -//line web/template/template.qtpl:236 - qw422016.N().S(``) -//line web/template/template.qtpl:245 - qw422016.N().S(``) -//line web/template/template.qtpl:247 - qw422016.N().S(``) -//line web/template/template.qtpl:249 - qw422016.N().S(``) -//line web/template/template.qtpl:252 - case "yoomoney": -//line web/template/template.qtpl:252 - qw422016.N().S(``) -//line web/template/template.qtpl:264 - case "kofi": -//line web/template/template.qtpl:264 - qw422016.N().S(``) -//line web/template/template.qtpl:285 - case "da": -//line web/template/template.qtpl:285 - qw422016.N().S(``) -//line web/template/template.qtpl:296 - } -//line web/template/template.qtpl:297 } -//line web/template/template.qtpl:297 -func writeicon(qq422016 qtio422016.Writer, id string) { -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 +func WriteTemplate(qq422016 qtio422016.Writer, p Page) { +//line web/template/template.qtpl:236 qw422016 := qt422016.AcquireWriter(qq422016) -//line web/template/template.qtpl:297 - streamicon(qw422016, id) -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 + StreamTemplate(qw422016, p) +//line web/template/template.qtpl:236 qt422016.ReleaseWriter(qw422016) -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 } -//line web/template/template.qtpl:297 -func icon(id string) string { -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 +func Template(p Page) string { +//line web/template/template.qtpl:236 qb422016 := qt422016.AcquireByteBuffer() -//line web/template/template.qtpl:297 - writeicon(qb422016, id) -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 + WriteTemplate(qb422016, p) +//line web/template/template.qtpl:236 qs422016 := string(qb422016.B) -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 qt422016.ReleaseByteBuffer(qb422016) -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 return qs422016 -//line web/template/template.qtpl:297 +//line web/template/template.qtpl:236 +} + +//line web/template/template.qtpl:238 +func streamicon(qw422016 *qt422016.Writer, id string) { +//line web/template/template.qtpl:239 + switch id { +//line web/template/template.qtpl:240 + case "liberapay": +//line web/template/template.qtpl:240 + qw422016.N().S(``) +//line web/template/template.qtpl:251 + case "paypal": +//line web/template/template.qtpl:251 + qw422016.N().S(``) +//line web/template/template.qtpl:260 + qw422016.N().S(``) +//line web/template/template.qtpl:262 + qw422016.N().S(``) +//line web/template/template.qtpl:264 + qw422016.N().S(``) +//line web/template/template.qtpl:267 + case "yoomoney": +//line web/template/template.qtpl:267 + qw422016.N().S(``) +//line web/template/template.qtpl:279 + case "kofi": +//line web/template/template.qtpl:279 + qw422016.N().S(``) +//line web/template/template.qtpl:300 + case "da": +//line web/template/template.qtpl:300 + qw422016.N().S(``) +//line web/template/template.qtpl:311 + case "bmc": +//line web/template/template.qtpl:311 + qw422016.N().S(``) +//line web/template/template.qtpl:325 + } +//line web/template/template.qtpl:326 +} + +//line web/template/template.qtpl:326 +func writeicon(qq422016 qtio422016.Writer, id string) { +//line web/template/template.qtpl:326 + qw422016 := qt422016.AcquireWriter(qq422016) +//line web/template/template.qtpl:326 + streamicon(qw422016, id) +//line web/template/template.qtpl:326 + qt422016.ReleaseWriter(qw422016) +//line web/template/template.qtpl:326 +} + +//line web/template/template.qtpl:326 +func icon(id string) string { +//line web/template/template.qtpl:326 + qb422016 := qt422016.AcquireByteBuffer() +//line web/template/template.qtpl:326 + writeicon(qb422016, id) +//line web/template/template.qtpl:326 + qs422016 := string(qb422016.B) +//line web/template/template.qtpl:326 + qt422016.ReleaseByteBuffer(qb422016) +//line web/template/template.qtpl:326 + return qs422016 +//line web/template/template.qtpl:326 }