forked from lug/matterbridge
		
	Populate user on channel join (slack) (#644)
This commit is contained in:
		| @@ -89,7 +89,10 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) { | |||||||
| 			b.Log.Fatalf("Invalid Token %#v", ev) | 			b.Log.Fatalf("Invalid Token %#v", ev) | ||||||
| 		case *slack.ConnectionErrorEvent: | 		case *slack.ConnectionErrorEvent: | ||||||
| 			b.Log.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj) | 			b.Log.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj) | ||||||
|  | 		case *slack.MemberJoinedChannelEvent: | ||||||
|  | 			b.populateUser(ev.User) | ||||||
| 		default: | 		default: | ||||||
|  | 			b.Log.Debugf("Unhandled incoming event: %T", ev) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -63,6 +63,26 @@ func (b *Bslack) getChannelBy(lookupKey string, lookupMap map[string]*slack.Chan | |||||||
|  |  | ||||||
| const minimumRefreshInterval = 10 * time.Second | 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() { | func (b *Bslack) populateUsers() { | ||||||
| 	b.refreshMutex.Lock() | 	b.refreshMutex.Lock() | ||||||
| 	if time.Now().Before(b.earliestUserRefresh) || b.refreshInProgress { | 	if time.Now().Before(b.earliestUserRefresh) || b.refreshInProgress { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 David Hill
					David Hill