in common/src/main/scala/com/gu/anghammarad/common/Contacts.scala [115:138]
def resolveContactsForChannels(contacts: List[Contact], requestedChannel: RequestedChannel): Try[List[(Channel, Contact)]] = {
val emails = contacts.collect {
case ea: EmailAddress => Email -> ea
}
val webhooks = contacts.collect {
case hr: HangoutsRoom => HangoutsChat -> hr
}
val resolved = requestedChannel match {
case Email =>
emails
case HangoutsChat =>
webhooks
case All =>
emails ++ webhooks
case Preferred(Email) =>
if (emails.nonEmpty) emails
else webhooks
case Preferred(HangoutsChat) =>
if (webhooks.nonEmpty) webhooks
else emails
}
if (resolved.isEmpty) Fail(s"Could not find any contacts for requested channel, $requestedChannel")
else Success(resolved)
}