ErrorsView.purs 1.89 KB
Newer Older
1
module Gargantext.Components.ErrorsView (component) where
2 3 4 5 6 7

import Gargantext.Prelude

import Data.Array (deleteAt)
import Data.FunctorWithIndex (mapWithIndex)
import Data.Maybe (Maybe(..))
8
import Gargantext.Components.App.Store as AppStore
9 10 11
import Gargantext.Types (FrontendError(..))
import Gargantext.Utils.ReactBootstrap as RB
import Gargantext.Utils.Reactix as R2
12 13 14
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
15 16 17 18

here :: R2.Here
here = R2.here "Gargantext.Components.ErrorsView"

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
component :: R2.Leaf ()
component = R2.leaf componentCpt
componentCpt :: R.Component ()
componentCpt = here.component "main" cpt where
  cpt _ _ = do
    -- | States
    -- |
    { errors
    } <- AppStore.use

    errors' <- R2.useLive' errors

    -- | Render
    -- |
    pure $

      H.div
      {}
      ( mapWithIndex (showError errors) errors' )

  showError errors i (FStringError { error }) =
    RB.alert
    { dismissible: true
    , onClose
    , variant: "danger"
    }
    [ H.text error ]

    where
      onClose = do
        here.error2 "click!" error
        T.modify_ (\es -> case deleteAt i es of
                      Nothing  -> es
                      Just es' -> es'
        ) errors

  showError errors i (FRESTError { error }) =
    RB.alert
    { dismissible: true
    , onClose
    , variant: "danger"
    }
    [ H.text $ show error ]

    where
      onClose = do
        here.error2 "click!" error
        T.modify_ (\es -> case deleteAt i es of
                      Nothing  -> es
                      Just es' -> es'
        ) errors
70

71 72 73 74 75 76 77
  showError errors i (FOtherError { error }) =
    RB.alert
    { dismissible: true
    , onClose
    , variant: "danger"
    }
    [ H.text $ show error ]
78

79 80 81 82 83 84 85
    where
      onClose = do
        here.error2 "click!" error
        T.modify_ (\es -> case deleteAt i es of
                      Nothing  -> es
                      Just es' -> es'
        ) errors