summaryrefslogtreecommitdiff
path: root/internal/gtsmodel/status.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gtsmodel/status.go')
-rw-r--r--internal/gtsmodel/status.go55
1 files changed, 43 insertions, 12 deletions
diff --git a/internal/gtsmodel/status.go b/internal/gtsmodel/status.go
index 91c0ada61..f8bd068ab 100644
--- a/internal/gtsmodel/status.go
+++ b/internal/gtsmodel/status.go
@@ -263,27 +263,58 @@ type StatusToEmoji struct {
Emoji *Emoji `bun:"rel:belongs-to"`
}
-// Visibility represents the visibility granularity of a status.
-type Visibility string
+// Visibility represents the
+// visibility granularity of a status.
+type Visibility enumType
const (
// VisibilityNone means nobody can see this.
// It's only used for web status visibility.
- VisibilityNone Visibility = "none"
- // VisibilityPublic means this status will be visible to everyone on all timelines.
- VisibilityPublic Visibility = "public"
- // VisibilityUnlocked means this status will be visible to everyone, but will only show on home timeline to followers, and in lists.
- VisibilityUnlocked Visibility = "unlocked"
+ VisibilityNone Visibility = 1
+
+ // VisibilityPublic means this status will
+ // be visible to everyone on all timelines.
+ VisibilityPublic Visibility = 2
+
+ // VisibilityUnlocked means this status will be visible to everyone,
+ // but will only show on home timeline to followers, and in lists.
+ VisibilityUnlocked Visibility = 3
+
// VisibilityFollowersOnly means this status is viewable to followers only.
- VisibilityFollowersOnly Visibility = "followers_only"
- // VisibilityMutualsOnly means this status is visible to mutual followers only.
- VisibilityMutualsOnly Visibility = "mutuals_only"
- // VisibilityDirect means this status is visible only to mentioned recipients.
- VisibilityDirect Visibility = "direct"
+ VisibilityFollowersOnly Visibility = 4
+
+ // VisibilityMutualsOnly means this status
+ // is visible to mutual followers only.
+ VisibilityMutualsOnly Visibility = 5
+
+ // VisibilityDirect means this status is
+ // visible only to mentioned recipients.
+ VisibilityDirect Visibility = 6
+
// VisibilityDefault is used when no other setting can be found.
VisibilityDefault Visibility = VisibilityUnlocked
)
+// String returns a stringified, frontend API compatible form of Visibility.
+func (v Visibility) String() string {
+ switch v {
+ case VisibilityNone:
+ return "none"
+ case VisibilityPublic:
+ return "public"
+ case VisibilityUnlocked:
+ return "unlocked"
+ case VisibilityFollowersOnly:
+ return "followers_only"
+ case VisibilityMutualsOnly:
+ return "mutuals_only"
+ case VisibilityDirect:
+ return "direct"
+ default:
+ panic("invalid visibility")
+ }
+}
+
// Content models the simple string content
// of a status along with its ContentMap,
// which contains content entries keyed by