module Galley.API.CustomBackend
( getCustomBackendByDomain,
)
where
import Data.Domain (Domain)
import Galley.Effects.CustomBackendStore
import Imports hiding ((\\))
import Polysemy
import Wire.API.CustomBackend qualified as Public
import Wire.API.Error
import Wire.API.Error.Galley
getCustomBackendByDomain ::
( Member CustomBackendStore r,
Member (ErrorS 'CustomBackendNotFound) r
) =>
Domain ->
Sem r Public.CustomBackend
getCustomBackendByDomain :: forall (r :: EffectRow).
(Member CustomBackendStore r,
Member (ErrorS 'CustomBackendNotFound) r) =>
Domain -> Sem r CustomBackend
getCustomBackendByDomain Domain
domain =
Domain -> Sem r (Maybe CustomBackend)
forall (r :: EffectRow).
Member CustomBackendStore r =>
Domain -> Sem r (Maybe CustomBackend)
getCustomBackend Domain
domain Sem r (Maybe CustomBackend)
-> (Maybe CustomBackend -> Sem r CustomBackend)
-> Sem r CustomBackend
forall a b. Sem r a -> (a -> Sem r b) -> Sem r b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe CustomBackend
Nothing -> forall {k} (e :: k) (r :: EffectRow) a.
Member (ErrorS e) r =>
Sem r a
forall (e :: GalleyError) (r :: EffectRow) a.
Member (ErrorS e) r =>
Sem r a
throwS @'CustomBackendNotFound
Just CustomBackend
customBackend -> CustomBackend -> Sem r CustomBackend
forall a. a -> Sem r a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CustomBackend
customBackend