Skip to content

Commit

Permalink
Fix slack views
Browse files Browse the repository at this point in the history
  • Loading branch information
paulpdaniels committed Jan 22, 2021
1 parent 9b0ce0e commit 44afa27
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.github.dapperware.slack.api

import com.github.dapperware.slack.{ SlackEnv, SlackError }
import com.github.dapperware.slack.models.View
import com.github.dapperware.slack.models.{ View, ViewPayload }
import io.circe.Json
import io.circe.syntax._
import zio.ZIO

trait SlackViews {

def openView(triggerId: String, view: View): ZIO[SlackEnv, SlackError, View] =
def openView(triggerId: String, view: ViewPayload): ZIO[SlackEnv, SlackError, View] =
sendM(
requestJson(
"views.open",
Expand All @@ -19,7 +19,7 @@ trait SlackViews {
)
) >>= as[View]("view")

def publishView(userId: String, view: View, hash: Option[String] = None): ZIO[SlackEnv, SlackError, View] =
def publishView(userId: String, view: ViewPayload, hash: Option[String] = None): ZIO[SlackEnv, SlackError, View] =
sendM(
requestJson(
"views.publish",
Expand All @@ -31,7 +31,7 @@ trait SlackViews {
)
) >>= as[View]("view")

def pushView(triggerId: String, view: View): ZIO[SlackEnv, SlackError, View] =
def pushView(triggerId: String, view: ViewPayload): ZIO[SlackEnv, SlackError, ViewPayload] =
sendM(
requestJson(
"views.push",
Expand All @@ -40,9 +40,9 @@ trait SlackViews {
"view" -> view.asJson
)
)
) >>= as[View]("view")
) >>= as[ViewPayload]("view")

def updateView(view: View,
def updateView(view: ViewPayload,
externalId: Option[String] = None,
hash: Option[String] = None,
viewId: Option[String]): ZIO[SlackEnv, SlackError, View] =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,31 @@ import io.circe.Codec
import io.circe.generic.semiauto._

case class View(
id: String,
team_id: String,
`type`: String,
blocks: List[Block],
title: PlainTextObject,
submit: Option[PlainTextObject] = None,
private_metadata: Option[String] = None,
callback_id: Option[String] = None,
state: Option[ViewState] = None,
hash: Option[String] = None,
clear_on_close: Option[Boolean] = None,
notify_on_close: Option[String] = None,
close: Option[PlainTextObject] = None,
previous_view_id: Option[String] = None,
app_id: Option[String] = None,
external_id: Option[String] = None,
app_installed_team_id: Option[String] = None,
bot_id: Option[String] = None
)

object View {
implicit val viewCodec: Codec[View] = deriveCodec[View]
}

case class ViewPayload(
`type`: String,
title: PlainTextObject,
blocks: Seq[Block],
Expand All @@ -14,8 +39,7 @@ case class View(
clear_on_close: Option[Boolean] = None,
notify_on_close: Option[Boolean] = None,
external_id: Option[String] = None,
submit_disabled: Option[Boolean] = None,
state: Option[ViewState] = None
submit_disabled: Option[Boolean] = None
)

case class ViewState(values: Map[String, Map[String, ViewStateValue]]) {
Expand All @@ -31,7 +55,7 @@ object ViewState {
implicit val viewStateDecoder: Codec.AsObject[ViewState] = deriveCodec[ViewState]
}

object View {
object ViewPayload {

implicit val codec: Codec[View] = deriveCodec[View]
implicit val codec: Codec[ViewPayload] = deriveCodec[ViewPayload]
}
6 changes: 3 additions & 3 deletions client/src/test/scala/slack/api/SlackViewSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.github.dapperware.slack.models.{
InputBlock,
PlainTextInput,
PlainTextObject,
View
ViewPayload
}
import io.circe.parser
import zio.test.Assertion.{ equalTo, isRight }
Expand Down Expand Up @@ -60,12 +60,12 @@ object SlackViewSpec extends DefaultRunnableSpec {
| }
|}""".stripMargin

val view = parser.parse(payload).flatMap(_.as[View])
val view = parser.parse(payload).flatMap(_.as[ViewPayload])

assert(view)(
isRight(
equalTo(
View(
ViewPayload(
"modal",
PlainTextObject("Modal with inputs"),
callback_id = Some("modal-with-inputs"),
Expand Down

0 comments on commit 44afa27

Please sign in to comment.