status-desktop/ui/imports/utils/ProfileUtils.qml

96 lines
4.0 KiB
QML

pragma Singleton
import QtQml 2.14
import StatusQ.Core.Theme 0.1
QtObject {
readonly property int defaultDelegateHeight: 76
function displayName(nickName, ensName, displayName, aliasName)
{
return nickName || ensName || displayName || aliasName
}
// social links utils
function addSocialLinkPrefix(link, type) {
const prefix = Constants.socialLinkPrefixesByType[type]
if (link.startsWith(prefix))
return link
return prefix + link
}
function stripSocialLinkPrefix(link, type) {
return link.replace(Constants.socialLinkPrefixesByType[type], "")
}
function linkTypeToText(linkType) {
if (linkType === Constants.socialLinkType.twitter) return qsTr("X (Twitter)")
if (linkType === Constants.socialLinkType.personalSite) return qsTr("Personal site")
if (linkType === Constants.socialLinkType.github) return qsTr("Github")
if (linkType === Constants.socialLinkType.youtube) return qsTr("YouTube channel")
if (linkType === Constants.socialLinkType.discord) return qsTr("Discord handle")
if (linkType === Constants.socialLinkType.telegram) return qsTr("Telegram handle")
return "" // "custom" link type allows for user defined text
}
function linkTypeToShortText(linkType) {
if (linkType === Constants.socialLinkType.twitter) return qsTr("X (Twitter)")
if (linkType === Constants.socialLinkType.personalSite) return qsTr("Personal")
if (linkType === Constants.socialLinkType.github) return qsTr("Github")
if (linkType === Constants.socialLinkType.youtube) return qsTr("YouTube")
if (linkType === Constants.socialLinkType.discord) return qsTr("Discord")
if (linkType === Constants.socialLinkType.telegram) return qsTr("Telegram")
return "" // "custom" link type allows for user defined text
}
function linkTypeColor(linkType) {
if (linkType === Constants.socialLinkType.twitter) return "#000000"
if (linkType === Constants.socialLinkType.github) return "#000000"
if (linkType === Constants.socialLinkType.youtube) return "#FF3000"
if (linkType === Constants.socialLinkType.discord) return "#7289DA"
if (linkType === Constants.socialLinkType.telegram) return "#0088CC"
return Theme.palette.primaryColor1
}
function linkTypeBgColor(linkType) {
return Theme.palette.getColor(linkTypeColor(linkType), 0.1)
}
function linkTypeToDescription(linkType) {
if (linkType === Constants.socialLinkType.twitter) return qsTr("Twitter username")
if (linkType === Constants.socialLinkType.personalSite) return qsTr("Personal site")
if (linkType === Constants.socialLinkType.github) return qsTr("Github")
if (linkType === Constants.socialLinkType.youtube) return qsTr("YouTube channel")
if (linkType === Constants.socialLinkType.discord) return qsTr("Discord handle")
if (linkType === Constants.socialLinkType.telegram) return qsTr("Telegram handle")
return ""
}
function linkTextToType(text) {
if (text === "__twitter") return Constants.socialLinkType.twitter
if (text === "__personal_site") return Constants.socialLinkType.personalSite
if (text === "__github") return Constants.socialLinkType.github
if (text === "__youtube") return Constants.socialLinkType.youtube
if (text === "__discord") return Constants.socialLinkType.discord
if (text === "__telegram") return Constants.socialLinkType.telegram
return Constants.socialLinkType.custom
}
// showcase
function visibilityIcon(showcaseVisibility) {
switch (showcaseVisibility) {
case Constants.ShowcaseVisibility.IdVerifiedContacts:
return "checkmark-circle"
case Constants.ShowcaseVisibility.Contacts:
return "profile"
case Constants.ShowcaseVisibility.Everyone:
return "language"
case Constants.ShowcaseVisibility.NoOne:
default:
return "hide"
}
}
}