add hub event sending

This commit is contained in:
cos
2026-05-08 11:11:28 +02:00
parent 40acd753ac
commit 53652d1f79
7 changed files with 330 additions and 43 deletions
+39
View File
@@ -91,6 +91,45 @@ func WsSendMessageToMultipleCloseIfTimeout(users *[]types.User, excludeId uuid.U
}
}
func WsSendEventMessageToPermittedChannelUsersCloseIfTimeout(excluded uuid.UUID, channel *types.HubChannel, needed types.CachedUserPermissions, message any) {
channel.Mu.RLock()
permitted := make([]uuid.UUID, 0, len(channel.UsersCachedPermissions))
for id, perm := range channel.UsersCachedPermissions {
if id != excluded && perm&needed == needed {
permitted = append(permitted, id)
}
}
channel.Mu.RUnlock()
for _, id := range permitted {
target, err := cache.GetUserById(id)
if err != nil {
continue
}
WsSendMessageCloseIfTimeout(target, message)
}
}
// WsSendEventMessageToHubUsersCloseIfTimeout auto fills hubId into message
func WsSendEventMessageToHubUsersCloseIfTimeout(excluded uuid.UUID, hub *types.Hub, message *types.WsHubSpecificHubEventMessage) {
message.HubId = hub.Id
hub.Mu.RLock()
hubUsers := make([]*types.HubUser, 0, len(hub.Users))
for _, hubUser := range hub.Users {
if hubUser.OriginalId != excluded {
hubUsers = append(hubUsers, hubUser)
}
}
hub.Mu.RUnlock()
for _, hubUser := range hubUsers {
target, err := cache.GetUserById(hubUser.OriginalId)
if err != nil {
continue
}
WsSendMessageCloseIfTimeout(target, message)
}
}
func sendToAllMessageCloseIfTimeout(message *map[string]any) {
cache.Mu.RLock()
users := make([]*types.User, 0, len(cache.Users))