Add an icon-refresh button
This commit is contained in:
parent
5374830887
commit
402749adb4
@ -92,6 +92,10 @@
|
|||||||
ul li span {
|
ul li span {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
2
assets/main.min.js
vendored
2
assets/main.min.js
vendored
File diff suppressed because one or more lines are too long
52
icons.go
Normal file
52
icons.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"suah.dev/gostart/data"
|
||||||
|
)
|
||||||
|
|
||||||
|
func updateIcons() {
|
||||||
|
links, err := app.queries.GetAllLinks(app.ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("can't get links: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, link := range links {
|
||||||
|
fmt.Println(link.LogoUrl)
|
||||||
|
if link.LogoUrl == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
resp, err := http.Get(link.LogoUrl)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
err = resp.Body.Close()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
contentType := resp.Header.Get("Content-Type")
|
||||||
|
|
||||||
|
err = app.queries.AddIcon(app.ctx, data.AddIconParams{
|
||||||
|
OwnerID: link.OwnerID,
|
||||||
|
LinkID: link.ID,
|
||||||
|
ContentType: contentType,
|
||||||
|
Data: body,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Println("can't add icon: ", err)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
49
main.go
49
main.go
@ -7,7 +7,6 @@ import (
|
|||||||
"embed"
|
"embed"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -162,6 +161,14 @@ func main() {
|
|||||||
r.Use(IconCacher)
|
r.Use(IconCacher)
|
||||||
r.Get("/{linkID:[0-9]+}", iconGET)
|
r.Get("/{linkID:[0-9]+}", iconGET)
|
||||||
})
|
})
|
||||||
|
r.Route("/update-icons", func(r chi.Router) {
|
||||||
|
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
updateIcons()
|
||||||
|
w.Header().Add("Content-type", "application/json")
|
||||||
|
w.WriteHeader(200)
|
||||||
|
w.Write([]byte(`{"update": true}`))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
@ -182,45 +189,7 @@ func main() {
|
|||||||
go func() {
|
go func() {
|
||||||
if dbExists {
|
if dbExists {
|
||||||
for {
|
for {
|
||||||
links, err := app.queries.GetAllLinks(app.ctx)
|
updateIcons()
|
||||||
if err != nil {
|
|
||||||
log.Println("can't get links: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, link := range links {
|
|
||||||
fmt.Println(link.LogoUrl)
|
|
||||||
if link.LogoUrl == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
resp, err := http.Get(link.LogoUrl)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := io.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
err = resp.Body.Close()
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
contentType := resp.Header.Get("Content-Type")
|
|
||||||
|
|
||||||
err = app.queries.AddIcon(app.ctx, data.AddIconParams{
|
|
||||||
OwnerID: link.OwnerID,
|
|
||||||
LinkID: link.ID,
|
|
||||||
ContentType: contentType,
|
|
||||||
Data: body,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
log.Println("can't add icon: ", err)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
time.Sleep(24 * time.Hour)
|
time.Sleep(24 * time.Hour)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
26
src/Main.elm
26
src/Main.elm
@ -89,6 +89,8 @@ type Msg
|
|||||||
| ReloadWatches
|
| ReloadWatches
|
||||||
| SubmitLink
|
| SubmitLink
|
||||||
| SubmitWatch
|
| SubmitWatch
|
||||||
|
| FetchIcons
|
||||||
|
| LoadIcons (Result Http.Error ())
|
||||||
|
|
||||||
|
|
||||||
type Status
|
type Status
|
||||||
@ -199,6 +201,14 @@ addWatch model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fetchIcons : Cmd Msg
|
||||||
|
fetchIcons =
|
||||||
|
Http.get
|
||||||
|
{ url = "/update-icons"
|
||||||
|
, expect = Http.expectWhatever LoadIcons
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
deleteLink : Int -> Cmd Msg
|
deleteLink : Int -> Cmd Msg
|
||||||
deleteLink linkId =
|
deleteLink linkId =
|
||||||
Http.request
|
Http.request
|
||||||
@ -228,6 +238,15 @@ deleteWatch watchId =
|
|||||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||||
update msg model =
|
update msg model =
|
||||||
case msg of
|
case msg of
|
||||||
|
LoadIcons (Ok _) ->
|
||||||
|
( model, getLinks )
|
||||||
|
|
||||||
|
LoadIcons (Err _) ->
|
||||||
|
( { model | status = Errored "Server error reloading icons!" }, Cmd.none )
|
||||||
|
|
||||||
|
FetchIcons ->
|
||||||
|
( model, fetchIcons )
|
||||||
|
|
||||||
DeleteLink linkId ->
|
DeleteLink linkId ->
|
||||||
( model, deleteLink linkId )
|
( model, deleteLink linkId )
|
||||||
|
|
||||||
@ -359,6 +378,13 @@ view model =
|
|||||||
text ""
|
text ""
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
, footer []
|
||||||
|
[ details []
|
||||||
|
[ summary []
|
||||||
|
[ b [] [ text "Maintenence" ] ]
|
||||||
|
, button [ onClick FetchIcons ] [ text "Update Icons" ]
|
||||||
|
]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user