Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions channels.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (m *Client) GetCachedChannelID(channelName, teamID string) string {
defer m.Users.mu.RUnlock()

for _, ch := range m.Users.channelData {
if ch.TeamId == teamID && (ch.Name == channelName || getNormalisedName(ch) == channelName) {
if ch.TeamId == teamID && (ch.Name == channelName || (ch.Type == model.ChannelTypeGroup && getNormalisedName(ch) == channelName)) {
return ch.Id
}
}
Expand Down Expand Up @@ -266,7 +266,7 @@ func (m *Client) GetChannels() []*model.Channel {
m.Users.mu.RLock()
defer m.Users.mu.RUnlock()

channels := make([]*model.Channel, 0, 200)
channels := make([]*model.Channel, 0, len(m.Users.joinedChannels))
for id := range m.Users.joinedChannels {
if ch, exists := m.Users.channelData[id]; exists {
channels = append(channels, ch)
Expand Down Expand Up @@ -303,7 +303,7 @@ func (m *Client) GetChannelID(ctx context.Context, name string, teamID string) s
defer m.Users.mu.RUnlock()

for _, ch := range m.Users.channelData {
if getNormalisedName(ch) == name {
if ch.Name == name || (ch.Type == model.ChannelTypeGroup && getNormalisedName(ch) == name) {
return ch.Id
}
}
Expand All @@ -318,15 +318,22 @@ func (m *Client) getChannelIDTeam(ctx context.Context, name string, teamID strin
continue
}

// Direct match on normalized name or raw channel name
if strings.EqualFold(getNormalisedName(ch), name) || strings.EqualFold(ch.Name, name) {
// Check raw channel name first
if strings.EqualFold(ch.Name, name) {
m.Users.mu.RUnlock()

return ch.Id
}

// Renamed Group DM fallback: match by member usernames
// Check normalized name only if type is group
if ch.Type == model.ChannelTypeGroup {
if strings.EqualFold(getNormalisedName(ch), name) {
m.Users.mu.RUnlock()

return ch.Id
}

// Renamed Group DM fallback: match by member usernames
groupName := m.getGroupChannelName(ch.Id)
if groupName != "" && strings.EqualFold(groupName, name) {
m.Users.mu.RUnlock()
Expand Down Expand Up @@ -655,7 +662,8 @@ func (m *Client) GetMoreChannels() []*model.Channel {
m.Users.mu.RLock()
defer m.Users.mu.RUnlock()

channels := make([]*model.Channel, 0, 200)
capSize := max(0, len(m.Users.channelData)-len(m.Users.joinedChannels))
channels := make([]*model.Channel, 0, capSize)
for id, ch := range m.Users.channelData {
if _, joined := m.Users.joinedChannels[id]; !joined {
channels = append(channels, ch)
Expand Down