11import { flow , pipe } from 'fp-ts/lib/function' ;
22import * as E from 'fp-ts/Either' ;
3+ import * as TE from 'fp-ts/TaskEither' ;
34import { html , safe , toLoggedInContent } from '../../types/html' ;
45import { Form } from '../../types/form' ;
56import { StoredDomainEvent } from '../../types' ;
@@ -13,7 +14,6 @@ import * as O from 'fp-ts/Option';
1314
1415type ViewModel = {
1516 event : O . Option < StoredDomainEvent > ,
16- event_id : tt . UUID ,
1717} ;
1818
1919const renderForm = ( viewModel : ViewModel ) =>
@@ -25,14 +25,14 @@ const renderForm = (viewModel: ViewModel) =>
2525 </ p >
2626 ${ renderEvent ( viewModel . event . value ) }
2727 < form action ="/events/exclude-event " method ="post ">
28- < input type ="hidden " name ="event_id " value ="${ viewModel . event_id } "/>
28+ < input type ="hidden " name ="event_id " value ="${ viewModel . event . value . event_id } "/>
2929 < button type ="submit "> Confirm</ button >
3030 </ form >
3131 ` ,
3232 toLoggedInContent ( safe ( 'Exclude event' ) )
3333 ) : pipe (
3434 html `
35- < h1 > Unknown event: ${ viewModel . event_id } </ h1 >
35+ < h1 > Unknown event</ h1 >
3636 ` ,
3737 toLoggedInContent ( safe ( 'Exclude event' ) )
3838 ) ;
@@ -41,7 +41,7 @@ const paramsCodec = t.strict({
4141 event_id : tt . UUID
4242} ) ;
4343
44- const constructForm : Form < ViewModel > [ 'constructForm' ] = input => ( { events } ) => pipe (
44+ const constructForm : Form < ViewModel > [ 'constructForm' ] = input => ( { deps } ) => pipe (
4545 input ,
4646 paramsCodec . decode ,
4747 E . mapLeft (
@@ -54,12 +54,13 @@ const constructForm: Form<ViewModel>['constructForm'] = input => ({events}) => p
5454 )
5555 ) ,
5656 E . map ( params => params . event_id ) ,
57- E . map ( event_id => ( {
58- event_id,
59- event : O . fromNullable (
60- events . findLast ( event => event . event_id === event_id )
61- ) ,
62- } ) )
57+ TE . fromEither ,
58+ TE . chain ( deps . getEventById ) ,
59+ TE . map (
60+ event => ( {
61+ event,
62+ } )
63+ ) ,
6364) ;
6465
6566export const excludeEventForm : Form < ViewModel > = {
0 commit comments