feat: renamed me -> viewer (#2238)

This commit is contained in:
Wyatt Johnson
2019-03-21 19:37:35 +01:00
committed by Kiwi
parent 7ce02620e9
commit 647227e66c
99 changed files with 406 additions and 403 deletions
@@ -10,7 +10,7 @@ const AppN = removeFragmentRefs(App);
it("renders correctly", () => {
const props: PropTypesOf<typeof AppN> = {
me: {},
viewer: {},
children: "child",
};
const renderer = createRenderer();
+3 -3
View File
@@ -12,11 +12,11 @@ import Version from "./Version";
import styles from "./App.css";
interface Props {
me: PropTypesOf<typeof UserMenuContainer>["me"];
viewer: PropTypesOf<typeof UserMenuContainer>["viewer"];
children: React.ReactNode;
}
const App: StatelessComponent<Props> = ({ children, me }) => (
const App: StatelessComponent<Props> = ({ children, viewer }) => (
<div className={styles.root}>
<AppBar gutterBegin gutterEnd>
<Begin itemGutter="double">
@@ -29,7 +29,7 @@ const App: StatelessComponent<Props> = ({ children, me }) => (
<End>
<DecisionHistoryButton />
<Divider />
<UserMenuContainer me={me} />
<UserMenuContainer viewer={viewer} />
</End>
</AppBar>
{children}
@@ -23,7 +23,7 @@ exports[`renders correctly 1`] = `
<DecisionHistoryButton />
<withPropsOnChange(Divider) />
<withContext(createMutationContainer(Relay(UserMenuContainer)))
me={Object {}}
viewer={Object {}}
/>
</withPropsOnChange(End)>
</withPropsOnChange(AppBar)>
@@ -14,7 +14,7 @@ interface Props {
class AppContainer extends React.Component<Props> {
public render() {
return (
<App me={this.props.data && this.props.data.me}>
<App viewer={this.props.data && this.props.data.viewer}>
{this.props.children}
</App>
);
@@ -24,8 +24,8 @@ class AppContainer extends React.Component<Props> {
const enhanced = withRouteConfig({
query: graphql`
query AppContainerQuery {
me {
...UserMenuContainer_me
viewer {
...UserMenuContainer_viewer
}
}
`,
@@ -25,17 +25,17 @@ class AuthCheckContainer extends React.Component<Props> {
}
public componentWillReceiveProps(nextProps: Props) {
if (nextProps.data && nextProps.data.me) {
if (nextProps.data && nextProps.data.viewer) {
this.wasLoggedIn = true;
}
this.redirectIfNotLoggedIn(nextProps, this.props);
if (nextProps.data && !nextProps.data.me) {
if (nextProps.data && !nextProps.data.viewer) {
this.wasLoggedIn = false;
}
}
private shouldRedirectTo(props: Props = this.props) {
if (!props.data || props.data.me) {
if (!props.data || props.data.viewer) {
return false;
}
return true;
@@ -43,16 +43,16 @@ class AuthCheckContainer extends React.Component<Props> {
private hasAccess(props: Props = this.props) {
const {
me,
viewer,
settings: { auth },
} = props.data!;
if (me) {
if (me.role === "COMMENTER") {
if (viewer) {
if (viewer.role === "COMMENTER") {
return false;
} else if (
!me.email ||
!me.username ||
(!me.profiles.some(p => p.__typename === "LocalProfile") &&
!viewer.email ||
!viewer.username ||
(!viewer.profiles.some(p => p.__typename === "LocalProfile") &&
auth.integrations.local.enabled &&
(auth.integrations.local.targetFilter.admin ||
auth.integrations.local.targetFilter.stream))
@@ -88,15 +88,15 @@ class AuthCheckContainer extends React.Component<Props> {
if (this.hasAccess()) {
return this.props.children;
}
return <RestrictedContainer me={this.props.data.me!} />;
return <RestrictedContainer viewer={this.props.data.viewer!} />;
}
}
const enhanced = withRouteConfig({
query: graphql`
query AuthCheckContainerQuery {
me {
...RestrictedContainer_me
viewer {
...RestrictedContainer_viewer
username
email
profiles {
@@ -31,16 +31,16 @@ class RedirectLoginContainer extends React.Component<Props> {
return null;
}
const {
me,
viewer,
settings: { auth },
} = props.data!;
if (me) {
if (me.role === "COMMENTER") {
if (viewer) {
if (viewer.role === "COMMENTER") {
return "/admin/login";
} else if (
!me.email ||
!me.username ||
(!me.profiles.some(p => p.__typename === "LocalProfile") &&
!viewer.email ||
!viewer.username ||
(!viewer.profiles.some(p => p.__typename === "LocalProfile") &&
auth.integrations.local.enabled &&
(auth.integrations.local.targetFilter.admin ||
auth.integrations.local.targetFilter.stream))
@@ -74,7 +74,7 @@ class RedirectLoginContainer extends React.Component<Props> {
const enhanced = withRouteConfig({
query: graphql`
query RedirectLoginContainerQuery {
me {
viewer {
username
email
profiles {
@@ -1,6 +1,6 @@
import React from "react";
import { UserMenuContainer_me as MeData } from "talk-admin/__generated__/UserMenuContainer_me.graphql";
import { UserMenuContainer_viewer as ViewerData } from "talk-admin/__generated__/UserMenuContainer_viewer.graphql";
import { graphql, withFragmentContainer } from "talk-framework/lib/relay";
import { SignOutMutation, withSignOutMutation } from "talk-framework/mutations";
@@ -8,7 +8,7 @@ import UserMenu from "../components/UserMenu";
interface Props {
signOut: SignOutMutation;
me: MeData | null;
viewer: ViewerData | null;
}
class UserMenuContainer extends React.Component<Props> {
@@ -17,7 +17,7 @@ class UserMenuContainer extends React.Component<Props> {
return (
<UserMenu
onSignOut={this.handleSignOut}
username={(this.props.me && this.props.me.username) || ""}
username={(this.props.viewer && this.props.viewer.username) || ""}
/>
);
}
@@ -25,8 +25,8 @@ class UserMenuContainer extends React.Component<Props> {
const enhanced = withSignOutMutation(
withFragmentContainer<Props>({
me: graphql`
fragment UserMenuContainer_me on User {
viewer: graphql`
fragment UserMenuContainer_viewer on User {
username
}
`,
@@ -3,7 +3,7 @@ import * as React from "react";
import { Component } from "react";
import { AccountCompletionContainer_auth as AuthData } from "talk-admin/__generated__/AccountCompletionContainer_auth.graphql";
import { AccountCompletionContainer_me as UserData } from "talk-admin/__generated__/AccountCompletionContainer_me.graphql";
import { AccountCompletionContainer_viewer as UserData } from "talk-admin/__generated__/AccountCompletionContainer_viewer.graphql";
import { AccountCompletionContainerLocal as Local } from "talk-admin/__generated__/AccountCompletionContainerLocal.graphql";
import {
CompleteAccountMutation,
@@ -24,28 +24,28 @@ type Props = {
setAuthView: SetAuthViewMutation;
local: Local;
auth: AuthData;
me: UserData | null;
viewer: UserData | null;
setRedirectPath: SetRedirectPathMutation;
} & WithRouter;
function handleAccountCompletion(props: Props) {
const {
local: { authView },
me,
viewer,
auth,
setAuthView,
} = props;
if (me) {
if (!me.email) {
if (viewer) {
if (!viewer.email) {
if (authView !== "ADD_EMAIL_ADDRESS") {
setAuthView({ view: "ADD_EMAIL_ADDRESS" });
}
} else if (!me.username) {
} else if (!viewer.username) {
if (authView !== "CREATE_USERNAME") {
setAuthView({ view: "CREATE_USERNAME" });
}
} else if (
!me.profiles.some(p => p.__typename === "LocalProfile") &&
!viewer.profiles.some(p => p.__typename === "LocalProfile") &&
auth.integrations.local.enabled &&
(auth.integrations.local.targetFilter.admin ||
auth.integrations.local.targetFilter.stream)
@@ -122,8 +122,8 @@ const enhanced = withLocalStateContainer(
}
}
`,
me: graphql`
fragment AccountCompletionContainer_me on User {
viewer: graphql`
fragment AccountCompletionContainer_viewer on User {
username
email
profiles {
@@ -26,7 +26,7 @@ class LoginContainer extends Component<Props> {
return (
<AccountCompletionContainer
auth={this.props.data.settings.auth}
me={this.props.data.me}
viewer={this.props.data.viewer}
>
<Login
auth={this.props.data.settings.auth}
@@ -40,8 +40,8 @@ class LoginContainer extends Component<Props> {
const enhanced = withRouteConfig<LoginContainerQueryResponse>({
query: graphql`
query LoginContainerQuery {
me {
...AccountCompletionContainer_me
viewer {
...AccountCompletionContainer_viewer
}
settings {
auth {
@@ -25,12 +25,12 @@ async function createTestRenderer(
settings: sinon
.stub()
.returns(merge({}, settings, get(customResolver, "Query.settings"))),
me: sinon
viewer: sinon
.stub()
.returns(
merge(
{ ...users[0], email: "", username: "", profiles: [] },
get(customResolver, "Query.me")
get(customResolver, "Query.viewer")
)
),
},
@@ -63,7 +63,7 @@ it("renders addEmailAddress view", async () => {
it("renders createUsername view", async () => {
const { root } = await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
},
},
@@ -74,7 +74,7 @@ it("renders createUsername view", async () => {
it("renders createPassword view", async () => {
const { root } = await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
},
@@ -86,7 +86,7 @@ it("renders createPassword view", async () => {
it("do not render createPassword view when local auth is disabled", async () => {
await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
},
@@ -112,7 +112,7 @@ it("do not render createPassword view when local auth is disabled", async () =>
it("complete account", async () => {
await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
profiles: [{ __typename: "LocalProfile" }],
@@ -25,7 +25,7 @@ async function createTestRenderer(
settings: sinon
.stub()
.returns(merge({}, settings, get(customResolver, "Query.settings"))),
me: sinon.stub().returns({ ...users[0], email: "" }),
viewer: sinon.stub().returns({ ...users[0], email: "" }),
},
};
@@ -25,7 +25,7 @@ async function createTestRenderer(
settings: sinon
.stub()
.returns(merge({}, settings, get(customResolver, "Query.settings"))),
me: sinon.stub().returns({ ...users[0], profiles: [] }),
viewer: sinon.stub().returns({ ...users[0], profiles: [] }),
},
};
@@ -18,7 +18,7 @@ const resolvers = {
settings: sinon.stub().returns(settings),
moderationQueues: sinon.stub().returns(emptyModerationQueues),
comments: sinon.stub().returns(emptyRejectedComments),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
@@ -31,7 +31,7 @@ function createTestRenderer(
settings: sinon.stub().returns(settings),
moderationQueues: sinon.stub().returns(emptyModerationQueues),
comments: sinon.stub().returns(emptyRejectedComments),
me: sinon.stub().returns({ ...users[0], ...userDiff }),
viewer: sinon.stub().returns({ ...users[0], ...userDiff }),
},
};
const { testRenderer, context } = create({
@@ -21,7 +21,7 @@ const resolvers = {
settings: sinon.stub().returns(settings),
moderationQueues: sinon.stub().returns(emptyModerationQueues),
comments: sinon.stub().returns(emptyRejectedComments),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
@@ -24,7 +24,7 @@ const createTestRenderer = async (resolver: any = {}) => {
settings: sinon
.stub()
.returns(merge({}, settings, get(resolver, "Query.settings"))),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -28,7 +28,7 @@ const createTestRenderer = async (resolver: any = {}) => {
.returns(
merge({}, settingsWithEmptyAuth, get(resolver, "Query.settings"))
),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -29,7 +29,7 @@ const createTestRenderer = async (
settings: sinon
.stub()
.returns(merge({}, settings, get(resolver, "Query.settings"))),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -24,7 +24,7 @@ const createTestRenderer = async (resolver: any = {}) => {
settings: sinon
.stub()
.returns(merge({}, settings, get(resolver, "Query.settings"))),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -24,7 +24,7 @@ const createTestRenderer = async (resolver: any = {}) => {
settings: sinon
.stub()
.returns(merge({}, settings, get(resolver, "Query.settings"))),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -24,7 +24,7 @@ const createTestRenderer = async (resolver: any = {}) => {
settings: sinon
.stub()
.returns(merge({}, settings, get(resolver, "Query.settings"))),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -61,7 +61,7 @@ const createTestRenderer = async (resolver: any = {}) => {
...resolver,
Query: {
...resolver.Query,
me: sinon.stub().returns({
viewer: sinon.stub().returns({
...users[0],
commentModerationActionHistory,
}),
@@ -44,7 +44,7 @@ const createTestRenderer = async (resolver: any = {}) => {
comments:
get(resolver, "Query.comments") ||
sinon.stub().returns(emptyRejectedComments),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
},
};
const { testRenderer } = create({
@@ -1,14 +1,14 @@
import React from "react";
import { graphql, RelayPaginationProp } from "react-relay";
import { DecisionHistoryContainer_me as MeData } from "talk-admin/__generated__/DecisionHistoryContainer_me.graphql";
import { DecisionHistoryContainer_viewer as ViewerData } from "talk-admin/__generated__/DecisionHistoryContainer_viewer.graphql";
import { DecisionHistoryContainerPaginationQueryVariables } from "talk-admin/__generated__/DecisionHistoryContainerPaginationQuery.graphql";
import { withPaginationContainer } from "talk-framework/lib/relay";
import DecisionHistory from "../components/DecisionHistory";
interface DecisionHistoryContainerProps {
me: MeData;
viewer: ViewerData;
relay: RelayPaginationProp;
onClosePopover: () => void;
}
@@ -21,7 +21,7 @@ export class DecisionHistoryContainer extends React.Component<
};
public render() {
const actions = this.props.me.commentModerationActionHistory.edges.map(
const actions = this.props.viewer.commentModerationActionHistory.edges.map(
edge => edge.node
);
return (
@@ -65,8 +65,8 @@ const enhanced = withPaginationContainer<
FragmentVariables
>(
{
me: graphql`
fragment DecisionHistoryContainer_me on User
viewer: graphql`
fragment DecisionHistoryContainer_viewer on User
@argumentDefinitions(
count: { type: "Int!", defaultValue: 5 }
cursor: { type: "Cursor" }
@@ -86,7 +86,7 @@ const enhanced = withPaginationContainer<
{
direction: "forward",
getConnectionFromProps(props) {
return props.me && props.me.commentModerationActionHistory;
return props.viewer && props.viewer.commentModerationActionHistory;
},
// This is also the default implementation of `getFragmentVariables` if it isn't provided.
getFragmentVariables(prevVars, totalCount) {
@@ -108,8 +108,8 @@ const enhanced = withPaginationContainer<
$count: Int!
$cursor: Cursor
) {
me {
...DecisionHistoryContainer_me
viewer {
...DecisionHistoryContainer_viewer
@arguments(count: $count, cursor: $cursor)
}
}
@@ -16,8 +16,8 @@ class DecisionHistoryQuery extends Component<Props> {
<QueryRenderer<QueryTypes>
query={graphql`
query DecisionHistoryQuery {
me {
...DecisionHistoryContainer_me
viewer {
...DecisionHistoryContainer_viewer
}
}
`}
@@ -26,13 +26,13 @@ class DecisionHistoryQuery extends Component<Props> {
if (error) {
return <div>{error.message}</div>;
}
if (!props || !props.me) {
if (!props || !props.viewer) {
return <DecisionHistoryLoading />;
}
return (
<DecisionHistoryContainer
me={props.me}
viewer={props.viewer}
onClosePopover={this.props.onClosePopover}
/>
);
@@ -1,7 +1,7 @@
import { RouteProps } from "found";
import React, { Component } from "react";
import { RestrictedContainer_me as MeData } from "talk-admin/__generated__/RestrictedContainer_me.graphql";
import { RestrictedContainer_viewer as ViewerData } from "talk-admin/__generated__/RestrictedContainer_viewer.graphql";
import {
SetRedirectPathMutation,
withSetRedirectPathMutation,
@@ -13,7 +13,7 @@ import { timeout } from "talk-common/utils";
import Restricted from "../components/Restricted";
interface Props {
me: MeData;
viewer: ViewerData;
error?: Error | null;
signOut: SignOutMutation;
setRedirectPath: SetRedirectPathMutation;
@@ -32,13 +32,13 @@ class RestrictedContainer extends Component<Props> {
};
public render() {
if (!this.props.me) {
if (!this.props.viewer) {
return null;
}
return (
<Restricted
username={this.props.me.username!}
username={this.props.viewer.username!}
onSignInAs={this.handleSignInAs}
/>
);
@@ -46,8 +46,8 @@ class RestrictedContainer extends Component<Props> {
}
const enhanced = withFragmentContainer<Props>({
me: graphql`
fragment RestrictedContainer_me on User {
viewer: graphql`
fragment RestrictedContainer_viewer on User {
username
}
`,
@@ -2,7 +2,7 @@ import * as React from "react";
import { Component } from "react";
import { AccountCompletionContainer_auth as AuthData } from "talk-auth/__generated__/AccountCompletionContainer_auth.graphql";
import { AccountCompletionContainer_me as UserData } from "talk-auth/__generated__/AccountCompletionContainer_me.graphql";
import { AccountCompletionContainer_viewer as UserData } from "talk-auth/__generated__/AccountCompletionContainer_viewer.graphql";
import { AccountCompletionContainerLocal as Local } from "talk-auth/__generated__/AccountCompletionContainerLocal.graphql";
import {
CompleteAccountMutation,
@@ -21,32 +21,32 @@ interface Props {
setView: SetViewMutation;
local: Local;
auth: AuthData;
me: UserData | null;
viewer: UserData | null;
}
function handleAccountCompletion(props: Props) {
const {
local: { view, accessToken },
me,
viewer,
auth,
setView,
completeAccount,
} = props;
if (me) {
if (!me.email) {
if (viewer) {
if (!viewer.email) {
if (view !== "ADD_EMAIL_ADDRESS") {
setView({ view: "ADD_EMAIL_ADDRESS" });
}
return false;
}
if (!me.username) {
if (!viewer.username) {
if (view !== "CREATE_USERNAME") {
setView({ view: "CREATE_USERNAME" });
}
return false;
}
if (
!me.profiles.some(p => p.__typename === "LocalProfile") &&
!viewer.profiles.some(p => p.__typename === "LocalProfile") &&
auth.integrations.local.enabled &&
auth.integrations.local.targetFilter.stream
) {
@@ -109,8 +109,8 @@ const enhanced = withLocalStateContainer(
}
}
`,
me: graphql`
fragment AccountCompletionContainer_me on User {
viewer: graphql`
fragment AccountCompletionContainer_viewer on User {
username
email
profiles {
@@ -2,7 +2,7 @@ import * as React from "react";
import { Component } from "react";
import { AppContainer_auth as AuthData } from "talk-auth/__generated__/AppContainer_auth.graphql";
import { AppContainer_me as UserData } from "talk-auth/__generated__/AppContainer_me.graphql";
import { AppContainer_viewer as UserData } from "talk-auth/__generated__/AppContainer_viewer.graphql";
import { AppContainerLocal as Local } from "talk-auth/__generated__/AppContainerLocal.graphql";
import {
graphql,
@@ -16,7 +16,7 @@ import AccountCompletionContainer from "./AccountCompletionContainer";
interface Props {
local: Local;
auth: AuthData;
me: UserData | null;
viewer: UserData | null;
}
class AppContainer extends Component<Props> {
@@ -24,10 +24,10 @@ class AppContainer extends Component<Props> {
const {
local: { view },
auth,
me,
viewer,
} = this.props;
return (
<AccountCompletionContainer auth={auth} me={me}>
<AccountCompletionContainer auth={auth} viewer={viewer}>
<App view={view} auth={auth} />
</AccountCompletionContainer>
);
@@ -49,9 +49,9 @@ const enhanced = withLocalStateContainer(
...AccountCompletionContainer_auth
}
`,
me: graphql`
fragment AppContainer_me on User {
...AccountCompletionContainer_me
viewer: graphql`
fragment AppContainer_viewer on User {
...AccountCompletionContainer_viewer
}
`,
})(AppContainer)
+5 -3
View File
@@ -11,8 +11,8 @@ export default class AppQuery extends Component {
<QueryRenderer<QueryTypes>
query={graphql`
query AppQuery {
me {
...AppContainer_me
viewer {
...AppContainer_viewer
}
settings {
auth {
@@ -29,7 +29,9 @@ export default class AppQuery extends Component {
if (!props) {
return null;
}
return <AppContainer auth={props.settings.auth} me={props.me} />;
return (
<AppContainer auth={props.settings.auth} viewer={props.viewer} />
);
}}
/>
);
@@ -27,10 +27,10 @@ async function createTestRenderer(
settings: sinon
.stub()
.returns(merge({}, settings, get(customResolver, "Query.settings"))),
me: sinon
viewer: sinon
.stub()
.returns(
merge({ id: "me", profiles: [] }, get(customResolver, "Query.me"))
merge({ id: "me", profiles: [] }, get(customResolver, "Query.viewer"))
),
},
};
@@ -72,7 +72,7 @@ it("renders addEmailAddress view", async () => {
it("renders createUsername view", async () => {
const { root } = await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
},
},
@@ -85,7 +85,7 @@ it("renders createUsername view", async () => {
it("renders createPassword view", async () => {
const { root } = await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
},
@@ -99,7 +99,7 @@ it("renders createPassword view", async () => {
it("do not render createPassword view when local auth is disabled", async () => {
await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
},
@@ -121,7 +121,7 @@ it("do not render createPassword view when local auth is disabled", async () =>
it("send back auth token", async () => {
const { context } = await createTestRenderer({
Query: {
me: {
viewer: {
email: "hans@test.com",
username: "hans",
profiles: [{ __typename: "LocalProfile" }],
@@ -1,12 +1,12 @@
import { Environment } from "relay-runtime";
import getMeSourceID from "./getMeSourceID";
import getViewerSourceID from "./getViewerSourceID";
export default function getMe(environment: Environment) {
const source = environment.getStore().getSource();
const meID = getMeSourceID(environment);
if (!meID) {
const viewerID = getViewerSourceID(environment);
if (!viewerID) {
return null;
}
return source.get(meID)!;
return source.get(viewerID)!;
}
@@ -3,8 +3,8 @@ import { Environment, ROOT_ID } from "relay-runtime";
export default function getMeSourceID(environment: Environment): string | null {
const source = environment.getStore().getSource();
const root = source.get(ROOT_ID)!;
if (!root.me) {
if (!root.viewer) {
return null;
}
return root.me.__ref;
return root.viewer.__ref;
}
+2 -2
View File
@@ -1,5 +1,5 @@
export { default as getMe } from "./getMe";
export { default as getMeSourceID } from "./getMeSourceID";
export { default as getViewer } from "./getViewer";
export { default as getMeSourceID } from "./getViewerSourceID";
export { default as getURLWithCommentID } from "./getURLWithCommentID";
export { default as urls } from "./urls";
export { default as createContextHOC } from "./createContextHOC";
@@ -7,8 +7,8 @@ import {
withLocalStateContainer,
} from "talk-framework/lib/relay";
import { TabBarContainer_me as MeData } from "talk-stream/__generated__/TabBarContainer_me.graphql";
import { TabBarContainer_story as StoryData } from "talk-stream/__generated__/TabBarContainer_story.graphql";
import { TabBarContainer_viewer as ViewerData } from "talk-stream/__generated__/TabBarContainer_viewer.graphql";
import { TabBarContainerLocal as Local } from "talk-stream/__generated__/TabBarContainerLocal.graphql";
import { roleIsAtLeast } from "talk-stream/helpers";
import {
@@ -21,7 +21,7 @@ import TabBar from "../components/TabBar";
interface Props {
story: StoryData | null;
me: MeData | null;
viewer: ViewerData | null;
local: Local;
setActiveTab: SetActiveTabMutation;
}
@@ -44,7 +44,8 @@ export class TabBarContainer extends Component<Props> {
commentCount={commentCount}
showProfileTab={loggedIn}
showConfigureTab={
!!this.props.me && roleIsAtLeast(this.props.me.role, "MODERATOR")
!!this.props.viewer &&
roleIsAtLeast(this.props.viewer.role, "MODERATOR")
}
onTabClick={this.handleSetActiveTab}
/>
@@ -62,8 +63,8 @@ const enhanced = withSetActiveTabMutation(
`
)(
withFragmentContainer<Props>({
me: graphql`
fragment TabBarContainer_me on User {
viewer: graphql`
fragment TabBarContainer_viewer on User {
role
}
`,
@@ -19,7 +19,7 @@ it("renders fully", () => {
},
accessTokenJTI: "JTI",
},
me: null,
viewer: null,
settings: {
auth: {
integrations: {
@@ -76,7 +76,7 @@ it("renders without logout button", () => {
},
accessTokenJTI: null,
},
me: null,
viewer: null,
settings: {
auth: {
integrations: {
@@ -133,7 +133,7 @@ it("renders sso only", () => {
},
accessTokenJTI: "JTI",
},
me: null,
viewer: null,
settings: {
auth: {
integrations: {
@@ -190,7 +190,7 @@ it("renders sso only without logout button", () => {
},
accessTokenJTI: "JTI",
},
me: null,
viewer: null,
settings: {
auth: {
integrations: {
@@ -247,7 +247,7 @@ it("renders without register button", () => {
},
accessTokenJTI: "JTI",
},
me: null,
viewer: null,
settings: {
auth: {
integrations: {
@@ -7,8 +7,8 @@ import {
withLocalStateContainer,
} from "talk-framework/lib/relay";
import { SignOutMutation, withSignOutMutation } from "talk-framework/mutations";
import { UserBoxContainer_me as MeData } from "talk-stream/__generated__/UserBoxContainer_me.graphql";
import { UserBoxContainer_settings as SettingsData } from "talk-stream/__generated__/UserBoxContainer_settings.graphql";
import { UserBoxContainer_viewer as ViewerData } from "talk-stream/__generated__/UserBoxContainer_viewer.graphql";
import { UserBoxContainerLocal as Local } from "talk-stream/__generated__/UserBoxContainerLocal.graphql";
import UserBoxUnauthenticated from "talk-stream/components/UserBoxUnauthenticated";
import {
@@ -24,7 +24,7 @@ import UserBoxAuthenticated from "../components/UserBoxAuthenticated";
interface Props {
local: Local;
me: MeData | null;
viewer: ViewerData | null;
settings: SettingsData;
showAuthPopup: ShowAuthPopupMutation;
setAuthPopupState: SetAuthPopupStateMutation;
@@ -68,14 +68,14 @@ export class UserBoxContainer extends Component<Props> {
local: {
authPopup: { open, focus, view },
},
me,
viewer,
} = this.props;
if (me) {
if (viewer) {
return (
<UserBoxAuthenticated
onSignOut={this.handleSignOut}
username={me.username!}
username={viewer.username!}
showLogoutButton={this.supportsLogout}
/>
);
@@ -125,8 +125,8 @@ const enhanced = withSignOutMutation(
`
)(
withFragmentContainer<Props>({
me: graphql`
fragment UserBoxContainer_me on User {
viewer: graphql`
fragment UserBoxContainer_viewer on User {
username
}
`,
@@ -20,7 +20,7 @@ const mutation = graphql`
createCommentDontAgree(input: $input) {
comment {
id
myActionPresence {
viewerActionPresence {
dontAgree
}
}
@@ -18,7 +18,7 @@ const mutation = graphql`
createCommentFlag(input: $input) {
comment {
id
myActionPresence {
viewerActionPresence {
flag
}
}
@@ -6,7 +6,7 @@ import {
RecordSourceSelectorProxy,
} from "relay-runtime";
import { getMe, getStorySettings } from "talk-framework/helpers";
import { getStorySettings, getViewer } from "talk-framework/helpers";
import { TalkContext } from "talk-framework/lib/bootstrap";
import {
commitMutationPromiseNormalized,
@@ -78,7 +78,7 @@ graphql`
moderation
}
}
fragment CreateCommentMutation_me on User {
fragment CreateCommentMutation_viewer on User {
role
}
`;
@@ -106,7 +106,7 @@ function commit(
input: CreateCommentInput,
{ uuidGenerator, relayEnvironment }: TalkContext
) {
const me = getMe(environment)!;
const me = getViewer(environment)!;
const currentDate = new Date().toISOString();
const id = uuidGenerator();
@@ -44,7 +44,7 @@ function commit(environment: Environment, input: CreateCommentReactionInput) {
createCommentReaction: {
comment: {
id: input.commentID,
myActionPresence: {
viewerActionPresence: {
reaction: true,
},
actionCounts: {
@@ -6,7 +6,7 @@ import {
RecordSourceSelectorProxy,
} from "relay-runtime";
import { getMe, getStorySettings } from "talk-framework/helpers";
import { getStorySettings, getViewer } from "talk-framework/helpers";
import { TalkContext } from "talk-framework/lib/bootstrap";
import {
commitMutationPromiseNormalized,
@@ -106,7 +106,7 @@ graphql`
moderation
}
}
fragment CreateCommentReplyMutation_me on User {
fragment CreateCommentReplyMutation_viewer on User {
role
}
`;
@@ -133,7 +133,7 @@ function commit(
input: CreateCommentReplyInput,
{ uuidGenerator, relayEnvironment }: TalkContext
) {
const me = getMe(environment)!;
const viewer = getViewer(environment)!;
const currentDate = new Date().toISOString();
const id = uuidGenerator();
@@ -144,7 +144,7 @@ function commit(
// TODO: Generate and use schema types.
const expectPremoderation =
!roleIsAtLeast(me.role, "STAFF") && storySettings.moderation === "PRE";
!roleIsAtLeast(viewer.role, "STAFF") && storySettings.moderation === "PRE";
return commitMutationPromiseNormalized<MutationTypes>(environment, {
mutation,
@@ -166,8 +166,8 @@ function commit(
createdAt: currentDate,
status: "NONE",
author: {
id: me.id,
username: me.username,
id: viewer.id,
username: viewer.username,
},
body: input.body,
editing: {
@@ -43,7 +43,7 @@ function commit(environment: Environment, input: RemoveCommentReactionInput) {
removeCommentReaction: {
comment: {
id: input.commentID,
myActionPresence: {
viewerActionPresence: {
reaction: false,
},
actionCounts: {
@@ -21,8 +21,8 @@ class TabBarQuery extends Component<Props> {
<QueryRenderer<QueryTypes>
query={graphql`
query TabBarQuery($storyID: ID, $storyURL: String) {
me {
...TabBarContainer_me
viewer {
...TabBarContainer_viewer
}
story(id: $storyID, url: $storyURL) {
...TabBarContainer_story
@@ -40,7 +40,7 @@ class TabBarQuery extends Component<Props> {
return (
<TabBarContainer
me={(props && props.me) || null}
viewer={(props && props.viewer) || null}
story={(props && props.story) || null}
/>
);
@@ -22,7 +22,7 @@ it("renders correctly", () => {
hasMore: false,
disableShowAll: false,
indentLevel: 1,
me: null,
viewer: null,
localReply: false,
disableReplies: false,
settings: {
@@ -45,7 +45,7 @@ describe("when there is more", () => {
hasMore: true,
disableShowAll: false,
indentLevel: 1,
me: null,
viewer: null,
settings: {
reaction: {
icon: "thumb_up_alt",
@@ -10,7 +10,7 @@ import Indent from "./Indent";
export interface ReplyListProps {
story: PropTypesOf<typeof CommentContainer>["story"];
me: PropTypesOf<typeof CommentContainer>["me"];
viewer: PropTypesOf<typeof CommentContainer>["viewer"];
comment: {
id: string;
};
@@ -41,7 +41,7 @@ const ReplyList: StatelessComponent<ReplyListProps> = props => {
<HorizontalGutter key={comment.id}>
<CommentContainer
key={comment.id}
me={props.me}
viewer={props.viewer}
comment={comment}
story={props.story}
settings={props.settings}
@@ -26,7 +26,7 @@ it("renders correctly", () => {
onLoadMore: noop,
disableLoadMore: false,
hasMore: false,
me: null,
viewer: null,
orderBy: "CREATED_AT_ASC",
onChangeOrderBy: noop,
};
@@ -45,7 +45,7 @@ describe("when use is logged in", () => {
onLoadMore: noop,
disableLoadMore: false,
hasMore: false,
me: {},
viewer: {},
settings: {
reaction: {
icon: "thumb_up_alt",
@@ -76,7 +76,7 @@ describe("when there is more", () => {
onLoadMore: sinon.spy(),
disableLoadMore: false,
hasMore: true,
me: null,
viewer: null,
orderBy: "CREATED_AT_ASC",
onChangeOrderBy: noop,
};
@@ -33,10 +33,10 @@ export interface StreamProps {
onLoadMore?: () => void;
hasMore?: boolean;
disableLoadMore?: boolean;
me:
| PropTypesOf<typeof UserBoxContainer>["me"] &
PropTypesOf<typeof CommentContainer>["me"] &
PropTypesOf<typeof ReplyListContainer>["me"]
viewer:
| PropTypesOf<typeof UserBoxContainer>["viewer"] &
PropTypesOf<typeof CommentContainer>["viewer"] &
PropTypesOf<typeof ReplyListContainer>["viewer"]
| null;
orderBy: PropTypesOf<typeof SortMenu>["orderBy"];
onChangeOrderBy: (e: React.ChangeEvent<HTMLSelectElement>) => void;
@@ -46,7 +46,7 @@ export interface StreamProps {
const Stream: StatelessComponent<StreamProps> = props => {
return (
<HorizontalGutter className={styles.root} size="double">
<UserBoxContainer me={props.me} settings={props.settings} />
<UserBoxContainer viewer={props.viewer} settings={props.settings} />
<CommunityGuidelinesContainer settings={props.settings} />
<PostCommentFormContainer settings={props.settings} story={props.story} />
{props.comments.length > 0 && (
@@ -63,14 +63,14 @@ const Stream: StatelessComponent<StreamProps> = props => {
{props.comments.map(comment => (
<HorizontalGutter key={comment.id}>
<CommentContainer
me={props.me}
viewer={props.viewer}
settings={props.settings}
comment={comment}
story={props.story}
/>
<ReplyListContainer
settings={props.settings}
me={props.me}
viewer={props.viewer}
comment={comment}
story={props.story}
/>
@@ -19,7 +19,6 @@ exports[`renders correctly 1`] = `
indentLevel={1}
key="comment-1"
localReply={false}
me={null}
settings={
Object {
"reaction": Object {
@@ -34,6 +33,7 @@ exports[`renders correctly 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -50,7 +50,6 @@ exports[`renders correctly 1`] = `
indentLevel={1}
key="comment-2"
localReply={false}
me={null}
settings={
Object {
"reaction": Object {
@@ -65,6 +64,7 @@ exports[`renders correctly 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
</ForwardRef(forwardRef)>
@@ -87,7 +87,6 @@ exports[`when there is more disables load more button 1`] = `
}
indentLevel={1}
key="comment-1"
me={null}
settings={
Object {
"reaction": Object {
@@ -102,6 +101,7 @@ exports[`when there is more disables load more button 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -115,7 +115,6 @@ exports[`when there is more disables load more button 1`] = `
}
indentLevel={1}
key="comment-2"
me={null}
settings={
Object {
"reaction": Object {
@@ -130,6 +129,7 @@ exports[`when there is more disables load more button 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<Indent
@@ -171,7 +171,6 @@ exports[`when there is more renders a load more button 1`] = `
}
indentLevel={1}
key="comment-1"
me={null}
settings={
Object {
"reaction": Object {
@@ -186,6 +185,7 @@ exports[`when there is more renders a load more button 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -199,7 +199,6 @@ exports[`when there is more renders a load more button 1`] = `
}
indentLevel={1}
key="comment-2"
me={null}
settings={
Object {
"reaction": Object {
@@ -214,6 +213,7 @@ exports[`when there is more renders a load more button 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<Indent
@@ -6,7 +6,6 @@ exports[`renders correctly 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={null}
settings={
Object {
"reaction": Object {
@@ -15,6 +14,7 @@ exports[`renders correctly 1`] = `
},
}
}
viewer={null}
/>
<Relay(CommunityGuidelinesContainerProps)
settings={
@@ -61,7 +61,6 @@ exports[`renders correctly 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -76,6 +75,7 @@ exports[`renders correctly 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -83,7 +83,6 @@ exports[`renders correctly 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -98,6 +97,7 @@ exports[`renders correctly 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -109,7 +109,6 @@ exports[`renders correctly 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -124,6 +123,7 @@ exports[`renders correctly 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -131,7 +131,6 @@ exports[`renders correctly 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -146,6 +145,7 @@ exports[`renders correctly 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
</ForwardRef(forwardRef)>
@@ -158,7 +158,6 @@ exports[`when there is more disables load more button 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={null}
settings={
Object {
"reaction": Object {
@@ -167,6 +166,7 @@ exports[`when there is more disables load more button 1`] = `
},
}
}
viewer={null}
/>
<Relay(CommunityGuidelinesContainerProps)
settings={
@@ -213,7 +213,6 @@ exports[`when there is more disables load more button 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -228,6 +227,7 @@ exports[`when there is more disables load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -235,7 +235,6 @@ exports[`when there is more disables load more button 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -250,6 +249,7 @@ exports[`when there is more disables load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -261,7 +261,6 @@ exports[`when there is more disables load more button 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -276,6 +275,7 @@ exports[`when there is more disables load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -283,7 +283,6 @@ exports[`when there is more disables load more button 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -298,6 +297,7 @@ exports[`when there is more disables load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<Localized
@@ -324,7 +324,6 @@ exports[`when there is more renders a load more button 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={null}
settings={
Object {
"reaction": Object {
@@ -333,6 +332,7 @@ exports[`when there is more renders a load more button 1`] = `
},
}
}
viewer={null}
/>
<Relay(CommunityGuidelinesContainerProps)
settings={
@@ -379,7 +379,6 @@ exports[`when there is more renders a load more button 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -394,6 +393,7 @@ exports[`when there is more renders a load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -401,7 +401,6 @@ exports[`when there is more renders a load more button 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -416,6 +415,7 @@ exports[`when there is more renders a load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -427,7 +427,6 @@ exports[`when there is more renders a load more button 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -442,6 +441,7 @@ exports[`when there is more renders a load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -449,7 +449,6 @@ exports[`when there is more renders a load more button 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -464,6 +463,7 @@ exports[`when there is more renders a load more button 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</ForwardRef(forwardRef)>
<Localized
@@ -490,7 +490,6 @@ exports[`when use is logged in renders correctly 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={Object {}}
settings={
Object {
"reaction": Object {
@@ -499,6 +498,7 @@ exports[`when use is logged in renders correctly 1`] = `
},
}
}
viewer={Object {}}
/>
<Relay(CommunityGuidelinesContainerProps)
settings={
@@ -545,7 +545,6 @@ exports[`when use is logged in renders correctly 1`] = `
"id": "comment-1",
}
}
me={Object {}}
settings={
Object {
"reaction": Object {
@@ -560,6 +559,7 @@ exports[`when use is logged in renders correctly 1`] = `
"isClosed": false,
}
}
viewer={Object {}}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -567,7 +567,6 @@ exports[`when use is logged in renders correctly 1`] = `
"id": "comment-1",
}
}
me={Object {}}
settings={
Object {
"reaction": Object {
@@ -582,6 +581,7 @@ exports[`when use is logged in renders correctly 1`] = `
"isClosed": false,
}
}
viewer={Object {}}
/>
</ForwardRef(forwardRef)>
<ForwardRef(forwardRef)
@@ -593,7 +593,6 @@ exports[`when use is logged in renders correctly 1`] = `
"id": "comment-2",
}
}
me={Object {}}
settings={
Object {
"reaction": Object {
@@ -608,6 +607,7 @@ exports[`when use is logged in renders correctly 1`] = `
"isClosed": false,
}
}
viewer={Object {}}
/>
<withProps(Relay(ReplyListContainer))
comment={
@@ -615,7 +615,6 @@ exports[`when use is logged in renders correctly 1`] = `
"id": "comment-2",
}
}
me={Object {}}
settings={
Object {
"reaction": Object {
@@ -630,6 +629,7 @@ exports[`when use is logged in renders correctly 1`] = `
"isClosed": false,
}
}
viewer={Object {}}
/>
</ForwardRef(forwardRef)>
</ForwardRef(forwardRef)>
@@ -16,7 +16,7 @@ function createDefaultProps(add: DeepPartial<Props> = {}): Props {
return merge(
{},
{
me: null,
viewer: null,
story: {
url: "http://localhost/story",
isClosed: false,
@@ -7,9 +7,9 @@ import { getURLWithCommentID } from "talk-framework/helpers";
import withFragmentContainer from "talk-framework/lib/relay/withFragmentContainer";
import { PropTypesOf } from "talk-framework/types";
import { CommentContainer_comment as CommentData } from "talk-stream/__generated__/CommentContainer_comment.graphql";
import { CommentContainer_me as MeData } from "talk-stream/__generated__/CommentContainer_me.graphql";
import { CommentContainer_settings as SettingsData } from "talk-stream/__generated__/CommentContainer_settings.graphql";
import { CommentContainer_story as StoryData } from "talk-stream/__generated__/CommentContainer_story.graphql";
import { CommentContainer_viewer as ViewerData } from "talk-stream/__generated__/CommentContainer_viewer.graphql";
import {
SetCommentIDMutation,
ShowAuthPopupMutation,
@@ -32,7 +32,7 @@ import ReplyCommentFormContainer from "./ReplyCommentFormContainer";
import ReportButtonContainer from "./ReportButtonContainer";
interface Props {
me: MeData | null;
viewer: ViewerData | null;
comment: CommentData;
story: StoryData;
settings: SettingsData;
@@ -79,9 +79,9 @@ export class CommentContainer extends Component<Props, State> {
private isEditable() {
const isMyComment = !!(
this.props.me &&
this.props.viewer &&
this.props.comment.author &&
this.props.me.id === this.props.comment.author.id
this.props.viewer.id === this.props.comment.author.id
);
return (
isMyComment && isBeforeDate(this.props.comment.editing.editableUntil)
@@ -89,7 +89,7 @@ export class CommentContainer extends Component<Props, State> {
}
private openReplyDialog = () => {
if (this.props.me) {
if (this.props.viewer) {
this.setState(state => ({
showReplyDialog: true,
}));
@@ -99,7 +99,7 @@ export class CommentContainer extends Component<Props, State> {
};
private openEditDialog = () => {
if (this.props.me) {
if (this.props.viewer) {
this.setState(state => ({
showEditDialog: true,
}));
@@ -145,7 +145,7 @@ export class CommentContainer extends Component<Props, State> {
disableReplies,
showConversationLink,
highlight,
me,
viewer,
} = this.props;
const { showReplyDialog, showEditDialog, editable } = this.state;
if (showEditDialog) {
@@ -219,11 +219,11 @@ export class CommentContainer extends Component<Props, State> {
<ReactionButtonContainer
comment={comment}
settings={settings}
me={me}
viewer={viewer}
/>
</ButtonsBar>
<ButtonsBar>
<ReportButtonContainer comment={comment} me={me} />
<ReportButtonContainer comment={comment} viewer={viewer} />
</ButtonsBar>
</Flex>
{showConversationLink && (
@@ -259,11 +259,11 @@ export class CommentContainer extends Component<Props, State> {
const enhanced = withSetCommentIDMutation(
withShowAuthPopupMutation(
withFragmentContainer<Props>({
me: graphql`
fragment CommentContainer_me on User {
viewer: graphql`
fragment CommentContainer_viewer on User {
id
...ReactionButtonContainer_me
...ReportButtonContainer_me
...ReactionButtonContainer_viewer
...ReportButtonContainer_viewer
}
`,
story: graphql`
@@ -4,15 +4,15 @@ import { graphql } from "react-relay";
import withFragmentContainer from "talk-framework/lib/relay/withFragmentContainer";
import { PropTypesOf } from "talk-framework/types";
import { LocalReplyListContainer_comment as CommentData } from "talk-stream/__generated__/LocalReplyListContainer_comment.graphql";
import { LocalReplyListContainer_me as MeData } from "talk-stream/__generated__/LocalReplyListContainer_me.graphql";
import { LocalReplyListContainer_settings as SettingsData } from "talk-stream/__generated__/LocalReplyListContainer_settings.graphql";
import { LocalReplyListContainer_story as StoryData } from "talk-stream/__generated__/LocalReplyListContainer_story.graphql";
import { LocalReplyListContainer_viewer as ViewerData } from "talk-stream/__generated__/LocalReplyListContainer_viewer.graphql";
import ReplyList from "../components/ReplyList";
interface Props {
indentLevel: number;
me: MeData;
viewer: ViewerData;
story: StoryData;
comment: CommentData;
settings: SettingsData;
@@ -31,7 +31,7 @@ export class LocalReplyListContainer extends Component<Props> {
}
return (
<ReplyList
me={this.props.me}
viewer={this.props.viewer}
settings={this.props.settings}
comment={this.props.comment}
comments={this.props.comment.localReplies}
@@ -44,9 +44,9 @@ export class LocalReplyListContainer extends Component<Props> {
}
const enhanced = withFragmentContainer<Props>({
me: graphql`
fragment LocalReplyListContainer_me on User {
...CommentContainer_me
viewer: graphql`
fragment LocalReplyListContainer_viewer on User {
...CommentContainer_viewer
}
`,
story: graphql`
@@ -2,8 +2,8 @@ import React from "react";
import { graphql } from "react-relay";
import { withFragmentContainer } from "talk-framework/lib/relay";
import { ReactionButtonContainer_comment as CommentData } from "talk-stream/__generated__/ReactionButtonContainer_comment.graphql";
import { ReactionButtonContainer_me as MeData } from "talk-stream/__generated__/ReactionButtonContainer_me.graphql";
import { ReactionButtonContainer_settings as SettingsData } from "talk-stream/__generated__/ReactionButtonContainer_settings.graphql";
import { ReactionButtonContainer_viewer as ViewerData } from "talk-stream/__generated__/ReactionButtonContainer_viewer.graphql";
import {
CreateCommentReactionMutation,
@@ -23,7 +23,7 @@ interface ReactionButtonContainerProps {
removeCommentReaction: RemoveCommentReactionMutation;
comment: CommentData;
settings: SettingsData;
me: MeData | null;
viewer: ViewerData | null;
showAuthPopup: ShowAuthPopupMutation;
}
@@ -33,7 +33,7 @@ class ReactionButtonContainer extends React.Component<
private handleSignIn = () => this.props.showAuthPopup({ view: "SIGN_IN" });
private handleClick = () => {
if (this.props.me === null) {
if (this.props.viewer === null) {
return this.handleSignIn();
}
@@ -44,8 +44,8 @@ class ReactionButtonContainer extends React.Component<
const { createCommentReaction, removeCommentReaction } = this.props;
const reacted =
this.props.comment.myActionPresence &&
this.props.comment.myActionPresence.reaction;
this.props.comment.viewerActionPresence &&
this.props.comment.viewerActionPresence.reaction;
return reacted
? removeCommentReaction(input)
@@ -63,8 +63,8 @@ class ReactionButtonContainer extends React.Component<
} = this.props.settings;
const reacted =
this.props.comment.myActionPresence &&
this.props.comment.myActionPresence.reaction;
this.props.comment.viewerActionPresence &&
this.props.comment.viewerActionPresence.reaction;
return (
<ReactionButton
@@ -84,8 +84,8 @@ export default withShowAuthPopupMutation(
withRemoveCommentReactionMutation(
withCreateCommentReactionMutation(
withFragmentContainer<ReactionButtonContainerProps>({
me: graphql`
fragment ReactionButtonContainer_me on User {
viewer: graphql`
fragment ReactionButtonContainer_viewer on User {
id
}
`,
@@ -95,7 +95,7 @@ export default withShowAuthPopupMutation(
revision {
id
}
myActionPresence {
viewerActionPresence {
reaction
}
actionCounts {
@@ -33,7 +33,7 @@ it("renders correctly", () => {
hasMore: noop,
isLoading: noop,
} as any,
me: null,
viewer: null,
indentLevel: 1,
ReplyListComponent: () => null,
localReply: false,
@@ -56,7 +56,7 @@ it("renders correctly when replies are empty", () => {
hasMore: noop,
isLoading: noop,
} as any,
me: null,
viewer: null,
settings: {
reaction: {
icon: "thumb_up_alt",
@@ -95,7 +95,7 @@ describe("when has more replies", () => {
isLoading: () => false,
loadMore: (_: any, callback: () => void) => (finishLoading = callback),
} as any,
me: null,
viewer: null,
indentLevel: 1,
ReplyListComponent: undefined,
localReply: false,
@@ -5,9 +5,9 @@ import { withProps } from "recompose";
import { withPaginationContainer } from "talk-framework/lib/relay";
import { PropTypesOf } from "talk-framework/types";
import { ReplyListContainer1_comment as CommentData } from "talk-stream/__generated__/ReplyListContainer1_comment.graphql";
import { ReplyListContainer1_me as MeData } from "talk-stream/__generated__/ReplyListContainer1_me.graphql";
import { ReplyListContainer1_settings as SettingsData } from "talk-stream/__generated__/ReplyListContainer1_settings.graphql";
import { ReplyListContainer1_story as StoryData } from "talk-stream/__generated__/ReplyListContainer1_story.graphql";
import { ReplyListContainer1_viewer as ViewerData } from "talk-stream/__generated__/ReplyListContainer1_viewer.graphql";
import {
COMMENT_SORT,
ReplyListContainer1PaginationQueryVariables,
@@ -24,7 +24,7 @@ type UnpackArray<T> = T extends ReadonlyArray<infer U> ? U : any;
type ReplyNode5 = UnpackArray<Comment5Data["replies"]["edges"]>["node"];
interface BaseProps {
me: MeData | null;
viewer: ViewerData | null;
story: StoryData;
comment: CommentData;
settings: SettingsData;
@@ -68,7 +68,7 @@ export class ReplyListContainer extends React.Component<Props> {
...edge.node,
replyListElement: this.props.ReplyListComponent && (
<this.props.ReplyListComponent
me={this.props.me}
viewer={this.props.viewer}
comment={edge.node}
story={this.props.story}
settings={this.props.settings}
@@ -80,7 +80,7 @@ export class ReplyListContainer extends React.Component<Props> {
}));
return (
<ReplyList
me={this.props.me}
viewer={this.props.viewer}
comment={this.props.comment}
comments={comments}
story={this.props.story}
@@ -116,7 +116,7 @@ export class ReplyListContainer extends React.Component<Props> {
function createReplyListContainer(
indentLevel: number,
fragments: {
me: GraphQLTaggedNode;
viewer: GraphQLTaggedNode;
story: GraphQLTaggedNode;
comment: GraphQLTaggedNode;
settings: GraphQLTaggedNode;
@@ -165,10 +165,10 @@ const LastReplyList: StatelessComponent<
const ReplyListContainer5 = createReplyListContainer(
5,
{
me: graphql`
fragment ReplyListContainer5_me on User {
...CommentContainer_me
...LocalReplyListContainer_me
viewer: graphql`
fragment ReplyListContainer5_viewer on User {
...CommentContainer_viewer
...LocalReplyListContainer_viewer
}
`,
settings: graphql`
@@ -228,10 +228,10 @@ const ReplyListContainer5 = createReplyListContainer(
const ReplyListContainer4 = createReplyListContainer(
4,
{
me: graphql`
fragment ReplyListContainer4_me on User {
...ReplyListContainer5_me
...CommentContainer_me
viewer: graphql`
fragment ReplyListContainer4_viewer on User {
...ReplyListContainer5_viewer
...CommentContainer_viewer
}
`,
settings: graphql`
@@ -289,10 +289,10 @@ const ReplyListContainer4 = createReplyListContainer(
const ReplyListContainer3 = createReplyListContainer(
3,
{
me: graphql`
fragment ReplyListContainer3_me on User {
...ReplyListContainer4_me
...CommentContainer_me
viewer: graphql`
fragment ReplyListContainer3_viewer on User {
...ReplyListContainer4_viewer
...CommentContainer_viewer
}
`,
settings: graphql`
@@ -350,10 +350,10 @@ const ReplyListContainer3 = createReplyListContainer(
const ReplyListContainer2 = createReplyListContainer(
2,
{
me: graphql`
fragment ReplyListContainer2_me on User {
...ReplyListContainer3_me
...CommentContainer_me
viewer: graphql`
fragment ReplyListContainer2_viewer on User {
...ReplyListContainer3_viewer
...CommentContainer_viewer
}
`,
settings: graphql`
@@ -411,10 +411,10 @@ const ReplyListContainer2 = createReplyListContainer(
const ReplyListContainer1 = createReplyListContainer(
1,
{
me: graphql`
fragment ReplyListContainer1_me on User {
...ReplyListContainer2_me
...CommentContainer_me
viewer: graphql`
fragment ReplyListContainer1_viewer on User {
...ReplyListContainer2_viewer
...CommentContainer_viewer
}
`,
settings: graphql`
@@ -3,7 +3,7 @@ import { graphql } from "react-relay";
import { withFragmentContainer } from "talk-framework/lib/relay";
import { ReportButtonContainer_comment as CommentData } from "talk-stream/__generated__/ReportButtonContainer_comment.graphql";
import { ReportButtonContainer_me as MeData } from "talk-stream/__generated__/ReportButtonContainer_me.graphql";
import { ReportButtonContainer_viewer as ViewerData } from "talk-stream/__generated__/ReportButtonContainer_viewer.graphql";
import {
ReportButton,
@@ -17,7 +17,7 @@ import {
interface ReportButtonContainerProps {
comment: CommentData;
me: MeData | null;
viewer: ViewerData | null;
showAuthPopup: ShowAuthPopupMutation;
}
@@ -25,15 +25,15 @@ class ReportButtonContainer extends React.Component<
ReportButtonContainerProps
> {
private get loggedIn() {
return this.props.me;
return this.props.viewer;
}
private handleSignIn = () => this.props.showAuthPopup({ view: "SIGN_IN" });
public render() {
const reported =
this.props.comment.myActionPresence &&
(this.props.comment.myActionPresence.flag ||
this.props.comment.myActionPresence.dontAgree);
this.props.comment.viewerActionPresence &&
(this.props.comment.viewerActionPresence.flag ||
this.props.comment.viewerActionPresence.dontAgree);
return this.loggedIn ? (
<ReportButtonWithPopover
@@ -48,8 +48,8 @@ class ReportButtonContainer extends React.Component<
export default withShowAuthPopupMutation(
withFragmentContainer<ReportButtonContainerProps>({
me: graphql`
fragment ReportButtonContainer_me on User {
viewer: graphql`
fragment ReportButtonContainer_viewer on User {
id
}
`,
@@ -57,7 +57,7 @@ export default withShowAuthPopupMutation(
fragment ReportButtonContainer_comment on Comment {
...ReportCommentFormContainer_comment
id
myActionPresence {
viewerActionPresence {
dontAgree
flag
}
@@ -20,7 +20,7 @@ it("renders correctly", () => {
edges: [{ node: { id: "comment-1" } }, { node: { id: "comment-2" } }],
},
},
me: null,
viewer: null,
settings: {
reaction: {
icon: "thumb_up_alt",
@@ -47,7 +47,7 @@ describe("when has more comments", () => {
edges: [{ node: { id: "comment-1" } }, { node: { id: "comment-2" } }],
},
},
me: null,
viewer: null,
settings: {
reaction: {
icon: "thumb_up_alt",
@@ -3,9 +3,9 @@ import { graphql, RelayPaginationProp } from "react-relay";
import { withPaginationContainer } from "talk-framework/lib/relay";
import { PropTypesOf } from "talk-framework/types";
import { StreamContainer_me as MeData } from "talk-stream/__generated__/StreamContainer_me.graphql";
import { StreamContainer_settings as SettingsData } from "talk-stream/__generated__/StreamContainer_settings.graphql";
import { StreamContainer_story as StoryData } from "talk-stream/__generated__/StreamContainer_story.graphql";
import { StreamContainer_viewer as ViewerData } from "talk-stream/__generated__/StreamContainer_viewer.graphql";
import {
COMMENT_SORT,
StreamContainerPaginationQueryVariables,
@@ -17,7 +17,7 @@ import Stream from "../components/Stream";
interface Props {
story: StoryData;
settings: SettingsData;
me: MeData | null;
viewer: ViewerData | null;
relay: RelayPaginationProp;
defaultOrderBy: COMMENT_SORT;
}
@@ -69,7 +69,7 @@ export class StreamContainer extends React.Component<Props> {
onLoadMore={this.loadMore}
hasMore={this.props.relay.hasMore()}
disableLoadMore={this.state.disableLoadMore}
me={this.props.me}
viewer={this.props.viewer}
orderBy={this.orderBy}
onChangeOrderBy={this.handleOnChangeOrderBy}
refetching={this.state.refetching}
@@ -134,13 +134,13 @@ const enhanced = withPaginationContainer<
...CreateCommentMutation_story
}
`,
me: graphql`
fragment StreamContainer_me on User {
...ReplyListContainer1_me
...CommentContainer_me
...UserBoxContainer_me
...CreateCommentReplyMutation_me
...CreateCommentMutation_me
viewer: graphql`
fragment StreamContainer_viewer on User {
...ReplyListContainer1_viewer
...CommentContainer_viewer
...UserBoxContainer_viewer
...CreateCommentReplyMutation_viewer
...CreateCommentMutation_viewer
}
`,
settings: graphql`
@@ -43,7 +43,6 @@ exports[`hide reply button 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -51,6 +50,7 @@ exports[`hide reply button 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -73,7 +73,7 @@ exports[`hide reply button 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -137,7 +137,6 @@ exports[`renders body only 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -145,6 +144,7 @@ exports[`renders body only 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -167,7 +167,7 @@ exports[`renders body only 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -231,7 +231,6 @@ exports[`renders disabled reply when commenting has been disabled 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -239,6 +238,7 @@ exports[`renders disabled reply when commenting has been disabled 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -261,7 +261,7 @@ exports[`renders disabled reply when commenting has been disabled 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -325,7 +325,6 @@ exports[`renders disabled reply when story is closed 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -333,6 +332,7 @@ exports[`renders disabled reply when story is closed 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -355,7 +355,7 @@ exports[`renders disabled reply when story is closed 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -423,7 +423,6 @@ exports[`renders in reply to 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -431,6 +430,7 @@ exports[`renders in reply to 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -457,7 +457,7 @@ exports[`renders in reply to 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -521,7 +521,6 @@ exports[`renders username and body 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -529,6 +528,7 @@ exports[`renders username and body 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -551,7 +551,7 @@ exports[`renders username and body 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -615,7 +615,6 @@ exports[`shows conversation link 1`] = `
"status": "NONE",
}
}
me={null}
settings={
Object {
"disableCommenting": Object {
@@ -623,6 +622,7 @@ exports[`shows conversation link 1`] = `
},
}
}
viewer={null}
/>
</ButtonsBar>
<ButtonsBar>
@@ -645,7 +645,7 @@ exports[`shows conversation link 1`] = `
"status": "NONE",
}
}
me={null}
viewer={null}
/>
</ButtonsBar>
</ForwardRef(forwardRef)>
@@ -32,7 +32,6 @@ exports[`renders correctly 1`] = `
"id": "comment-1",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -46,6 +45,7 @@ exports[`renders correctly 1`] = `
"id": "story-id",
}
}
viewer={null}
/>,
"showConversationLink": false,
},
@@ -57,7 +57,6 @@ exports[`renders correctly 1`] = `
"id": "comment-2",
}
}
me={null}
settings={
Object {
"reaction": Object {
@@ -71,6 +70,7 @@ exports[`renders correctly 1`] = `
"id": "story-id",
}
}
viewer={null}
/>,
"showConversationLink": false,
},
@@ -79,7 +79,6 @@ exports[`renders correctly 1`] = `
disableShowAll={false}
indentLevel={1}
localReply={false}
me={null}
onShowAll={[Function]}
settings={
Object {
@@ -94,6 +93,7 @@ exports[`renders correctly 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
`;
@@ -139,7 +139,6 @@ exports[`when has more replies renders hasMore 1`] = `
hasMore={true}
indentLevel={1}
localReply={false}
me={null}
onShowAll={[Function]}
settings={
Object {
@@ -154,6 +153,7 @@ exports[`when has more replies renders hasMore 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
`;
@@ -197,7 +197,6 @@ exports[`when has more replies when showing all disables show all button 1`] = `
hasMore={true}
indentLevel={1}
localReply={false}
me={null}
onShowAll={[Function]}
settings={
Object {
@@ -212,6 +211,7 @@ exports[`when has more replies when showing all disables show all button 1`] = `
"id": "story-id",
}
}
viewer={null}
/>
`;
@@ -255,7 +255,6 @@ exports[`when has more replies when showing all enable show all button after loa
hasMore={true}
indentLevel={1}
localReply={false}
me={null}
onShowAll={[Function]}
settings={
Object {
@@ -270,5 +269,6 @@ exports[`when has more replies when showing all enable show all button after loa
"id": "story-id",
}
}
viewer={null}
/>
`;
@@ -36,7 +36,6 @@ exports[`renders correctly 1`] = `
]
}
disableLoadMore={false}
me={null}
onChangeOrderBy={[Function]}
onLoadMore={[Function]}
orderBy="CREATED_AT_ASC"
@@ -69,6 +68,7 @@ exports[`renders correctly 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</Fragment>
`;
@@ -110,7 +110,6 @@ exports[`when has more comments renders hasMore 1`] = `
}
disableLoadMore={false}
hasMore={true}
me={null}
onChangeOrderBy={[Function]}
onLoadMore={[Function]}
orderBy="CREATED_AT_ASC"
@@ -143,6 +142,7 @@ exports[`when has more comments renders hasMore 1`] = `
"isClosed": false,
}
}
viewer={null}
/>
</Fragment>
`;
@@ -184,7 +184,6 @@ exports[`when has more comments when loading more disables load more button 1`]
}
disableLoadMore={true}
hasMore={true}
me={null}
onChangeOrderBy={[Function]}
onLoadMore={[Function]}
orderBy="CREATED_AT_ASC"
@@ -217,6 +216,7 @@ exports[`when has more comments when loading more disables load more button 1`]
"isClosed": false,
}
}
viewer={null}
/>
</Fragment>
`;
@@ -258,7 +258,6 @@ exports[`when has more comments when loading more enable load more button after
}
disableLoadMore={false}
hasMore={true}
me={null}
onChangeOrderBy={[Function]}
onLoadMore={[Function]}
orderBy="CREATED_AT_ASC"
@@ -291,6 +290,7 @@ exports[`when has more comments when loading more enable load more button after
"isClosed": false,
}
}
viewer={null}
/>
</Fragment>
`;
@@ -34,7 +34,7 @@ export const render = (
return (
<StreamContainer
settings={data.props.settings}
me={data.props.me}
viewer={data.props.viewer}
story={data.props.story}
defaultOrderBy={defaultStreamOrderBy}
/>
@@ -60,8 +60,8 @@ const StreamQuery: StatelessComponent<Props> = props => {
$storyURL: String
$streamOrderBy: COMMENT_SORT
) {
me {
...StreamContainer_me
viewer {
...StreamContainer_viewer
}
story(id: $storyID, url: $storyURL) {
...StreamContainer_story @arguments(orderBy: $streamOrderBy)
@@ -13,7 +13,7 @@ describe("with 2 remaining parent comments", () => {
it("renders correctly", () => {
const props: PropTypesOf<typeof ConversationThreadN> = {
className: "root",
me: {},
viewer: {},
story: {},
settings: {},
comment: {},
@@ -34,7 +34,7 @@ describe("with 2 remaining parent comments", () => {
it("renders with disabled load more", () => {
const props: PropTypesOf<typeof ConversationThreadN> = {
className: "root",
me: {},
viewer: {},
story: {},
settings: {},
comment: {},
@@ -57,7 +57,7 @@ describe("with 2 remaining parent comments", () => {
it("renders with no parent comments", () => {
const props: PropTypesOf<typeof ConversationThreadN> = {
className: "root",
me: {},
viewer: {},
story: {},
settings: {},
comment: {},
@@ -14,8 +14,8 @@ import { Circle, Line } from "./Timeline";
export interface ConversationThreadProps {
className?: string;
me: PropTypesOf<typeof CommentContainer>["me"] &
(PropTypesOf<typeof LocalReplyListContainer>["me"] | null);
viewer: PropTypesOf<typeof CommentContainer>["viewer"] &
(PropTypesOf<typeof LocalReplyListContainer>["viewer"] | null);
story: PropTypesOf<typeof CommentContainer>["story"] &
PropTypesOf<typeof LocalReplyListContainer>["story"];
settings: PropTypesOf<typeof CommentContainer>["settings"] &
@@ -49,7 +49,7 @@ const ConversationThread: StatelessComponent<
comment={props.comment}
story={props.story}
settings={props.settings}
me={props.me}
viewer={props.viewer}
highlight
/>
</div>
@@ -94,14 +94,14 @@ const ConversationThread: StatelessComponent<
<CommentContainer
comment={parent}
story={props.story}
me={props.me}
viewer={props.viewer}
settings={props.settings}
localReply
/>
{props.me && (
{props.viewer && (
<LocalReplyListContainer
story={props.story}
me={props.me}
viewer={props.viewer}
settings={props.settings}
comment={parent}
indentLevel={1}
@@ -114,7 +114,7 @@ const ConversationThread: StatelessComponent<
comment={props.comment}
story={props.story}
settings={props.settings}
me={props.me}
viewer={props.viewer}
highlight
/>
</Circle>
@@ -11,7 +11,7 @@ const PermalinkViewN = removeFragmentRefs(PermalinkView);
it("renders correctly", () => {
const props: PropTypesOf<typeof PermalinkViewN> = {
me: {},
viewer: {},
story: {},
settings: {},
comment: {},
@@ -25,7 +25,7 @@ it("renders correctly", () => {
it("renders comment not found", () => {
const props: PropTypesOf<typeof PermalinkViewN> = {
me: {},
viewer: {},
story: {},
settings: {},
comment: null,
@@ -12,9 +12,9 @@ import ConversationThreadContainer from "../containers/ConversationThreadContain
import styles from "./PermalinkView.css";
export interface PermalinkViewProps {
me: PropTypesOf<typeof ConversationThreadContainer>["me"] &
PropTypesOf<typeof ReplyListContainer>["me"] &
PropTypesOf<typeof UserBoxContainer>["me"];
viewer: PropTypesOf<typeof ConversationThreadContainer>["viewer"] &
PropTypesOf<typeof ReplyListContainer>["viewer"] &
PropTypesOf<typeof UserBoxContainer>["viewer"];
story: PropTypesOf<typeof ConversationThreadContainer>["story"] &
PropTypesOf<typeof ReplyListContainer>["story"];
comment:
@@ -34,11 +34,11 @@ const PermalinkView: StatelessComponent<PermalinkViewProps> = ({
settings,
story,
onShowAllComments,
me,
viewer,
}) => {
return (
<HorizontalGutter className={styles.root} size="double">
<UserBoxContainer me={me} settings={settings} />
<UserBoxContainer viewer={viewer} settings={settings} />
<Flex alignItems="center" justifyContent="center" direction="column">
<Localized id="comments-permalinkView-currentViewing">
<Typography className={styles.title1}>
@@ -71,14 +71,14 @@ const PermalinkView: StatelessComponent<PermalinkViewProps> = ({
{comment && (
<HorizontalGutter>
<ConversationThreadContainer
me={me}
viewer={viewer}
comment={comment}
story={story}
settings={settings}
/>
<div className={styles.replyList}>
<ReplyListContainer
me={me}
viewer={viewer}
comment={comment}
story={story}
settings={settings}
@@ -8,9 +8,9 @@ exports[`renders with no parent comments 1`] = `
<withContext(createMutationContainer(withContext(createMutationContainer(Relay(CommentContainer)))))
comment={Object {}}
highlight={true}
me={Object {}}
settings={Object {}}
story={Object {}}
viewer={Object {}}
/>
</div>
`;
@@ -70,9 +70,9 @@ exports[`with 2 remaining parent comments renders correctly 1`] = `
<withContext(createMutationContainer(withContext(createMutationContainer(Relay(CommentContainer)))))
comment={Object {}}
highlight={true}
me={Object {}}
settings={Object {}}
story={Object {}}
viewer={Object {}}
/>
</Circle>
</ForwardRef(forwardRef)>
@@ -134,9 +134,9 @@ exports[`with 2 remaining parent comments renders with disabled load more 1`] =
<withContext(createMutationContainer(withContext(createMutationContainer(Relay(CommentContainer)))))
comment={Object {}}
highlight={true}
me={Object {}}
settings={Object {}}
story={Object {}}
viewer={Object {}}
/>
</Circle>
</ForwardRef(forwardRef)>
@@ -6,8 +6,8 @@ exports[`renders comment not found 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={Object {}}
settings={Object {}}
viewer={Object {}}
/>
<ForwardRef(forwardRef)
alignItems="center"
@@ -63,8 +63,8 @@ exports[`renders correctly 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={Object {}}
settings={Object {}}
viewer={Object {}}
/>
<ForwardRef(forwardRef)
alignItems="center"
@@ -107,18 +107,18 @@ exports[`renders correctly 1`] = `
<ForwardRef(forwardRef)>
<withContext(withContext(createMutationContainer(Relay(ConversationThreadContainer))))
comment={Object {}}
me={Object {}}
settings={Object {}}
story={Object {}}
viewer={Object {}}
/>
<div
className="PermalinkView-replyList"
>
<withProps(Relay(ReplyListContainer))
comment={Object {}}
me={Object {}}
settings={Object {}}
story={Object {}}
viewer={Object {}}
/>
</div>
</ForwardRef(forwardRef)>
@@ -5,9 +5,9 @@ import { graphql, RelayPaginationProp } from "react-relay";
import { withContext } from "talk-framework/lib/bootstrap";
import { withPaginationContainer } from "talk-framework/lib/relay";
import { ConversationThreadContainer_comment as CommentData } from "talk-stream/__generated__/ConversationThreadContainer_comment.graphql";
import { ConversationThreadContainer_me as MeData } from "talk-stream/__generated__/ConversationThreadContainer_me.graphql";
import { ConversationThreadContainer_settings as SettingsData } from "talk-stream/__generated__/ConversationThreadContainer_settings.graphql";
import { ConversationThreadContainer_story as StoryData } from "talk-stream/__generated__/ConversationThreadContainer_story.graphql";
import { ConversationThreadContainer_viewer as ViewerData } from "talk-stream/__generated__/ConversationThreadContainer_viewer.graphql";
import { ConversationThreadContainerPaginationQueryVariables } from "talk-stream/__generated__/ConversationThreadContainerPaginationQuery.graphql";
import {
SetCommentIDMutation,
@@ -20,7 +20,7 @@ interface ConversationThreadContainerProps {
comment: CommentData;
story: StoryData;
settings: SettingsData;
me: MeData | null;
viewer: ViewerData | null;
setCommentID: SetCommentIDMutation;
pym: PymChild | undefined;
relay: RelayPaginationProp;
@@ -51,11 +51,11 @@ class ConversationThreadContainer extends React.Component<
};
public render() {
const { comment, story, me, settings } = this.props;
const { comment, story, viewer, settings } = this.props;
const hasMore = this.props.relay.hasMore();
return (
<ConversationThread
me={me}
viewer={viewer}
story={story}
comment={comment}
settings={settings}
@@ -136,10 +136,10 @@ const enhanced = withContext(ctx => ({
}
}
`,
me: graphql`
fragment ConversationThreadContainer_me on User {
...CommentContainer_me
...LocalReplyListContainer_me
viewer: graphql`
fragment ConversationThreadContainer_viewer on User {
...CommentContainer_viewer
...LocalReplyListContainer_viewer
}
`,
},
@@ -6,9 +6,9 @@ import { getURLWithCommentID } from "talk-framework/helpers";
import { withContext } from "talk-framework/lib/bootstrap";
import { withFragmentContainer } from "talk-framework/lib/relay";
import { PermalinkViewContainer_comment as CommentData } from "talk-stream/__generated__/PermalinkViewContainer_comment.graphql";
import { PermalinkViewContainer_me as MeData } from "talk-stream/__generated__/PermalinkViewContainer_me.graphql";
import { PermalinkViewContainer_settings as SettingsData } from "talk-stream/__generated__/PermalinkViewContainer_settings.graphql";
import { PermalinkViewContainer_story as StoryData } from "talk-stream/__generated__/PermalinkViewContainer_story.graphql";
import { PermalinkViewContainer_viewer as ViewerData } from "talk-stream/__generated__/PermalinkViewContainer_viewer.graphql";
import {
SetCommentIDMutation,
withSetCommentIDMutation,
@@ -20,7 +20,7 @@ interface PermalinkViewContainerProps {
comment: CommentData | null;
story: StoryData;
settings: SettingsData;
me: MeData | null;
viewer: ViewerData | null;
setCommentID: SetCommentIDMutation;
pym: PymChild | undefined;
}
@@ -45,10 +45,10 @@ class PermalinkViewContainer extends React.Component<
}
public render() {
const { comment, story, me, settings } = this.props;
const { comment, story, viewer, settings } = this.props;
return (
<PermalinkView
me={me}
viewer={viewer}
story={story}
comment={comment}
settings={settings}
@@ -77,11 +77,11 @@ const enhanced = withContext(ctx => ({
...ReplyListContainer1_comment
}
`,
me: graphql`
fragment PermalinkViewContainer_me on User {
...ConversationThreadContainer_me
...ReplyListContainer1_me
...UserBoxContainer_me
viewer: graphql`
fragment PermalinkViewContainer_viewer on User {
...ConversationThreadContainer_viewer
...ReplyListContainer1_viewer
...UserBoxContainer_viewer
}
`,
settings: graphql`
@@ -35,7 +35,7 @@ export const render = ({
}
return (
<PermalinkViewContainer
me={props.me}
viewer={props.viewer}
settings={props.settings}
comment={props.comment}
story={props.story}
@@ -59,8 +59,8 @@ const PermalinkViewQuery: StatelessComponent<Props> = ({
$storyID: ID
$storyURL: String
) {
me {
...PermalinkViewContainer_me
viewer {
...PermalinkViewContainer_viewer
}
story(id: $storyID, url: $storyURL) {
...PermalinkViewContainer_story
@@ -9,7 +9,7 @@ import OpenOrCloseStreamContainer from "../containers/OpenOrCloseStreamContainer
import HorizontalRule from "./HorizontalRule";
export interface Props {
me: PropTypesOf<typeof UserBoxContainer>["me"];
viewer: PropTypesOf<typeof UserBoxContainer>["viewer"];
settings: PropTypesOf<typeof UserBoxContainer>["settings"];
story: PropTypesOf<typeof ConfigureStreamContainer>["story"] &
PropTypesOf<typeof OpenOrCloseStreamContainer>["story"];
@@ -19,7 +19,7 @@ const Configure: StatelessComponent<Props> = props => {
return (
<div>
<HorizontalGutter size="double">
<UserBoxContainer me={props.me} settings={props.settings} />
<UserBoxContainer viewer={props.viewer} settings={props.settings} />
<ConfigureStreamContainer story={props.story} />
</HorizontalGutter>
<HorizontalRule />
@@ -2,14 +2,14 @@ import React from "react";
import { graphql } from "react-relay";
import { withFragmentContainer } from "talk-framework/lib/relay";
import { ConfigureContainer_me as MeData } from "talk-stream/__generated__/ConfigureContainer_me.graphql";
import { ConfigureContainer_settings as SettingsData } from "talk-stream/__generated__/ConfigureContainer_settings.graphql";
import { ConfigureContainer_story as StoryData } from "talk-stream/__generated__/ConfigureContainer_story.graphql";
import { ConfigureContainer_viewer as ViewerData } from "talk-stream/__generated__/ConfigureContainer_viewer.graphql";
import Configure from "../components/Configure";
interface ConfigureContainerProps {
me: MeData;
viewer: ViewerData;
settings: SettingsData;
story: StoryData;
}
@@ -20,7 +20,7 @@ export class StreamContainer extends React.Component<ConfigureContainerProps> {
<Configure
story={this.props.story}
settings={this.props.settings}
me={this.props.me}
viewer={this.props.viewer}
/>
);
}
@@ -32,9 +32,9 @@ const enhanced = withFragmentContainer<ConfigureContainerProps>({
...OpenOrCloseStreamContainer_story
}
`,
me: graphql`
fragment ConfigureContainer_me on User {
...UserBoxContainer_me
viewer: graphql`
fragment ConfigureContainer_viewer on User {
...UserBoxContainer_viewer
}
`,
settings: graphql`
@@ -37,7 +37,7 @@ export const render = ({
preloadConfigureContainer();
if (props) {
if (!props.me) {
if (!props.viewer) {
return (
<Localized id="configure-configureQuery-errorLoadingConfigure">
<div>Error loading configure</div>
@@ -54,7 +54,7 @@ export const render = ({
return (
<Suspense fallback={<Spinner />}>
<LazyConfigureContainer
me={props.me}
viewer={props.viewer}
story={props.story}
settings={props.settings}
/>
@@ -78,8 +78,8 @@ const ConfigureQuery: StatelessComponent<Props> = ({
story(id: $storyID, url: $storyURL) {
...ConfigureContainer_story
}
me {
...ConfigureContainer_me
viewer {
...ConfigureContainer_viewer
}
settings {
...ConfigureContainer_settings
@@ -11,7 +11,7 @@ const ProfileN = removeFragmentRefs(Profile);
it("renders correctly", () => {
const props: PropTypesOf<typeof ProfileN> = {
story: {},
me: {},
viewer: {},
settings: {},
};
const renderer = createRenderer();
@@ -7,16 +7,16 @@ import CommentHistoryContainer from "../containers/CommentHistoryContainer";
export interface ProfileProps {
story: PropTypesOf<typeof CommentHistoryContainer>["story"];
me: PropTypesOf<typeof UserBoxContainer>["me"] &
PropTypesOf<typeof CommentHistoryContainer>["me"];
viewer: PropTypesOf<typeof UserBoxContainer>["viewer"] &
PropTypesOf<typeof CommentHistoryContainer>["viewer"];
settings: PropTypesOf<typeof UserBoxContainer>["settings"];
}
const Profile: StatelessComponent<ProfileProps> = props => {
return (
<HorizontalGutter size="double">
<UserBoxContainer me={props.me} settings={props.settings} />
<CommentHistoryContainer me={props.me} story={props.story} />
<UserBoxContainer viewer={props.viewer} settings={props.settings} />
<CommentHistoryContainer viewer={props.viewer} story={props.story} />
</HorizontalGutter>
);
};
@@ -5,12 +5,12 @@ exports[`renders correctly 1`] = `
size="double"
>
<withContext(createMutationContainer(withContext(createMutationContainer(withContext(createMutationContainer(withContext(withLocalStateContainer(Relay(UserBoxContainer)))))))))
me={Object {}}
settings={Object {}}
viewer={Object {}}
/>
<Relay(CommentHistoryContainer)
me={Object {}}
story={Object {}}
viewer={Object {}}
/>
</ForwardRef(forwardRef)>
`;
@@ -2,14 +2,14 @@ import React from "react";
import { graphql, RelayPaginationProp } from "react-relay";
import { withPaginationContainer } from "talk-framework/lib/relay";
import { CommentHistoryContainer_me as MeData } from "talk-stream/__generated__/CommentHistoryContainer_me.graphql";
import { CommentHistoryContainer_story as StoryData } from "talk-stream/__generated__/CommentHistoryContainer_story.graphql";
import { CommentHistoryContainer_viewer as ViewerData } from "talk-stream/__generated__/CommentHistoryContainer_viewer.graphql";
import { CommentHistoryContainerPaginationQueryVariables } from "talk-stream/__generated__/CommentHistoryContainerPaginationQuery.graphql";
import CommentHistory from "../components/CommentHistory";
interface CommentHistoryContainerProps {
me: MeData;
viewer: ViewerData;
story: StoryData;
relay: RelayPaginationProp;
}
@@ -22,7 +22,7 @@ export class CommentHistoryContainer extends React.Component<
};
public render() {
const comments = this.props.me.comments.edges.map(edge => edge.node);
const comments = this.props.viewer.comments.edges.map(edge => edge.node);
return (
<CommentHistory
story={this.props.story}
@@ -69,8 +69,8 @@ const enhanced = withPaginationContainer<
...HistoryCommentContainer_story
}
`,
me: graphql`
fragment CommentHistoryContainer_me on User
viewer: graphql`
fragment CommentHistoryContainer_viewer on User
@argumentDefinitions(
count: { type: "Int!", defaultValue: 5 }
cursor: { type: "Cursor" }
@@ -90,7 +90,7 @@ const enhanced = withPaginationContainer<
{
direction: "forward",
getConnectionFromProps(props) {
return props.me && props.me.comments;
return props.viewer && props.viewer.comments;
},
// This is also the default implementation of `getFragmentVariables` if it isn't provided.
getFragmentVariables(prevVars, totalCount) {
@@ -112,8 +112,8 @@ const enhanced = withPaginationContainer<
$count: Int!
$cursor: Cursor
) {
me {
...CommentHistoryContainer_me
viewer {
...CommentHistoryContainer_viewer
@arguments(count: $count, cursor: $cursor)
}
}
@@ -2,14 +2,14 @@ import React from "react";
import { graphql } from "react-relay";
import { withFragmentContainer } from "talk-framework/lib/relay";
import { ProfileContainer_me as MeData } from "talk-stream/__generated__/ProfileContainer_me.graphql";
import { ProfileContainer_settings as SettingsData } from "talk-stream/__generated__/ProfileContainer_settings.graphql";
import { ProfileContainer_story as StoryData } from "talk-stream/__generated__/ProfileContainer_story.graphql";
import { ProfileContainer_viewer as ViewerData } from "talk-stream/__generated__/ProfileContainer_viewer.graphql";
import Profile from "../components/Profile";
interface ProfileContainerProps {
me: MeData;
viewer: ViewerData;
settings: SettingsData;
story: StoryData;
}
@@ -18,7 +18,7 @@ export class ProfileContainer extends React.Component<ProfileContainerProps> {
public render() {
return (
<Profile
me={this.props.me}
viewer={this.props.viewer}
story={this.props.story}
settings={this.props.settings}
/>
@@ -31,10 +31,10 @@ const enhanced = withFragmentContainer<ProfileContainerProps>({
...CommentHistoryContainer_story
}
`,
me: graphql`
fragment ProfileContainer_me on User {
...UserBoxContainer_me
...CommentHistoryContainer_me
viewer: graphql`
fragment ProfileContainer_viewer on User {
...UserBoxContainer_viewer
...CommentHistoryContainer_viewer
}
`,
settings: graphql`
@@ -35,7 +35,7 @@ export const render = ({
preloadProfileContainer();
if (props) {
if (!props.me) {
if (!props.viewer) {
return (
<Localized id="profile-profileQuery-errorLoadingProfile">
<div>Error loading profile</div>
@@ -52,7 +52,7 @@ export const render = ({
return (
<Suspense fallback={<Spinner />}>
<LazyProfileContainer
me={props.me}
viewer={props.viewer}
story={props.story}
settings={props.settings}
/>
@@ -76,8 +76,8 @@ const ProfileQuery: StatelessComponent<Props> = ({
story(id: $storyID, url: $storyURL) {
...ProfileContainer_story
}
me {
...ProfileContainer_me
viewer {
...ProfileContainer_viewer
}
settings {
...ProfileContainer_settings
@@ -38,7 +38,7 @@ async function createTestRenderer(
...resolver,
Query: {
settings: sinon.stub().returns(settingsWithCharCount),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: sinon.stub().returns(stories[0]),
...resolver.Query,
},
@@ -30,7 +30,7 @@ async function createTestRenderer(
...resolver,
Query: {
settings: sinon.stub().returns(settingsWithCharCount),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: sinon.stub().returns(stories[0]),
...resolver.Query,
},
@@ -30,7 +30,7 @@ async function createTestRenderer(
...resolver,
Query: {
settings: sinon.stub().returns(settingsWithCharCount),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: sinon.stub().returns(stories[0]),
...resolver.Query,
},
@@ -30,7 +30,7 @@ function createTestRenderer(
.withArgs(undefined, { id: storyWithReplies.id, url: null })
.returns(storyWithReplies)
),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
settings: sinon.stub().returns(settings),
},
Mutation: {
@@ -23,7 +23,7 @@ async function createTestRenderer(
...resolver,
Query: {
settings: sinon.stub().returns(settings),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: sinon.stub().callsFake((_: any, variables: any) => {
expectAndFail(variables.id).toBe(stories[0].id);
return stories[0];
@@ -21,7 +21,7 @@ beforeEach(() => {
const resolvers = {
Query: {
settings: sinon.stub().returns(settings),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: createSinonStub(
s => s.throws(),
s =>
@@ -21,7 +21,7 @@ async function createTestRenderer(
...resolver,
Query: {
settings: sinon.stub().returns(settings),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
story: sinon.stub().callsFake((_: any, variables: any) => {
expectAndFail(variables.id).toBe(stories[0].id);
return stories[0];
@@ -15,7 +15,7 @@ function createTestRenderer() {
});
return stories[0];
}),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
settings: sinon.stub().returns(settings),
},
Mutation: {
@@ -28,7 +28,7 @@ function createTestRenderer() {
comment: {
id: stories[0].comments.edges[0].node.id,
revision: { id: stories[0].comments.edges[0].node.revision.id },
myActionPresence: { reaction: true },
viewerActionPresence: { reaction: true },
actionCounts: { reaction: { total: 1 } },
},
clientMutationId: data.input.clientMutationId,
@@ -42,7 +42,7 @@ function createTestRenderer() {
comment: {
id: stories[0].comments.edges[0].node.id,
revision: { id: stories[0].comments.edges[0].node.revision.id },
myActionPresence: { reaction: false },
viewerActionPresence: { reaction: false },
actionCounts: { reaction: { total: 0 } },
},
clientMutationId: data.input.clientMutationId,
@@ -17,7 +17,7 @@ async function createTestRenderer(
const resolvers = {
Query: {
settings: sinon.stub().returns(merge({}, settings, data.settings)),
me: sinon.stub().returns((data.loggedIn && users[0]) || null),
viewer: sinon.stub().returns((data.loggedIn && users[0]) || null),
story: sinon.stub().callsFake((_: any, variables: any) => {
expectAndFail(variables.id).toBe(storyWithNoComments.id);
return merge({}, storyWithNoComments, data.story);
@@ -21,7 +21,7 @@ function createTestRenderer(
});
return stories[0];
}),
me: sinon.stub().returns(users[0]),
viewer: sinon.stub().returns(users[0]),
settings: sinon.stub().returns(settings),
...resolver.Query,
},
@@ -36,7 +36,7 @@ function createTestRenderer(
return {
comment: {
id: stories[0].comments.edges[0].node.id,
myActionPresence: { flag: true },
viewerActionPresence: { flag: true },
},
clientMutationId: data.input.clientMutationId,
};
@@ -50,7 +50,7 @@ function createTestRenderer(
return {
comment: {
id: stories[0].comments.edges[0].node.id,
myActionPresence: { dontAgree: true },
viewerActionPresence: { dontAgree: true },
},
clientMutationId: data.input.clientMutationId,
};
@@ -14,7 +14,7 @@ async function createTestRenderer(
Query: {
settings: sinon.stub().returns(settings),
story: sinon.stub().returns(stories[0]),
me: sinon.stub().returns(meAsModerator),
viewer: sinon.stub().returns(meAsModerator),
...resolver.Query,
},
};
@@ -16,7 +16,7 @@ async function createTestRenderer(
expectAndFail(variables).toEqual({ id: stories[0].id, url: null });
return stories[0];
}),
me: sinon.stub().returns(meAsModerator),
viewer: sinon.stub().returns(meAsModerator),
...resolver.Query,
},
...resolver,
@@ -22,7 +22,7 @@ async function createTestRenderer(
expectAndFail(variables).toEqual({ id: stories[0].id, url: null });
return stories[0];
}),
me: sinon.stub().returns(meAsModerator),
viewer: sinon.stub().returns(meAsModerator),
...resolver.Query,
},
...resolver,
@@ -66,7 +66,7 @@ beforeEach(() => {
.withArgs(undefined, { id: stories[0].id, url: null })
.returns(stories[0])
),
me: sinon.stub().returns(meStub),
viewer: sinon.stub().returns(meStub),
},
};
@@ -22,7 +22,7 @@ beforeEach(() => {
.withArgs(undefined, { id: stories[0].id, url: null })
.returns(stories[0])
),
me: sinon.stub().returns(meWithComments),
viewer: sinon.stub().returns(meWithComments),
},
};
@@ -64,7 +64,7 @@ export const Comment: GQLCommentTypeResolver<comment.Comment> = {
: createConnection(),
// Action Counts are encoded, decode them for use with the GraphQL system.
actionCounts: c => decodeActionCounts(c.actionCounts),
myActionPresence: (c, input, ctx) =>
viewerActionPresence: (c, input, ctx) =>
ctx.user ? ctx.loaders.Comments.retrieveMyActionPresence.load(c.id) : null,
parentCount: c => (c.parentID ? c.grandparentIDs.length + 1 : 0),
depth: c => (c.parentID ? c.grandparentIDs.length + 1 : 0),
@@ -11,7 +11,7 @@ export const Query: Required<GQLQueryTypeResolver<void>> = {
id ? ctx.loaders.Comments.comment.load(id) : null,
comments: (source, args, ctx) => ctx.loaders.Comments.forFilter(args),
settings: (source, args, ctx) => ctx.tenant,
me: (source, args, ctx) => ctx.user,
viewer: (source, args, ctx) => ctx.user,
discoverOIDCConfiguration: (source, { issuer }, ctx) =>
ctx.loaders.Auth.discoverOIDCConfiguration.load(issuer),
debugScrapeStoryMetadata: (source, { url }, ctx) =>
@@ -1425,10 +1425,10 @@ type Comment {
actionCounts: ActionCounts!
"""
myActionPresence stores the presence information for all the actions
viewerActionPresence stores the presence information for all the actions
left by the current User on this Comment.
"""
myActionPresence: ActionPresence
viewerActionPresence: ActionPresence
"""
story is the Story that the Comment was written on.
@@ -1785,11 +1785,11 @@ type Query {
@auth(roles: [ADMIN, MODERATOR])
"""
me is the current logged in User. If no user is currently logged in, it will
viewer is the current logged in User. If no user is currently logged in, it will
return null. This is the only nullable field that can be returned that depends
on the authentication state that will not throw an error.
"""
me: User
viewer: User
"""
settings is the Settings for a given Tenant.
+1 -1
View File
@@ -12,7 +12,7 @@ navigation-configure = Configure
## User Menu
userMenu-signOut = Sign Out
userMenu-viewLatestVersion = View Latest Release
userMenu-viewLatestRelease = View Latest Release
userMenu-reportBug = Report a Bug or Give Feedback
userMenu-popover =
.description = A dialog of the user menu with related links and actions