mirror of
https://github.com/wassname/talk.git
synced 2026-08-12 12:30:39 +08:00
feat: renamed me -> viewer (#2238)
This commit is contained in:
@@ -10,7 +10,7 @@ const AppN = removeFragmentRefs(App);
|
||||
|
||||
it("renders correctly", () => {
|
||||
const props: PropTypesOf<typeof AppN> = {
|
||||
me: {},
|
||||
viewer: {},
|
||||
children: "child",
|
||||
};
|
||||
const renderer = createRenderer();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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" }],
|
||||
|
||||
+4
-4
@@ -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)!;
|
||||
}
|
||||
+2
-2
@@ -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;
|
||||
}
|
||||
@@ -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}
|
||||
/>
|
||||
|
||||
+6
-6
@@ -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
|
||||
|
||||
+20
-20
@@ -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`
|
||||
|
||||
+14
-14
@@ -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)>
|
||||
|
||||
+6
-6
@@ -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}
|
||||
/>
|
||||
`;
|
||||
|
||||
+4
-4
@@ -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)
|
||||
|
||||
+3
-3
@@ -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: {},
|
||||
|
||||
+7
-7
@@ -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>
|
||||
|
||||
+2
-2
@@ -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}
|
||||
|
||||
+3
-3
@@ -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)>
|
||||
|
||||
+4
-4
@@ -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)>
|
||||
|
||||
+8
-8
@@ -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
|
||||
}
|
||||
`,
|
||||
},
|
||||
|
||||
+9
-9
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user