summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorraven <citrons@mondecitronne.com>2025-10-22 16:30:37 -0500
committerraven <citrons@mondecitronne.com>2026-02-09 13:14:00 -0600
commitc4105e97e5422c5b28485c62554ecb45c58dd44d (patch)
tree08086896fd0607df5c5fbc2d250a8d1548b33ea4 /server
parent4c359cc8d5c9a230852927b9bfc7ef5c55dd0c63 (diff)
store user's direct channels in separate bucket
Diffstat (limited to 'server')
-rw-r--r--server/channel/channel.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/server/channel/channel.go b/server/channel/channel.go
index 9984b7b..46e9d6d 100644
--- a/server/channel/channel.go
+++ b/server/channel/channel.go
@@ -357,10 +357,18 @@ func (c *Channel) GetMembership(uid string) Membership {
func (c *Channel) SetMembership(uid string, m Membership) {
err := c.kind.db.Update(func(tx *bolt.Tx) error {
- channels := tx.Bucket([]byte("channel membership"))
- userChannels := tx.Bucket([]byte("user channels"))
+ channels, _ := tx.CreateBucketIfNotExists([]byte("channel membership"))
members, _ := channels.CreateBucketIfNotExists([]byte(c.id))
- user, _ := userChannels.CreateBucketIfNotExists([]byte(uid))
+
+ userChans, _ := tx.CreateBucketIfNotExists([]byte("user channels"))
+ directChans, _ := tx.CreateBucketIfNotExists([]byte("direct channels"))
+ var user *bolt.Bucket
+ if !c.isDirect {
+ user, _ = userChans.CreateBucketIfNotExists([]byte(uid))
+ } else {
+ user, _ = directChans.CreateBucketIfNotExists([]byte(uid))
+ }
+
if m.Yes {
err := user.Put([]byte(c.id), []byte("yes"))
if err != nil {