add hub event sending
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user