Add initial implementation of home timeline

Currently just a copy of timeline.nim that takes names from the
following cookie rather than the url.
This commit is contained in:
FIGBERT 2021-03-13 12:52:27 -08:00
parent 5ce94e37dd
commit 3ad92e13eb
No known key found for this signature in database
GPG Key ID: 67F1598D607A844B
1 changed files with 32 additions and 3 deletions

View File

@ -1,11 +1,40 @@
import jester
import asyncdispatch, strutils, options, router_utils
import asyncdispatch, strutils, options, router_utils, timeline
import ".."/[prefs, types, utils]
import ../views/[general, home]
import ../views/[general, home, search]
export home
proc createHomeRouter*(cfg: Config) =
router home:
get "/":
resp renderMain(renderHome(), request, cfg, themePrefs())
let
prefs = cookiePrefs()
after = getCursor()
names = getNames(prefs.following)
var query = request.getQuery("", prefs.following)
if names.len != 1:
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 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))