Rearchitect profile, support pins, Profile -> User

This commit is contained in:
Zed
2022-01-23 07:04:50 +01:00
parent 79b98a8081
commit 51ae076ea0
23 changed files with 374 additions and 285 deletions

View File

@@ -2,7 +2,7 @@ import std/[algorithm, unicode, re, strutils]
import jsony
import utils, slices
import ../types/user as userType
from ../../types import Profile, Error
from ../../types import User, Error
let
unRegex = re"(^|[^A-z0-9-_./?])@([A-z0-9_]{1,15})"
@@ -11,13 +11,13 @@ let
htRegex = re"(^|[^\w-_./?])([#$])([\w_]+)"
htReplace = "$1<a href=\"/search?q=%23$3\">$2$3</a>"
proc expandProfileEntities(profile: var Profile; user: User) =
proc expandUserEntities(user: var User; raw: RawUser) =
let
orig = profile.bio.toRunes
ent = user.entities
orig = user.bio.toRunes
ent = raw.entities
if ent.url.urls.len > 0:
profile.website = ent.url.urls[0].expandedUrl
user.website = ent.url.urls[0].expandedUrl
var replacements = newSeq[ReplaceSlice]()
@@ -27,26 +27,26 @@ proc expandProfileEntities(profile: var Profile; user: User) =
replacements.dedupSlices
replacements.sort(cmp)
profile.bio = orig.replacedWith(replacements, 0 .. orig.len)
.replacef(unRegex, unReplace)
.replacef(htRegex, htReplace)
user.bio = orig.replacedWith(replacements, 0 .. orig.len)
.replacef(unRegex, unReplace)
.replacef(htRegex, htReplace)
proc getBanner(user: User): string =
proc getBanner(user: RawUser): string =
if user.profileBannerUrl.len > 0:
return user.profileBannerUrl & "/1500x500"
if user.profileLinkColor.len > 0:
return '#' & user.profileLinkColor
proc parseUser*(json: string; username=""): Profile =
proc parseUser*(json: string; username=""): User =
handleErrors:
case error.code
of suspended: return Profile(username: username, suspended: true)
of suspended: return User(username: username, suspended: true)
of userNotFound: return
else: echo "[error - parseUser]: ", error
let user = json.fromJson(User)
let user = json.fromJson(RawUser)
result = Profile(
result = User(
id: user.idStr,
username: user.screenName,
fullname: user.name,
@@ -64,4 +64,4 @@ proc parseUser*(json: string; username=""): Profile =
userPic: getImageUrl(user.profileImageUrlHttps).replace("_normal", "")
)
result.expandProfileEntities(user)
result.expandUserEntities(user)