diff --git a/.vscode/settings.json b/.vscode/settings.json index c92756b6..ee3598bc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "editor.detectIndentation": false, "editor.insertSpaces": false, + "files.trimTrailingWhitespace": false, "tsimporter.emitSemicolon": false, "tsimporter.doubleQuotes": true, "files.exclude": { @@ -17,4 +18,4 @@ "components/": true, "**/*.svg": true } -} \ No newline at end of file +} diff --git a/mixins/TabLike.pixy b/mixins/TabLike.pixy new file mode 100644 index 00000000..31d19049 --- /dev/null +++ b/mixins/TabLike.pixy @@ -0,0 +1,14 @@ +component TabLike(label string, icon string, track *arn.SoundTrack, user *arn.User) + if user == nil + a.tab.action(aria-label=label) + Icon(icon) + span.tab-text= label + else + if track.LikedBy(user.ID) + a.tab.action(data-api="/api" + track.Link(), data-action="unlike", data-trigger="click", aria-label=label) + Icon(icon) + span.tab-text= label + else + a.tab.action(data-api="/api" + track.Link(), data-action="like", data-trigger="click", aria-label=label) + Icon(icon) + span.tab-text= label diff --git a/pages/soundtrack/edit.go b/pages/soundtrack/edit.go index f1ced793..2aa230e1 100644 --- a/pages/soundtrack/edit.go +++ b/pages/soundtrack/edit.go @@ -34,5 +34,5 @@ func Edit(ctx *aero.Context) string { ctx.Data.(*arn.OpenGraph).Tags["og:image"] = track.MainAnime().Image.Large } - return ctx.HTML(components.SoundTrackTabs(track) + editform.Render(track, "Edit soundtrack", user)) + return ctx.HTML(components.SoundTrackTabs(track, user) + editform.Render(track, "Edit soundtrack", user)) } diff --git a/pages/soundtrack/soundtrack.go b/pages/soundtrack/soundtrack.go index cba2f1d8..da3f8ca0 100644 --- a/pages/soundtrack/soundtrack.go +++ b/pages/soundtrack/soundtrack.go @@ -6,12 +6,14 @@ import ( "github.com/aerogo/aero" "github.com/animenotifier/arn" "github.com/animenotifier/notify.moe/components" + "github.com/animenotifier/notify.moe/utils" ) // Get track. func Get(ctx *aero.Context) string { id := ctx.Get("id") track, err := arn.GetSoundTrack(id) + user := utils.GetUser(ctx) if err != nil { return ctx.Error(http.StatusNotFound, "Track not found", err) @@ -39,5 +41,5 @@ func Get(ctx *aero.Context) string { ctx.Data = openGraph - return ctx.HTML(components.Track(track)) + return ctx.HTML(components.Track(track, user)) } diff --git a/pages/soundtrack/soundtrack.pixy b/pages/soundtrack/soundtrack.pixy index 3beb4d91..4e5ef006 100644 --- a/pages/soundtrack/soundtrack.pixy +++ b/pages/soundtrack/soundtrack.pixy @@ -1,6 +1,6 @@ -component Track(track *arn.SoundTrack) - SoundTrackTabs(track) - +component Track(track *arn.SoundTrack, user *arn.User) + SoundTrackTabs(track, user) + .sound-track-full-page if track.Title == "" h1.mountable untitled @@ -13,7 +13,7 @@ component Track(track *arn.SoundTrack) h3.widget-title= media.Service .sound-track-media ExternalMedia(media) - + .widget.mountable h3.widget-title Anime @@ -21,7 +21,7 @@ component Track(track *arn.SoundTrack) each anime in track.Anime() a.sound-track-anime-list-item.ajax(href=anime.Link(), title=anime.Title.Canonical) img.sound-track-anime-list-item-image.lazy(data-src=anime.Image.Tiny, alt=anime.Title.Canonical) - + if len(track.Beatmaps()) > 0 .widget.mountable h3.widget-title Beatmaps @@ -29,13 +29,11 @@ component Track(track *arn.SoundTrack) for index, beatmap := range track.Beatmaps() li a.beatmap(href="https://osu.ppy.sh/s/" + beatmap, target="_blank")= "Beatmap #" + strconv.Itoa(index + 1) - .widget.mountable h3.widget-title Tags .tags each tag in track.Tags .tag= tag - .footer.text-center.mountable if track.EditedBy != "" span Edited @@ -47,10 +45,11 @@ component Track(track *arn.SoundTrack) span.utc-date(data-date=track.Created) span by span= track.Creator().Nick - + span . -component SoundTrackTabs(track *arn.SoundTrack) +component SoundTrackTabs(track *arn.SoundTrack, user *arn.User) .tabs Tab("Soundtrack", "music", track.Link()) - Tab("Edit", "pencil", track.Link() + "/edit") \ No newline at end of file + Tab("Edit", "pencil", track.Link() + "/edit") + TabLike(strconv.Itoa(len(track.Likes)), "heart", track, user)