@@ -37,6 +37,7 @@ import UnisonShare.Project.ProjectRef as ProjectRef exposing (ProjectRef)
3737import UnisonShare.ProjectCollaborator as ProjectCollaborator exposing (ProjectCollaborator )
3838import UnisonShare.ProjectRole as ProjectRole
3939import UnisonShare.ProjectWebhook as ProjectWebhook exposing (ProjectWebhook )
40+ import UnisonShare.ProjectWebhookExamplesModal as ProjectWebhookExamplesModal
4041import UnisonShare.Session as Session exposing (Session )
4142import UnisonShare.User as User exposing (UserSummary )
4243import Url
@@ -66,6 +67,7 @@ type Modal
6667 = NoModal
6768 | AddCollaboratorModal AddProjectCollaboratorModal . Model
6869 | AddWebhookModal AddProjectWebhookModal . Model
70+ | WebhookExamplesModal ProjectWebhookExamplesModal . Model
6971
7072
7173type ProjectOwner
@@ -135,13 +137,15 @@ type Msg
135137 | ShowDeleteProjectModal
136138 | ShowAddCollaboratorModal
137139 | ShowAddWebhookModal
140+ | ShowWebhookExamplesModal
138141 | CloseModal
139142 | RemoveCollaborator ProjectCollaborator
140143 | RemoveWebhook ProjectWebhook
141144 | RemoveCollaboratorFinished ( HttpResult () )
142145 | RemoveWebhookFinished ( HttpResult () )
143146 | AddProjectCollaboratorModalMsg AddProjectCollaboratorModal . Msg
144147 | AddProjectWebhookModalMsg AddProjectWebhookModal . Msg
148+ | ProjectWebhookExamplesModalMsg ProjectWebhookExamplesModal . Msg
145149
146150
147151type OutMsg
@@ -206,6 +210,13 @@ update appContext project msg model =
206210 ( ShowAddWebhookModal , _ ) ->
207211 ( { model | modal = AddWebhookModal AddProjectWebhookModal . init }, Cmd . none, None )
208212
213+ ( ShowWebhookExamplesModal , _ ) ->
214+ let
215+ ( examples, cmd ) =
216+ ProjectWebhookExamplesModal . init appContext project. ref
217+ in
218+ ( { model | modal = WebhookExamplesModal examples }, Cmd . map ProjectWebhookExamplesModalMsg cmd, None )
219+
209220 ( CloseModal , _ ) ->
210221 ( { model | modal = NoModal }, Cmd . none, None )
211222
@@ -295,6 +306,29 @@ update appContext project msg model =
295306 _ ->
296307 ( model, Cmd . none, None )
297308
309+ ( ProjectWebhookExamplesModalMsg examplesMsg, _ ) ->
310+ case model. modal of
311+ WebhookExamplesModal m ->
312+ let
313+ ( modal, cmd, out ) =
314+ ProjectWebhookExamplesModal . update appContext project. ref examplesMsg m
315+ in
316+ case out of
317+ ProjectWebhookExamplesModal . NoOutMsg ->
318+ ( { model | modal = WebhookExamplesModal modal }
319+ , Cmd . map ProjectWebhookExamplesModalMsg cmd
320+ , None
321+ )
322+
323+ ProjectWebhookExamplesModal . RequestCloseModal ->
324+ ( { model | modal = NoModal }
325+ , Cmd . map ProjectWebhookExamplesModalMsg cmd
326+ , None
327+ )
328+
329+ _ ->
330+ ( model, Cmd . none, None )
331+
298332 _ ->
299333 ( model, Cmd . none, None )
300334
@@ -541,6 +575,12 @@ viewWebhooks session model =
541575 divider =
542576 Divider . divider |> Divider . small |> Divider . view
543577
578+ examplesButton =
579+ Button . iconThenLabel ShowWebhookExamplesModal Icon . docs " Webhook example docs"
580+ |> Button . small
581+ |> Button . subdued
582+ |> Button . view
583+
544584 addButton =
545585 Button . iconThenLabel ShowAddWebhookModal Icon . plus " Add a webhook"
546586 |> Button . small
@@ -550,15 +590,15 @@ viewWebhooks session model =
550590 case model. webhooks of
551591 Success webhooks ->
552592 if List . isEmpty webhooks then
553- [ header [ class " project-settings_card_header" ] [ h2 [] [ text " Webhooks" ], addButton ]
593+ [ header [ class " project-settings_card_header" ] [ h2 [] [ text " Webhooks" ], div [ class " webhook-buttons " ] [ examplesButton , addButton ] ]
554594 , div [ class " list_empty-state" ]
555595 [ div [ class " list_empty-state_text" ]
556596 [ Icon . view Icon . wireframeGlobe, text " You haven't set up any webhooks yet" ]
557597 ]
558598 ]
559599
560600 else
561- [ header [ class " project-settings_card_header" ] [ h2 [] [ text " Webhooks" ], addButton ]
601+ [ header [ class " project-settings_card_header" ] [ h2 [] [ text " Webhooks" ], div [ class " webhook-buttons " ] [ examplesButton , addButton ] ]
562602 , div [ class " webhooks" ] ( webhooks |> List . map viewWebhook |> List . intersperse divider)
563603 ]
564604
@@ -756,6 +796,9 @@ view session project model =
756796 AddWebhookModal m ->
757797 Just ( Html . map AddProjectWebhookModalMsg ( AddProjectWebhookModal . view m))
758798
799+ WebhookExamplesModal m ->
800+ Just ( Html . map ProjectWebhookExamplesModalMsg ( ProjectWebhookExamplesModal . view session m))
801+
759802 _ ->
760803 Nothing
761804 in
0 commit comments