packages feed

slack-progressbar-0.1.0.0: app/Main.hs

{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}

module Main where

import Control.Concurrent
import Control.Monad.Except
import Data.Maybe
import Data.String.Interpolate.IsString
import Web.Slack.ProgressBar

mySlackConfig :: SlackConfig
mySlackConfig = SlackConfig { slackApiToken = "TODO" }

main :: IO ()
main = void $ runExceptT $ do
  let progressBarInfo = ProgressBarInfo {
        progressBarInfoTopMessage = Just "Top message"
        , progressBarInfoBottomMessage = Just "Bottom message"
        , progressBarInfoSize = Just 0
        , progressBarInfoAttachments = Just []
        }

  progressBar <- ExceptT $ createProgressBar mySlackConfig "test-channel" progressBarInfo

  forM_ [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] $ \size -> do
    liftIO $ threadDelay 1000000
    ExceptT $ updateProgressBar mySlackConfig progressBar (
      progressBarInfo {
          progressBarInfoSize = Just size
          , progressBarInfoAttachments = Just $
              (ProgressBarAttachment [i|Hello there #{size}|] "#ff4136")
              : (fromMaybe [] (progressBarInfoAttachments progressBarInfo))
          })