github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/elm/src/FetchResult.elm (about)

     1  module FetchResult exposing
     2      ( FetchResult(..)
     3      , changedFrom
     4      , map
     5      , withDefault
     6      )
     7  
     8  
     9  type FetchResult a
    10      = None
    11      | Cached a
    12      | Fetched a
    13  
    14  
    15  value : FetchResult a -> Maybe a
    16  value result =
    17      case result of
    18          None ->
    19              Nothing
    20  
    21          Cached cachedValue ->
    22              Just cachedValue
    23  
    24          Fetched fetchedValue ->
    25              Just fetchedValue
    26  
    27  
    28  withDefault : a -> FetchResult a -> a
    29  withDefault default =
    30      value >> Maybe.withDefault default
    31  
    32  
    33  map : (a -> b) -> FetchResult a -> FetchResult b
    34  map fn result =
    35      case result of
    36          None ->
    37              None
    38  
    39          Cached cachedValue ->
    40              Cached (fn cachedValue)
    41  
    42          Fetched fetchedValue ->
    43              Fetched (fn fetchedValue)
    44  
    45  
    46  changedFrom : FetchResult a -> FetchResult a -> Bool
    47  changedFrom oldResult newResult =
    48      case ( oldResult, newResult ) of
    49          ( Fetched old, Fetched new ) ->
    50              old /= new
    51  
    52          ( Cached old, Cached new ) ->
    53              old /= new
    54  
    55          ( Cached old, Fetched new ) ->
    56              old /= new
    57  
    58          ( None, Cached _ ) ->
    59              True
    60  
    61          ( None, Fetched _ ) ->
    62              True
    63  
    64          _ ->
    65              False