Skip to content

Commit

Permalink
galley: Use the new NotificationSubsystem
Browse files Browse the repository at this point in the history
  • Loading branch information
akshaymankar committed Dec 21, 2023
1 parent 2fd8efa commit d9182d6
Show file tree
Hide file tree
Showing 27 changed files with 311 additions and 271 deletions.
1 change: 0 additions & 1 deletion libs/polysemy-wire-zoo/polysemy-wire-zoo.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ test-suite spec
main-is: Spec.hs
other-modules:
Paths_polysemy_wire_zoo
Test.DelaySpec
Test.IntersperseSpec

hs-source-dirs: test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ import Wire.NotificationSubsystem
-- | We interpret this using 'GundeckAPIAccess' so we can mock it out for testing.
runNotificationSubsystemGundeck ::
( Member (GundeckAPIAccess) r,
Member Async r,
Member (Input NotificationSubsystemConfig) r
Member Async r
) =>
NotificationSubsystemConfig ->
Sem (NotificationSubsystem : r) a ->
Sem r a
runNotificationSubsystemGundeck = interpret $ \case
Push ps -> pushImpl ps
runNotificationSubsystemGundeck cfg = interpret $ \case
Push ps -> runInputConst cfg $ pushImpl ps

data NotificationSubsystemConfig = NotificationSubsystemConfig
{ fanoutLimit :: Range 1 HardTruncationLimit Int32,
Expand Down
2 changes: 1 addition & 1 deletion services/galley/galley.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ library
, wai-utilities >=0.16
, wire-api
, wire-api-federation
, wire-subsystems

executable galley
import: common-all
Expand Down Expand Up @@ -606,7 +607,6 @@ test-suite galley-tests
Test.Galley.API.Action
Test.Galley.API.Message
Test.Galley.API.One2One
Test.Galley.Intra.Push
Test.Galley.Intra.User
Test.Galley.Mapping

Expand Down
43 changes: 23 additions & 20 deletions services/galley/src/Galley/API/Action.hs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import Control.Lens
import Data.ByteString.Conversion (toByteString')
import Data.Domain (Domain (..))
import Data.Id
import Data.Json.Util
import Data.Kind
import Data.List qualified as List
import Data.List.Extra (nubOrd)
Expand Down Expand Up @@ -82,17 +83,16 @@ import Galley.Effects.CodeStore qualified as E
import Galley.Effects.ConversationStore qualified as E
import Galley.Effects.FederatorAccess qualified as E
import Galley.Effects.FireAndForget qualified as E
import Galley.Effects.GundeckAccess
import Galley.Effects.MemberStore qualified as E
import Galley.Effects.ProposalStore qualified as E
import Galley.Effects.SubConversationStore qualified as E
import Galley.Effects.TeamStore qualified as E
import Galley.Env (Env)
import Galley.Intra.Push
import Galley.Options
import Galley.Types.Conversations.Members
import Galley.Types.UserList
import Galley.Validation
import Gundeck.Types.Push.V2 qualified as PushV2
import Imports hiding ((\\))
import Network.AMQP qualified as Q
import Polysemy
Expand Down Expand Up @@ -123,6 +123,8 @@ import Wire.API.Team.Feature
import Wire.API.Team.LegalHold
import Wire.API.Team.Member
import Wire.API.User qualified as User
import Wire.NotificationSubsystem
import Wire.NotificationSubsystem qualified as NotificationSubsystem

data NoChanges = NoChanges

Expand All @@ -144,7 +146,7 @@ type family HasConversationActionEffects (tag :: ConversationActionTag) r :: Con
Member (Error UnreachableBackends) r,
Member ExternalAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input Env) r,
Member (Input Opts) r,
Member (Input UTCTime) r,
Expand All @@ -163,7 +165,7 @@ type family HasConversationActionEffects (tag :: ConversationActionTag) r :: Con
Member (Error NoChanges) r,
Member ExternalAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input UTCTime) r,
Member (Input Env) r,
Member ProposalStore r,
Expand All @@ -179,7 +181,7 @@ type family HasConversationActionEffects (tag :: ConversationActionTag) r :: Con
Member (Input UTCTime) r,
Member ExternalAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Error InternalError) r,
Member TinyLog r,
Member (Error NoChanges) r
Expand Down Expand Up @@ -216,7 +218,7 @@ type family HasConversationActionEffects (tag :: ConversationActionTag) r :: Con
Member ExternalAccess r,
Member FederatorAccess r,
Member FireAndForget r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input Env) r,
Member MemberStore r,
Member ProposalStore r,
Expand Down Expand Up @@ -245,7 +247,7 @@ type family HasConversationActionEffects (tag :: ConversationActionTag) r :: Con
Member BrigAccess r,
Member ExternalAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input Env) r,
Member (Input Opts) r,
Member (Input UTCTime) r,
Expand Down Expand Up @@ -705,7 +707,7 @@ updateLocalConversation ::
Member (ErrorS 'InvalidOperation) r,
Member (ErrorS 'ConvNotFound) r,
Member ExternalAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input UTCTime) r,
Member (Logger (Log.Msg -> Log.Msg)) r,
HasConversationActionEffects tag r,
Expand Down Expand Up @@ -745,7 +747,7 @@ updateLocalConversationUnchecked ::
Member (ErrorS 'ConvNotFound) r,
Member (ErrorS 'InvalidOperation) r,
Member ExternalAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input UTCTime) r,
Member (Logger (Log.Msg -> Log.Msg)) r,
HasConversationActionEffects tag r
Expand Down Expand Up @@ -848,7 +850,7 @@ notifyConversationAction ::
forall tag r.
( Member BackendNotificationQueueAccess r,
Member ExternalAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input UTCTime) r,
Member (Logger (Log.Msg -> Log.Msg)) r
) =>
Expand Down Expand Up @@ -899,7 +901,7 @@ notifyConversationAction tag quid notifyOrigDomain con lconv targets action = do
-- or leaving. Finally, push out notifications to local users.
updateLocalStateOfRemoteConv ::
( Member BrigAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member ExternalAccess r,
Member (Input (Local ())) r,
Member MemberStore r,
Expand Down Expand Up @@ -1026,7 +1028,7 @@ kickMember ::
Member (Error InternalError) r,
Member ExternalAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member ProposalStore r,
Member (Input UTCTime) r,
Member (Input Env) r,
Expand Down Expand Up @@ -1058,7 +1060,7 @@ kickMember qusr lconv targets victim = void . runError @NoChanges $ do
notifyTypingIndicator ::
( Member (Input UTCTime) r,
Member (Input (Local ())) r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member FederatorAccess r
) =>
Conversation ->
Expand Down Expand Up @@ -1089,7 +1091,7 @@ notifyTypingIndicator conv qusr mcon ts = do
pure (tdu (fmap (tUnqualified . rmId) remoteMemsOrig))

pushTypingIndicatorEvents ::
(Member GundeckAccess r) =>
(Member NotificationSubsystem r) =>
Qualified UserId ->
UTCTime ->
[UserId] ->
Expand All @@ -1099,9 +1101,10 @@ pushTypingIndicatorEvents ::
Sem r ()
pushTypingIndicatorEvents qusr tEvent users mcon qcnv ts = do
let e = Event qcnv Nothing qusr tEvent (EdTyping ts)
for_ (newPushLocal ListComplete (qUnqualified qusr) (ConvEvent e) (userRecipient <$> users)) $ \p ->
push1 $
p
& pushConn .~ mcon
& pushRoute .~ RouteDirect
& pushTransient .~ True
for_ (newPushLocal (qUnqualified qusr) (toJSONObject e) (userRecipient <$> users)) $ \p ->
NotificationSubsystem.push
[ p
& pushConn .~ mcon
& pushRoute .~ PushV2.RouteDirect
& pushTransient .~ True
]
3 changes: 2 additions & 1 deletion services/galley/src/Galley/API/Clients.hs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import Wire.API.Conversation hiding (Member)
import Wire.API.Federation.API
import Wire.API.Federation.API.Galley
import Wire.API.Routes.MultiTablePaging
import Wire.NotificationSubsystem
import Wire.Sem.Paging.Cassandra (CassandraPaging)

getClientsH ::
Expand Down Expand Up @@ -95,7 +96,7 @@ rmClientH ::
Member ExternalAccess r,
Member BackendNotificationQueueAccess r,
Member FederatorAccess r,
Member GundeckAccess r,
Member NotificationSubsystem r,
Member (Input Env) r,
Member (Input (Local ())) r,
Member (Input UTCTime) r,
Expand Down
Loading

0 comments on commit d9182d6

Please sign in to comment.