Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 8103e11696ef0c7da59d272fa3fe44a80a4eaf52 Author: David Hill <dhill@mindcry.org> Date: Sat Dec 15 16:57:54 2018 +0000 Populate user on channel join (slack) (#644) diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 89c800d..b9011c9 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -897 +8910 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) {   b.Log.Fatalf("Invalid Token %#v", ev)   case *slack.ConnectionErrorEvent:   b.Log.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj) + case *slack.MemberJoinedChannelEvent: + b.populateUser(ev.User)   default: + b.Log.Debugf("Unhandled incoming event: %T", ev)   }   }  } diff --git a/bridge/slack/helpers.go b/bridge/slack/helpers.go index ff039c5..6f04956 100644 --- a/bridge/slack/helpers.go +++ b/bridge/slack/helpers.go @@ -636 +6326 @@ func (b *Bslack) getChannelBy(lookupKey string, lookupMap map[string]*slack.Chan    const minimumRefreshInterval = 10 * time.Second   +func (b *Bslack) populateUser(userID string) { + b.usersMutex.RLock() + _, exists := b.users[userID] + b.usersMutex.RUnlock() + if exists { + // already in cache + return + } + + user, err := b.sc.GetUserInfo(userID) + if err != nil { + b.Log.Debugf("GetUserInfo failed for %v: %v", userID, err) + return + } + + b.usersMutex.Lock() + b.users[userID] = user + b.usersMutex.Unlock() +} +  func (b *Bslack) populateUsers() {   b.refreshMutex.Lock()   if time.Now().Before(b.earliestUserRefresh) || b.refreshInProgress {