diff --git a/CLIENT_EVENTS.md b/CLIENT_EVENTS.md
index c45e60824..be19f5f03 100644
--- a/CLIENT_EVENTS.md
+++ b/CLIENT_EVENTS.md
@@ -129,6 +129,7 @@ createComment.error
- showSharePopover
- showUserPopover
- signOut
+- signedIn
- unfeatureComment
- updateNotificationSettings
- updateStorySettings
@@ -538,6 +539,7 @@ createComment.error
};
}
```
+- **signedIn**: This event is emitted when the viewer signed in (not applicable for SSO).
- : This event is emitted when the viewer unfeatures a comment.
```ts
{
diff --git a/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.spec.tsx b/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.spec.tsx
index e35c90120..72f12ccfc 100644
--- a/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.spec.tsx
+++ b/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.spec.tsx
@@ -14,6 +14,13 @@ it("Listens to event and sets access token", () => {
},
};
+ let emittedEventName = "";
+ const eventEmitter: any = {
+ emit: (name: string, values: any) => {
+ emittedEventName = name;
+ },
+ };
+
const setAccessToken = createSinonStub(
(s) => s.throws(),
(s) => s.withArgs({ accessToken: token }).returns(null)
@@ -21,9 +28,11 @@ it("Listens to event and sets access token", () => {
createRenderer().render(
);
expect(setAccessToken.calledOnce);
+ expect(emittedEventName).toBe("signedIn");
});
diff --git a/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.ts b/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.ts
index 405fae245..4aeafbe35 100644
--- a/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.ts
+++ b/src/core/client/stream/App/listeners/OnPostMessageSetAccessToken.ts
@@ -3,9 +3,11 @@ import { Component } from "react";
import { CoralContext, withContext } from "coral-framework/lib/bootstrap";
import { MutationProp, withMutation } from "coral-framework/lib/relay";
import { SetAccessTokenMutation } from "coral-framework/mutations";
+import { SignedInEvent } from "coral-stream/events";
interface Props {
postMessage: CoralContext["postMessage"];
+ eventEmitter: CoralContext["eventEmitter"];
setAccessToken: MutationProp;
}
@@ -15,6 +17,7 @@ export class OnPostMessageSetAccessToken extends Component {
// Auth popup will use this to handle a successful login.
props.postMessage.on("setAccessToken", (accessToken: string) => {
props.setAccessToken({ accessToken });
+ SignedInEvent.emit(props.eventEmitter);
});
}
@@ -23,7 +26,8 @@ export class OnPostMessageSetAccessToken extends Component {
}
}
-const enhanced = withContext(({ postMessage }) => ({ postMessage }))(
- withMutation(SetAccessTokenMutation)(OnPostMessageSetAccessToken)
-);
+const enhanced = withContext(({ postMessage, eventEmitter }) => ({
+ postMessage,
+ eventEmitter,
+}))(withMutation(SetAccessTokenMutation)(OnPostMessageSetAccessToken));
export default enhanced;
diff --git a/src/core/client/stream/events.ts b/src/core/client/stream/events.ts
index 708076b3e..8e5a04d0c 100644
--- a/src/core/client/stream/events.ts
+++ b/src/core/client/stream/events.ts
@@ -194,6 +194,12 @@ export const SignOutEvent = createViewerNetworkEvent<{
};
}>("signOut");
+/**
+ * This event is emitted when the viewer
+ * signed in (not applicable for SSO).
+ */
+export const SignedInEvent = createViewerEvent("signedIn");
+
/**
* This event is emitted when the viewer updates its
* notification settings.