@@ -57,27 +57,25 @@ conversationBot toConversation BotApp{..} = BotApp
57
57
-- This enables jobs to easily send notifications.
58
58
useLatestUpdateInJobs
59
59
:: BotApp model action
60
- -> BotApp (Maybe Telegram. Update , model ) (Either Telegram. Update action )
60
+ -> BotApp (Maybe Telegram. Update , model ) (Maybe Telegram. Update, action )
61
61
useLatestUpdateInJobs BotApp {.. } = BotApp
62
62
{ botInitialModel = (Nothing , botInitialModel)
63
63
, botAction = newAction
64
64
, botHandler = newHandler
65
65
, botJobs = newJobs
66
66
}
67
67
where
68
- newAction update _ = Just (Left update)
69
- newHandler (Left update) (_, model) = do
70
- case botAction update model of
71
- Nothing -> pure ()
72
- Just action -> eff (pure (Right action))
73
- pure (Just update, model)
74
- newHandler (Right action) (update, model) =
75
- bimap Right (update,) (botHandler action model)
68
+ newAction update (_, model) = (Just update,) <$> botAction update model
69
+
70
+ newHandler (update, action) (_update, model) =
71
+ bimap (update,) (update,) $
72
+ -- re-enforcing update here is needed for actions issued in jobs
73
+ setEffUpdate update (botHandler action model)
76
74
77
75
newJobs = map addUpdateToJob botJobs
78
76
79
77
addUpdateToJob BotJob {.. } = BotJob
80
78
{ botJobSchedule = botJobSchedule
81
79
, botJobTask = \ (update, model) ->
82
- bimap Right (update,) (setEffUpdate update (botJobTask model))
80
+ bimap (update,) (update,) (setEffUpdate update (botJobTask model))
83
81
}
0 commit comments