233 lines
5.5 KiB
Go
233 lines
5.5 KiB
Go
package config
|
|
|
|
import "regexp"
|
|
|
|
// Various hard-coded enums such as choice of gender, sexuality, relationship status etc.
|
|
var (
|
|
MaritalStatus = []string{
|
|
"Single",
|
|
"Married",
|
|
"In a relationship",
|
|
"It's complicated",
|
|
"Divorced",
|
|
"Widowed",
|
|
"Widower",
|
|
}
|
|
|
|
RelationshipType = []string{
|
|
"Monogamous",
|
|
"Open",
|
|
}
|
|
|
|
Gender = []string{
|
|
"Man",
|
|
"Woman",
|
|
"Non-binary",
|
|
"Trans",
|
|
"Trans (FTM)",
|
|
"Trans (MTF)",
|
|
"Other",
|
|
}
|
|
|
|
Orientation = []string{
|
|
"Straight",
|
|
"Gay",
|
|
"Bisexual",
|
|
"Bicurious",
|
|
"Pansexual",
|
|
"Asexual",
|
|
}
|
|
|
|
HereFor = []string{
|
|
"Dating", "Relationship", "Platonic friends",
|
|
"Networking", "Casual acquaintances", "Hookups",
|
|
"Chat room", "Forums", "Galleries",
|
|
"Exhibitionism", "Voyeurism", "Couch surfing",
|
|
}
|
|
|
|
// Enums all wrapped up for template use.
|
|
ProfileEnums = map[string][]string{
|
|
"MaritalStatus": MaritalStatus,
|
|
"RelationshipType": RelationshipType,
|
|
"Gender": Gender,
|
|
"Orientation": Orientation,
|
|
"HereFor": HereFor,
|
|
}
|
|
|
|
// Input field names for profile fields.
|
|
ProfileFields = []string{
|
|
"gender",
|
|
"pronouns",
|
|
"city",
|
|
"job",
|
|
"orientation",
|
|
"marital_status",
|
|
"relationship_type",
|
|
"about_me",
|
|
"interests",
|
|
"music_movies",
|
|
"hide_age",
|
|
}
|
|
EssayProfileFields = []string{
|
|
"about_me",
|
|
"interests",
|
|
"music_movies",
|
|
}
|
|
|
|
// Site preference names (stored in ProfileField table)
|
|
SitePreferenceFields = []string{
|
|
"dm_privacy",
|
|
"blur_explicit",
|
|
"site_gallery_default", // default view on site gallery (friends-only or all certified?)
|
|
"chat_moderation_rules",
|
|
}
|
|
|
|
// Website theme color hue choices.
|
|
WebsiteThemeHueChoices = []Option{
|
|
{
|
|
Label: "Default (no added color; classic nonshy theme)",
|
|
Value: "",
|
|
},
|
|
{
|
|
Label: "nonshy blue & pink",
|
|
Value: "blue-pink",
|
|
},
|
|
{
|
|
Label: "Pretty in pink",
|
|
Value: "pink",
|
|
},
|
|
{
|
|
Label: "Royal purple",
|
|
Value: "purple",
|
|
},
|
|
{
|
|
Label: "Cool blue",
|
|
Value: "blue",
|
|
},
|
|
{
|
|
Label: "Burnt red",
|
|
Value: "red",
|
|
},
|
|
{
|
|
Label: "Leafy green",
|
|
Value: "green",
|
|
},
|
|
}
|
|
|
|
// Choices for the Contact Us subject
|
|
ContactUsChoices = []OptGroup{
|
|
{
|
|
Header: "Website Feedback",
|
|
Options: []Option{
|
|
{"feedback", "Website feedback"},
|
|
{"feature", "Make a feature request"},
|
|
{"bug", "Report a bug or broken feature"},
|
|
{"other", "General/miscellaneous/other"},
|
|
},
|
|
},
|
|
{
|
|
Header: "Report a Problem",
|
|
Options: []Option{
|
|
{"report.user", "Report a problematic user"},
|
|
{"report.photo", "Report a problematic photo"},
|
|
{"report.message", "Report a direct message conversation"},
|
|
{"report.comment", "Report a forum post or comment"},
|
|
{"report.forum", "Report a forum or community"},
|
|
{"forum.adopt", "Adopt a forum"},
|
|
},
|
|
},
|
|
}
|
|
|
|
// Default forum categories for forum landing page.
|
|
ForumCategories = []string{
|
|
"Rules and Announcements",
|
|
"Nudists",
|
|
"Exhibitionists",
|
|
"Photo Boards",
|
|
"Anything Goes",
|
|
}
|
|
|
|
// Keywords that appear in a DM that make it likely spam.
|
|
DirectMessageSpamKeywords = []*regexp.Regexp{
|
|
regexp.MustCompile(`\b(telegram|whats\s*app|signal|kik|session)\b`),
|
|
regexp.MustCompile(`https?://(t.me|join.skype.com|zoom.us|whereby.com|meet.jit.si|wa.me)`),
|
|
}
|
|
|
|
// Chat Moderation Rules.
|
|
ChatModerationRules = []ChecklistOption{
|
|
{
|
|
Value: "redcam",
|
|
Label: "Red camera",
|
|
Help: "The user's camera is forced to 'explicit' when they are broadcasting.",
|
|
},
|
|
{
|
|
Value: "nobroadcast",
|
|
Label: "No broadcast",
|
|
Help: "The user can not broadcast their webcam, but may still watch other peoples' webcams.",
|
|
},
|
|
{
|
|
Value: "novideo",
|
|
Label: "No webcam privileges ('Shy Accounts')",
|
|
Help: "The user can not broadcast or watch any webcam. Note: this option supercedes all other video-related rules.",
|
|
},
|
|
{
|
|
Value: "noimage",
|
|
Label: "No image sharing privileges ('Shy Accounts')",
|
|
Help: "The user can not share or see any image shared on chat.",
|
|
},
|
|
}
|
|
)
|
|
|
|
// OptGroup choices for the subject drop-down.
|
|
type OptGroup struct {
|
|
Header string
|
|
Options []Option
|
|
}
|
|
|
|
// Option for select boxes.
|
|
type Option struct {
|
|
Value string
|
|
Label string
|
|
}
|
|
|
|
// ChecklistOption for checkbox-lists.
|
|
type ChecklistOption struct {
|
|
Value string
|
|
Label string
|
|
Help string
|
|
}
|
|
|
|
// NotificationOptout field values (stored in user ProfileField table)
|
|
const (
|
|
NotificationOptOutFriendPhotos = "notif_optout_friends_photos"
|
|
NotificationOptOutPrivatePhotos = "notif_optout_private_photos"
|
|
NotificationOptOutExplicitPhotos = "notif_optout_explicit_photos"
|
|
NotificationOptOutLikes = "notif_optout_likes"
|
|
NotificationOptOutComments = "notif_optout_comments"
|
|
NotificationOptOutSubscriptions = "notif_optout_subscriptions"
|
|
NotificationOptOutFriendRequestAccepted = "notif_optout_friend_request_accepted"
|
|
NotificationOptOutPrivateGrant = "notif_optout_private_grant"
|
|
|
|
// Web Push Notifications
|
|
PushNotificationOptOutMessage = "notif_optout_push_messages"
|
|
PushNotificationOptOutFriends = "notif_optout_push_friends"
|
|
)
|
|
|
|
// Notification opt-outs (stored in ProfileField table)
|
|
var NotificationOptOutFields = []string{
|
|
NotificationOptOutFriendPhotos,
|
|
NotificationOptOutPrivatePhotos,
|
|
NotificationOptOutExplicitPhotos,
|
|
NotificationOptOutLikes,
|
|
NotificationOptOutComments,
|
|
NotificationOptOutSubscriptions,
|
|
NotificationOptOutFriendRequestAccepted,
|
|
NotificationOptOutPrivateGrant,
|
|
}
|
|
|
|
// Push Notification opt-outs (stored in ProfileField table)
|
|
var PushNotificationOptOutFields = []string{
|
|
PushNotificationOptOutMessage,
|
|
PushNotificationOptOutFriends,
|
|
}
|