Ver Fonte

Add more preferences

Zed há 7 anos atrás
pai
commit
45d88da3d9
5 ficheiros alterados com 29 adições e 18 exclusões
  1. 1 1
      public/style.css
  2. 13 0
      src/prefs.nim
  3. 8 13
      src/types.nim
  4. 5 3
      src/views/profile.nim
  5. 2 1
      src/views/tweet.nim

+ 1 - 1
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;
 }
 

+ 13 - 0
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
 

+ 8 - 13
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

+ 5 - 3
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)

+ 2 - 1
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)):