示例#1
0
func extraUserForEvent(event types.Event) *ct.UserId {
	if event.GetEventType() == types.EventTypeMembership {
		membership := event.GetContent().(*types.MembershipEventContent).Membership
		isInvited := membership == types.MembershipInvited
		isKnocking := membership == types.MembershipKnocking
		isBanned := membership == types.MembershipBanned
		if isInvited || isKnocking || isBanned {
			state, ok := event.(*types.State)
			if !ok {
				log.Println("membership event was not a state event:", event)
				return nil
			}
			user, err := ct.ParseUserId(state.StateKey)
			if err != nil {
				log.Println("failed to parse user id state key:", state.StateKey)
				return nil
			}
			return &user
		}
	}
	return nil
}