From 45d88da3d9a37061de60d9eeb8e8c5713f41b370 Mon Sep 17 00:00:00 2001 From: Zed Date: Tue, 13 Aug 2019 21:25:29 +0200 Subject: [PATCH] Add more preferences --- public/style.css | 2 +- src/prefs.nim | 13 +++++++++++++ src/types.nim | 21 ++++++++------------- src/views/profile.nim | 8 +++++--- src/views/tweet.nim | 3 ++- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/public/style.css b/public/style.css index 4b916ef..db44f47 100644 --- a/public/style.css +++ b/public/style.css @@ -386,6 +386,7 @@ video, .video-container img { padding: 0 2em; line-height: 2em; } + .show-more a:hover { background-color: #282828; } @@ -441,7 +442,6 @@ video, .video-container img { text-align: left; vertical-align: top; max-width: 32%; - position: sticky; top: 50px; } diff --git a/src/prefs.nim b/src/prefs.nim index 7e2f04f..e46adb6 100644 --- a/src/prefs.nim +++ b/src/prefs.nim @@ -32,6 +32,19 @@ const prefList*: Table[string, seq[Pref]] = { Pref(kind: checkbox, name: "autoplayGifs", label: "Autoplay gifs", defaultState: true), + ], + + "Display": @[ + Pref(kind: checkbox, name: "hideTweetStats", + label: "Hide tweet stats (replies, retweets, likes", + defaultState: false), + + Pref(kind: checkbox, name: "hideBanner", label: "Hide profile banner", + defaultState: false), + + Pref(kind: checkbox, name: "stickyProfile", + label: "Make profile sidebar stick to top", + defaultState: true) ] }.toTable diff --git a/src/types.nim b/src/types.nim index aa20b59..8787fc0 100644 --- a/src/types.nim +++ b/src/types.nim @@ -22,10 +22,8 @@ db("cache.db", "", "", ""): tweets*: string likes*: string media*: string - verified* {. - dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool - protected* {. - dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + verified* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + protected* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool joinDate* {. dbType: "INTEGER" parseIt: it.i.fromUnix() @@ -49,17 +47,14 @@ db("cache.db", "", "", ""): parseIt: parseEnum[VideoType](it.s), formatIt: $it, .}: VideoType - available* {. - dbType: "STRING", - parseIt: parseBool(it.s) - formatIt: $it - .}: bool + available* {.dbType: "STRING", parseIt: parseBool(it.s) formatIt: $it.}: bool Prefs* = object - videoPlayback* {. - dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool - autoplayGifs* {. - dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + videoPlayback* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + autoplayGifs* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + hideTweetStats* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + hideBanner* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool + stickyProfile* {.dbType: "STRING", parseIt: parseBool(it.s), formatIt: $it.}: bool type QueryKind* = enum diff --git a/src/views/profile.nim b/src/views/profile.nim index 45f700a..c3c9358 100644 --- a/src/views/profile.nim +++ b/src/views/profile.nim @@ -70,10 +70,12 @@ proc renderBanner(profile: Profile): VNode = proc renderProfile*(profile: Profile; timeline: Timeline; photoRail: seq[GalleryPhoto]; prefs: Prefs): VNode = buildHtml(tdiv(class="profile-tabs")): - tdiv(class="profile-banner"): - renderBanner(profile) + if not prefs.hideBanner: + tdiv(class="profile-banner"): + renderBanner(profile) - tdiv(class="profile-tab"): + let sticky = if prefs.stickyProfile: "sticky" else: "unset" + tdiv(class="profile-tab", style={position: sticky}): renderProfileCard(profile) if photoRail.len > 0: renderPhotoRail(profile, photoRail) diff --git a/src/views/tweet.nim b/src/views/tweet.nim index 2224763..1ae2be4 100644 --- a/src/views/tweet.nim +++ b/src/views/tweet.nim @@ -210,7 +210,8 @@ proc renderTweet*(tweet: Tweet; prefs: Prefs; class=""; elif tweet.poll.isSome: renderPoll(tweet.poll.get()) - renderStats(tweet.stats) + if not prefs.hideTweetStats: + renderStats(tweet.stats) if tweet.hasThread and "timeline" in class: a(class="show-thread", href=getLink(tweet)):