Add dynamic page title
This commit is contained in:
parent
fb3c8ab5c3
commit
38565e2e1f
4 changed files with 17 additions and 9 deletions
|
@ -7,9 +7,9 @@ Inspired by the [invidio.us](https://github.com/omarroth/invidious) project.
|
||||||
- All requests go through the backend, client never talks to Twitter
|
- All requests go through the backend, client never talks to Twitter
|
||||||
- Prevents Twitter from tracking your IP or JavaScript fingerprint
|
- Prevents Twitter from tracking your IP or JavaScript fingerprint
|
||||||
- Unofficial API (no rate limits or developer account required)
|
- Unofficial API (no rate limits or developer account required)
|
||||||
- Lightweight (for [@nim_lang](https://twitter.com/nim_lang), 32KB vs 552KB from twitter.com)
|
|
||||||
- AGPLv3 licensed, no proprietary instances permitted
|
- AGPLv3 licensed, no proprietary instances permitted
|
||||||
- Dark theme
|
- Dark theme
|
||||||
|
- Lightweight (for [@nim_lang](https://twitter.com/nim_lang), 36KB vs 580KB from twitter.com)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
|
@ -79,3 +79,9 @@ proc linkUser*(profile: Profile; class=""): string =
|
||||||
result &= span("✔", class="verified-icon", title="Verified account")
|
result &= span("✔", class="verified-icon", title="Verified account")
|
||||||
if not username and profile.protected:
|
if not username and profile.protected:
|
||||||
result &= span("🔒", class="protected-icon", title="Protected account")
|
result &= span("🔒", class="protected-icon", title="Protected account")
|
||||||
|
|
||||||
|
proc pageTitle*(profile: Profile): string =
|
||||||
|
&"{profile.fullname} (@{profile.username}) | Nitter"
|
||||||
|
|
||||||
|
proc pageTitle*(page: string): string =
|
||||||
|
&"{page} | Nitter"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import asyncdispatch, asyncfile, httpclient, strutils, uri, os
|
import asyncdispatch, asyncfile, httpclient, strutils, strformat, uri, os
|
||||||
import jester
|
import jester
|
||||||
|
|
||||||
import api, utils, types, cache
|
import api, utils, types, cache, formatters
|
||||||
import views/[user, general, conversation]
|
import views/[user, general, conversation]
|
||||||
|
|
||||||
const cacheDir {.strdefine.} = "/tmp/nitter"
|
const cacheDir {.strdefine.} = "/tmp/nitter"
|
||||||
|
@ -16,11 +16,12 @@ proc showTimeline(name: string; num=""): Future[string] {.async.} =
|
||||||
if profile.username.len == 0:
|
if profile.username.len == 0:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
return renderMain(renderProfile(profile, await tweetsFut, num.len == 0))
|
let profileHtml = renderProfile(profile, await tweetsFut, num.len == 0)
|
||||||
|
return renderMain(profileHtml, title=pageTitle(profile))
|
||||||
|
|
||||||
routes:
|
routes:
|
||||||
get "/":
|
get "/":
|
||||||
resp renderMain(renderSearchPanel())
|
resp renderMain(renderSearchPanel(), title=pageTitle("Search"))
|
||||||
|
|
||||||
post "/search":
|
post "/search":
|
||||||
if @"query".len == 0:
|
if @"query".len == 0:
|
||||||
|
@ -44,7 +45,8 @@ routes:
|
||||||
if conversation.tweet.id.len == 0:
|
if conversation.tweet.id.len == 0:
|
||||||
resp Http404, showError("Tweet not found")
|
resp Http404, showError("Tweet not found")
|
||||||
|
|
||||||
resp renderMain(renderConversation(conversation))
|
let title = pageTitle(conversation.tweet.profile)
|
||||||
|
resp renderMain(renderConversation(conversation), title=title)
|
||||||
|
|
||||||
get "/pic/@sig/@url":
|
get "/pic/@sig/@url":
|
||||||
cond "http" in @"url"
|
cond "http" in @"url"
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
#import user
|
#import user
|
||||||
#import xmltree
|
#import xmltree
|
||||||
#
|
#
|
||||||
#proc renderMain*(body: string): string =
|
#proc renderMain*(body: string; title="Nitter"): string =
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Nitter</title>
|
<title>${xmltree.escape(title)}</title>
|
||||||
<link rel="stylesheet" type="text/css" href="/style.css">
|
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -46,5 +46,5 @@
|
||||||
#end proc
|
#end proc
|
||||||
#
|
#
|
||||||
#proc showError*(error: string): string =
|
#proc showError*(error: string): string =
|
||||||
${renderMain(renderError(error))}
|
${renderMain(renderError(error), title="Error | Nitter")}
|
||||||
#end proc
|
#end proc
|
||||||
|
|
Loading…
Reference in a new issue