Add list support
This commit is contained in:
34
src/routes/list.nim
Normal file
34
src/routes/list.nim
Normal file
@@ -0,0 +1,34 @@
|
||||
import strutils
|
||||
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[query, types, api, agents]
|
||||
import ../views/[general, timeline, list]
|
||||
|
||||
template respList*(list, timeline: typed) =
|
||||
if list.minId.len == 0:
|
||||
resp Http404, showError("List \"" & @"list" & "\" not found", cfg.title)
|
||||
let html = renderList(timeline, list.query, @"name", @"list")
|
||||
let rss = "/$1/lists/$2/rss" % [@"name", @"list"]
|
||||
resp renderMain(html, request, cfg.title, rss=rss)
|
||||
|
||||
proc createListRouter*(cfg: Config) =
|
||||
router list:
|
||||
get "/@name/lists/@list":
|
||||
cond '.' notin @"name"
|
||||
let
|
||||
list = await getListTimeline(@"name", @"list", getAgent(), @"after")
|
||||
tweets = renderTimelineTweets(list, cookiePrefs(), request.path)
|
||||
respList list, tweets
|
||||
|
||||
get "/@name/lists/@list/members":
|
||||
cond '.' notin @"name"
|
||||
let list =
|
||||
if @"after".len == 0:
|
||||
await getListMembers(@"name", @"list", getAgent())
|
||||
else:
|
||||
await getListMembersSearch(@"name", @"list", getAgent(), @"after")
|
||||
|
||||
let users = renderTimelineUsers(list, cookiePrefs(), request.path)
|
||||
respList list, users
|
||||
@@ -3,7 +3,7 @@ import asyncfile, uri, strutils, httpclient, os
|
||||
import jester, regex
|
||||
|
||||
import router_utils
|
||||
import ".."/[types, formatters, prefs]
|
||||
import ".."/[types, formatters]
|
||||
import ../views/general
|
||||
|
||||
export asyncfile, httpclient, os, strutils
|
||||
|
||||
@@ -3,7 +3,7 @@ import strutils, uri
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[prefs, types]
|
||||
import ".."/[types]
|
||||
import ../views/[general, preferences]
|
||||
|
||||
export preferences
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import ../utils
|
||||
export utils
|
||||
import ../utils, ../prefs
|
||||
export utils, prefs
|
||||
|
||||
template cookiePrefs*(): untyped {.dirty.} =
|
||||
getPrefs(request.cookies.getOrDefault("preferences"))
|
||||
|
||||
@@ -34,3 +34,8 @@ proc createRssRouter*(cfg: Config) =
|
||||
get "/@name/search/rss":
|
||||
cond '.' notin @"name"
|
||||
respRss(await showRss(@"name", initQuery(params(request), name=(@"name"))))
|
||||
|
||||
get "/@name/lists/@list/rss":
|
||||
cond '.' notin @"name"
|
||||
let list = await getListTimeline(@"name", @"list", getAgent(), "")
|
||||
respRss(renderListRss(list.content, @"name", @"list"))
|
||||
|
||||
@@ -3,7 +3,7 @@ import strutils, sequtils, uri
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[query, types, api, agents, prefs]
|
||||
import ".."/[query, types, api, agents]
|
||||
import ../views/[general, search]
|
||||
|
||||
export search
|
||||
@@ -18,7 +18,7 @@ proc createSearchRouter*(cfg: Config) =
|
||||
let query = initQuery(params(request))
|
||||
|
||||
case query.kind
|
||||
of users:
|
||||
of userSearch:
|
||||
if "," in @"text":
|
||||
redirect("/" & @"text")
|
||||
let users = await getSearch[Profile](query, @"after", getAgent())
|
||||
|
||||
@@ -3,7 +3,7 @@ import asyncdispatch, strutils, sequtils, uri
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[api, prefs, types, formatters, agents]
|
||||
import ".."/[api, types, formatters, agents]
|
||||
import ../views/[general, status]
|
||||
|
||||
export uri, sequtils
|
||||
|
||||
@@ -3,7 +3,7 @@ import asyncdispatch, strutils, sequtils, uri
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[api, prefs, types, cache, formatters, agents, query]
|
||||
import ".."/[api, types, cache, formatters, agents, query]
|
||||
import ../views/[general, profile, timeline, status, search]
|
||||
|
||||
export uri, sequtils
|
||||
|
||||
Reference in New Issue
Block a user