mirror of
https://git.maid.zone/stuff/soundcloak.git
synced 2026-01-03 17:39:38 +05:00
preferences, some fixes, dependency changes
This commit is contained in:
76
templates/preferences.templ
Normal file
76
templates/preferences.templ
Normal file
@@ -0,0 +1,76 @@
|
||||
package templates
|
||||
|
||||
import "github.com/maid-zone/soundcloak/lib/cfg"
|
||||
|
||||
templ checkbox(name string, checked bool) {
|
||||
if checked {
|
||||
<input name={ name } type="checkbox" autocomplete="off" checked/>
|
||||
} else {
|
||||
<input name={ name } type="checkbox" autocomplete="off"/>
|
||||
}
|
||||
}
|
||||
|
||||
type option struct {
|
||||
value string
|
||||
desc string
|
||||
disabled bool
|
||||
}
|
||||
|
||||
// i hate this
|
||||
templ sel(name string, options []option, selected string) {
|
||||
<select name={ name } autocomplete="off">
|
||||
for _, opt := range options {
|
||||
if opt.value == selected {
|
||||
<option value={ opt.value } selected>{ opt.desc }</option>
|
||||
} else {
|
||||
if opt.disabled {
|
||||
<option value={ opt.value } disabled>{ opt.desc }</option>
|
||||
} else {
|
||||
<option value={ opt.value }>{ opt.desc }</option>
|
||||
}
|
||||
}
|
||||
}
|
||||
</select>
|
||||
}
|
||||
|
||||
templ Preferences(prefs cfg.Preferences) {
|
||||
<h1>Preferences</h1>
|
||||
<form method="post">
|
||||
if cfg.ProxyImages {
|
||||
<label>
|
||||
Proxy images:
|
||||
@checkbox("ProxyImages", *prefs.ProxyImages)
|
||||
</label>
|
||||
<br/>
|
||||
}
|
||||
<label>
|
||||
Player:
|
||||
@sel("Player", []option{
|
||||
{"restream", "Restream Player", !cfg.Restream},
|
||||
{"hls", "HLS Player (more stable, requires JS)", false},
|
||||
{"none", "None", false},
|
||||
}, *prefs.Player)
|
||||
</label>
|
||||
<br/>
|
||||
if *prefs.Player == "hls" {
|
||||
<h1>Player-specific preferences</h1>
|
||||
if cfg.ProxyStreams {
|
||||
<label>
|
||||
Proxy song streams:
|
||||
@checkbox("ProxyStreams", *prefs.ProxyStreams)
|
||||
</label>
|
||||
<br/>
|
||||
}
|
||||
<label>
|
||||
Fully preload track:
|
||||
@checkbox("FullyPreloadTrack", *prefs.FullyPreloadTrack)
|
||||
</label>
|
||||
<br/>
|
||||
}
|
||||
<input type="submit" value="Update" class="btn" style="margin-top: 1rem;"/>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<p>These preferences get saved in a cookie.</p>
|
||||
</form>
|
||||
}
|
||||
@@ -8,31 +8,39 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
templ TrackHeader(t sc.Track) {
|
||||
templ TrackHeader(prefs cfg.Preferences, t sc.Track) {
|
||||
<meta name="og:site_name" content={ t.Author.Username + " ~ soundcloak" }/>
|
||||
<meta name="og:title" content={ t.Title }/>
|
||||
<meta name="og:description" content={ t.FormatDescription() }/>
|
||||
<meta name="og:image" content={ t.Artwork }/>
|
||||
<link rel="icon" type="image/x-icon" href={ t.Artwork }/>
|
||||
if !cfg.Restream {
|
||||
if *prefs.Player == cfg.HLSPlayer {
|
||||
<script src="/js/hls.js/hls.light.js"></script>
|
||||
}
|
||||
}
|
||||
|
||||
templ TrackPlayer(track sc.Track, stream string, displayErr string) {
|
||||
templ TrackPlayer(prefs cfg.Preferences, track sc.Track, stream string, displayErr string) {
|
||||
if *prefs.Player == cfg.NonePlayer {
|
||||
{{ return }}
|
||||
}
|
||||
|
||||
if displayErr == "" {
|
||||
if cfg.Restream {
|
||||
if cfg.Restream && *prefs.Player == cfg.RestreamPlayer {
|
||||
<audio src={ "/_/restream/" + track.Author.Permalink + "/" + track.Permalink } controls></audio>
|
||||
} else if stream != "" {
|
||||
<audio id="track" src={ stream } controls></audio>
|
||||
if cfg.FullyPreloadTrack {
|
||||
if *prefs.FullyPreloadTrack {
|
||||
<script async src="/player_preload.js"></script>
|
||||
} else {
|
||||
<script async src="/player.js"></script>
|
||||
}
|
||||
<noscript>
|
||||
<br/>
|
||||
JavaScript is disabled! Audio playback may not work without it enabled.
|
||||
JavaScript is disabled! Audio playback may not work without it enabled.
|
||||
if cfg.Restream {
|
||||
<br>
|
||||
<a href="/_/preferences">You can enable Restream player in the preferences. It works without JavaScript.</a>
|
||||
}
|
||||
</noscript>
|
||||
}
|
||||
} else {
|
||||
@@ -60,12 +68,12 @@ templ TrackItem(track *sc.Track, showUsername bool) {
|
||||
}
|
||||
}
|
||||
|
||||
templ Track(t sc.Track, stream string, displayErr string) {
|
||||
templ Track(prefs cfg.Preferences, t sc.Track, stream string, displayErr string) {
|
||||
if t.Artwork != "" {
|
||||
<img src={ t.Artwork } width="300px"/>
|
||||
}
|
||||
<h1>{ t.Title }</h1>
|
||||
@TrackPlayer(t, stream, displayErr)
|
||||
@TrackPlayer(prefs, t, stream, displayErr)
|
||||
if t.Genre != "" {
|
||||
<p class="tag">{ t.Genre }</p>
|
||||
} else {
|
||||
@@ -96,7 +104,7 @@ templ Track(t sc.Track, stream string, displayErr string) {
|
||||
}
|
||||
}
|
||||
|
||||
templ TrackEmbed(t sc.Track, stream string, displayErr string) {
|
||||
templ TrackEmbed(prefs cfg.Preferences, t sc.Track, stream string, displayErr string) {
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -104,7 +112,7 @@ templ TrackEmbed(t sc.Track, stream string, displayErr string) {
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="stylesheet" href="/global.css"/>
|
||||
<title>soundcloak</title>
|
||||
if !cfg.Restream {
|
||||
if *prefs.Player == cfg.HLSPlayer {
|
||||
<script src="/js/hls.js/hls.light.js"></script>
|
||||
}
|
||||
</head>
|
||||
@@ -113,7 +121,7 @@ templ TrackEmbed(t sc.Track, stream string, displayErr string) {
|
||||
<img src={ t.Artwork } width="300px"/>
|
||||
}
|
||||
<h1>{ t.Title }</h1>
|
||||
@TrackPlayer(t, stream, displayErr)
|
||||
@TrackPlayer(prefs, t, stream, displayErr)
|
||||
@UserItem(&t.Author)
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user