feat(settings/profile): integrate social links and bio endpoints

closes: #6796
This commit is contained in:
Patryk Osmaczko 2022-08-10 10:12:13 +02:00 committed by osmaczko
parent 268560934a
commit 61a55db156
6 changed files with 90 additions and 3 deletions

View File

@ -0,0 +1,25 @@
import json, sequtils, sugar
const SOCIAL_LINK_TWITTER_ID* = "__twitter"
const SOCIAL_LINK_PERSONAL_SITE_ID* = "__personal_site"
const SOCIAL_LINK_GITHUB_ID* = "__github"
const SOCIAL_LINK_YOUTUBE_ID* = "__youtube"
const SOCIAL_LINK_DISCORD_ID* = "__discord"
const SOCIAL_LINK_TELEGRAM_ID* = "__telegram"
type
SocialLink* = object
text*: string
url*: string
SocialLinks* = seq[SocialLink]
proc toSocialLinks*(jsonObj: JsonNode): SocialLinks =
result = map(jsonObj.getElems(),
node => SocialLink(text: node["text"].getStr(),
url: node["url"].getStr())
)
return
proc toJsonNode*(links: SocialLinks): JsonNode =
%*links

View File

@ -1,6 +1,7 @@
{.used.}
import json, strformat, strutils
import ../../../common/social_links
include ../../../common/json_utils
include ../../../common/utils
@ -41,6 +42,8 @@ type ContactsDto* = object
lastUpdated*: int64
lastUpdatedLocally*: int64
localNickname*: string
bio*: string
socialLinks*: SocialLinks
image*: Images
added*: bool
blocked*: bool
@ -121,6 +124,7 @@ proc toContactsDto*(jsonObj: JsonNode): ContactsDto =
discard jsonObj.getProp("lastUpdated", result.lastUpdated)
discard jsonObj.getProp("lastUpdatedLocally", result.lastUpdatedLocally)
discard jsonObj.getProp("localNickname", result.localNickname)
discard jsonObj.getProp("bio", result.bio)
result.trustStatus = TrustStatus.Unknown
var trustStatusInt: int
@ -135,6 +139,10 @@ proc toContactsDto*(jsonObj: JsonNode): ContactsDto =
if(jsonObj.getProp("images", imageObj)):
result.image = toImages(imageObj)
var socialLinksObj: JsonNode
if(jsonObj.getProp("socialLinks", socialLinksObj)):
result.socialLinks = toSocialLinks(socialLinksObj)
discard jsonObj.getProp("added", result.added)
discard jsonObj.getProp("blocked", result.blocked)
discard jsonObj.getProp("hasAddedUs", result.hasAddedUs)

View File

@ -299,7 +299,9 @@ QtObject:
thumbnail: singletonInstance.userProfile.getThumbnailImage(),
large: singletonInstance.userProfile.getLargeImage()
),
trustStatus: TrustStatus.Trusted
trustStatus: TrustStatus.Trusted,
bio: self.settingsService.getBio(),
socialLinks: self.settingsService.getSocialLinks()
)
## Returns contact details based on passed id (public key)

View File

@ -44,6 +44,7 @@ const KEY_GIF_FAVORITES* = "gifs/favorite-gifs"
const KEY_GIF_RECENTS* = "gifs/recent-gifs"
const KEY_GIF_API_KEY* = "gifs/api-key"
const KEY_DISPLAY_NAME* = "display-name"
const KEY_BIO* = "bio"
const KEY_TEST_NETWORKS_ENABLED* = "test-networks-enabled?"
# Notifications Settings Values
@ -93,6 +94,7 @@ type
eip1581Address*: string
installationId*: string
displayName*: string
bio*: string
preferredName*: string
ensUsernames*: seq[string]
keyUid*: string
@ -161,6 +163,7 @@ proc toSettingsDto*(jsonObj: JsonNode): SettingsDto =
discard jsonObj.getProp(KEY_INSTALLATION_ID, result.installationId)
discard jsonObj.getProp(KEY_PREFERRED_NAME, result.preferredName)
discard jsonObj.getProp(KEY_DISPLAY_NAME, result.displayName)
discard jsonObj.getProp(KEY_BIO, result.bio)
discard jsonObj.getProp(KEY_KEY_UID, result.keyUid)
discard jsonObj.getProp(KEY_LATEST_DERIVED_PATH, result.latestDerivedPath)
discard jsonObj.getProp(KEY_LINK_PREVIEW_REQUEST_ENABLED, result.linkPreviewRequestEnabled)

View File

@ -2,6 +2,7 @@ import NimQml, chronicles, json, strutils, sequtils, tables, sugar
import ../../common/[network_constants]
import ../../common/types as common_types
import ../../common/social_links
import ../../../app/core/eventemitter
import ../../../app/core/fleets/fleet_configuration
import ../../../app/core/signals/types
@ -826,3 +827,42 @@ QtObject:
except Exception as e:
let errDesription = e.msg
error "reading exemptions setting error: ", id = id, errDesription
proc getBio*(self: Service): string =
self.settings.bio
proc setBio*(self: Service, bio: string): bool =
result = false
try:
let response = status_settings.setBio(bio)
if(not response.error.isNil):
error "error setting bio", errDescription = response.error.message
self.settings.bio = bio
result = true
except Exception as e:
error "error setting bio", errDesription = e.msg
proc getSocialLinks*(self: Service): SocialLinks =
try:
let response = status_settings.getSocialLinks()
if(not response.error.isNil):
error "error getting social links", errDescription = response.error.message
result = toSocialLinks(response.result)
except Exception as e:
error "error getting social links", errDesription = e.msg
proc setSocialLinks*(self: Service, links: SocialLinks): bool =
result = false
try:
let response = status_settings.setSocialLinks(%*links)
if(not response.error.isNil):
error "error setting social links", errDescription = response.error.message
result = true
except Exception as e:
error "error setting social links", errDesription = e.msg

View File

@ -88,10 +88,19 @@ proc getExemptionGlobalMentions*(id: string): RpcResponse[JsonNode] {.raises: [E
proc getExemptionOtherMessages*(id: string): RpcResponse[JsonNode] {.raises: [Exception].} =
return core.callPrivateRPC("settings_notificationsGetExOtherMessages", %* [id])
proc setExemptions*(id: string, muteAllMessages: bool, personalMentions: string, globalMentions: string,
proc setExemptions*(id: string, muteAllMessages: bool, personalMentions: string, globalMentions: string,
otherMessages: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [id, muteAllMessages, personalMentions, globalMentions, otherMessages]
return core.callPrivateRPC("settings_notificationsSetExemptions", payload)
proc deleteExemptions*(id: string): RpcResponse[JsonNode] {.raises: [Exception].} =
return core.callPrivateRPC("settings_deleteExemptions", %* [id])
return core.callPrivateRPC("settings_deleteExemptions", %* [id])
proc setBio*(value: string): RpcResponse[JsonNode] {.raises: [Exception].} =
return core.callPrivateRPC("settings_setBio", %* [value])
proc setSocialLinks*(value: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
return core.callPrivateRPC("settings_setSocialLinks", %* [value])
proc getSocialLinks*(): RpcResponse[JsonNode] {.raises: [Exception].} =
return core.callPrivateRPC("settings_getSocialLinks")