Add functional timeline to home page

This commit is contained in:
FIGBERT 2021-03-13 23:19:58 -08:00
parent 3ad92e13eb
commit 3e2f08f202
No known key found for this signature in database
GPG Key ID: 67F1598D607A844B
2 changed files with 26 additions and 24 deletions

View File

@ -5,6 +5,13 @@ import ../views/[general, home, search]
export home
proc showHome*(request: Request; query: Query; cfg: Config; prefs: Prefs;
after: string): Future[string] {.async.} =
let
timeline = await getSearch[Tweet](query, after)
html = renderHome(timeline, prefs, getPath())
return renderMain(html, request, cfg, prefs, "Multi")
proc createHomeRouter*(cfg: Config) =
router home:
get "/":
@ -14,27 +21,14 @@ proc createHomeRouter*(cfg: Config) =
names = getNames(prefs.following)
var query = request.getQuery("", prefs.following)
if names.len != 1:
query.fromUser = names
query.fromUser = names
if @"scroll".len > 0:
if query.fromUser.len != 1:
var timeline = await getSearch[Tweet](query, after)
if timeline.content.len == 0: resp Http404
timeline.beginning = true
resp $renderTweetSearch(timeline, prefs, getPath())
else:
var (_, timeline, _) = await fetchSingleTimeline(after, query, skipRail=true)
if timeline.content.len == 0: resp Http404
timeline.beginning = true
resp $renderTimelineTweets(timeline, prefs, getPath())
var timeline = await getSearch[Tweet](query, after)
if timeline.content.len == 0: resp Http404
timeline.beginning = true
resp $renderHome(timeline, prefs, getPath())
var rss = "/$1/$2/rss" % [@"name", @"tab"]
if @"tab".len == 0:
rss = "/$1/rss" % @"name"
elif @"tab" == "search":
rss &= "?" & genQueryUrl(query)
if names.len == 0:
resp renderMain(renderSearch(), request, cfg, themePrefs())
respTimeline(await showTimeline(request, query, cfg, prefs, rss, after))
resp (await showHome(request, query, cfg, prefs, after))

View File

@ -1,7 +1,15 @@
import karax/[karaxdsl, vdom]
import karax/[karaxdsl, vdom], strutils
import search, timeline
import ../types
proc renderHome*(): VNode =
buildHtml(tdiv(class="overlay-panel")):
h2: text "Timeline"
p: text "Coming soon!"
proc renderHome*(results: Result[Tweet]; prefs: Prefs; path: string): VNode =
let query = results.query
buildHtml(tdiv(class="timeline-container")):
if query.fromUser.len > 0:
renderProfileTabs(query, query.fromUser.join(","))
if query.fromUser.len == 0 or query.kind == tweets:
tdiv(class="timeline-header"):
renderSearchPanel(query)
renderTimelineTweets(results, prefs, path)