diff options
| author | raven <citrons@mondecitronne.com> | 2025-10-22 16:30:37 -0500 |
|---|---|---|
| committer | raven <citrons@mondecitronne.com> | 2026-02-09 13:14:00 -0600 |
| commit | c4105e97e5422c5b28485c62554ecb45c58dd44d (patch) | |
| tree | 08086896fd0607df5c5fbc2d250a8d1548b33ea4 /server | |
| parent | 4c359cc8d5c9a230852927b9bfc7ef5c55dd0c63 (diff) | |
store user's direct channels in separate bucket
Diffstat (limited to 'server')
| -rw-r--r-- | server/channel/channel.go | 14 |
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 { |
