mirror of
https://github.com/zedeus/nitter
synced 2026-09-05 22:59:31 +00:00
parent
35882ed88d
commit
7b27c2c629
17 changed files with 856 additions and 11 deletions
89
src/routes/community.nim
Normal file
89
src/routes/community.nim
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
import strformat
|
||||
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[types, redis_cache, api]
|
||||
import ../views/[general, timeline, community]
|
||||
|
||||
export community
|
||||
|
||||
template respCommunity*(cmty: Community; title: string; nav, vnode: typed) =
|
||||
if cmty.id.len == 0 or cmty.name.len == 0:
|
||||
resp Http404, showError(&"""Community "{@"id"}" not found""", cfg)
|
||||
|
||||
let html = renderCommunity(vnode, nav, cmty)
|
||||
resp renderMain(html, request, cfg, prefs, titleText=title, banner=cmty.banner)
|
||||
|
||||
proc createCommunityRouter*(cfg: Config) =
|
||||
router community:
|
||||
get "/i/communities/@id/?":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
tl = await getGraphCommunityTweets(cmty.id, "Relevance", getCursor())
|
||||
respCommunity(cmty, cmty.name,
|
||||
renderCommunityTabs(QueryKind.posts, cmty),
|
||||
renderTimelineTweets(tl, prefs, request.path))
|
||||
|
||||
get "/i/communities/@id/latest":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
tl = await getGraphCommunityTweets(cmty.id, "Recency", getCursor())
|
||||
respCommunity(cmty, cmty.name & " - Latest",
|
||||
renderCommunityTabs(QueryKind.replies, cmty),
|
||||
renderTimelineTweets(tl, prefs, request.path))
|
||||
|
||||
get "/i/communities/@id/media":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
tl = await getGraphCommunityMedia(cmty.id, getCursor())
|
||||
respCommunity(cmty, cmty.name & " - Media",
|
||||
renderCommunityTabs(QueryKind.media, cmty),
|
||||
renderTimelineTweets(tl, prefs, request.path))
|
||||
|
||||
get "/i/communities/@id/about":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
mods = await getCachedCommunityModerators(cmty.id)
|
||||
respCommunity(cmty, cmty.name & " - About",
|
||||
renderCommunityTabs(QueryKind.userList, cmty),
|
||||
renderCommunityAbout(cmty, mods))
|
||||
|
||||
get "/i/communities/@id/members":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
members = await getGraphCommunityMembers(cmty.id, getCursor())
|
||||
respCommunity(cmty, cmty.name & " - Members",
|
||||
renderMemberTabs(cmty, false),
|
||||
renderTimelineUsers(members, prefs, request.path))
|
||||
|
||||
get "/i/communities/@id/moderators":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
mods = await getCachedCommunityModerators(cmty.id)
|
||||
respCommunity(cmty, cmty.name & " - Moderators",
|
||||
renderMemberTabs(cmty, true),
|
||||
renderTimelineUsers(Result[User](content: mods), prefs, request.path))
|
||||
|
||||
get "/i/communities/@id/hashtag/@tag":
|
||||
cond '.' notin @"id"
|
||||
let
|
||||
prefs = requestPrefs()
|
||||
cmty = await getCachedCommunity(@"id")
|
||||
tl = await getGraphCommunityHashtags(cmty.id, @"tag", getCursor())
|
||||
respCommunity(cmty, cmty.name & " - #" & @"tag",
|
||||
renderHashtagHeader(cmty, @"tag"),
|
||||
renderTimelineTweets(tl, prefs, request.path))
|
||||
Loading…
Reference in a new issue