[CORL 133] API Review (#2197)

* refactor: removed unused subscription code

* refactor: removed management api's

* refactor: cleanup of connections

* refactor: refactored comments edge

* refactor: simplified connection resolving

* feat: added story connection edge

* fix: added story index

* feat: added user pagination and user edge

* fix: added filter to comment query

* fix: removed unused resolvers

* fix: creating a comment reply should require auth

* refactor: cleanup of graph files

* feat: removed display name, made username non-unique

* fix: fixed tests

* fix: fixed tests

* fix: added more api docs

* fix: fixed bug with installer

* refactor: fixes and updates

* fix: added linting for graphql, fixed schema

* feat: added docker build tests

* fix: upped output timeout

* fix: fixed stacktraces in production builds

* fix: removed `git add`

- `git add` was causing issues with
    partial staged changs on files

* feat: improved error messaging for auth

* refactor: cleaned up queue names

* fix: merge error
This commit is contained in:
Wyatt Johnson
2019-03-12 15:12:21 +01:00
committed by Kiwi
parent 37959f9398
commit d37333be89
125 changed files with 1269 additions and 1536 deletions
@@ -3,13 +3,11 @@ import React, { StatelessComponent } from "react";
import { PropTypesOf } from "talk-framework/types";
import { HorizontalGutter } from "talk-ui/components";
import DisplayNamesConfigContainer from "../containers/DisplayNamesConfigContainer";
import AuthIntegrationsConfig from "./AuthIntegrationsConfig";
interface Props {
disabled?: boolean;
auth: PropTypesOf<typeof AuthIntegrationsConfig>["auth"] &
PropTypesOf<typeof DisplayNamesConfigContainer>["auth"];
auth: PropTypesOf<typeof AuthIntegrationsConfig>["auth"];
onInitValues: (values: any) => void;
}
@@ -19,11 +17,6 @@ const AuthConfig: StatelessComponent<Props> = ({
onInitValues,
}) => (
<HorizontalGutter size="double" data-testid="configure-authContainer">
<DisplayNamesConfigContainer
disabled={disabled}
auth={auth}
onInitValues={onInitValues}
/>
<AuthIntegrationsConfig
disabled={disabled}
auth={auth}
@@ -1,93 +0,0 @@
import { Localized } from "fluent-react/compat";
import React, { StatelessComponent } from "react";
import { Field } from "react-final-form";
import { parseStringBool } from "talk-framework/lib/form";
import {
Flex,
FormField,
HorizontalGutter,
RadioButton,
Typography,
} from "talk-ui/components";
import Header from "../../../components/Header";
interface Props {
disabled?: boolean;
}
const DisplayNamesConfig: StatelessComponent<Props> = ({ disabled }) => (
<HorizontalGutter size="oneAndAHalf">
<Localized id="configure-auth-displayNamesConfig-title">
<Header>Display Names</Header>
</Localized>
<Localized id="configure-auth-displayNamesConfig-explanationShort">
<Typography variant="detail">
Some AUTH integrations include a Display Name as well as a User Name.
</Typography>
</Localized>
<Localized id="configure-auth-displayNamesConfig-explanationLong">
<Typography variant="detail">
A User Name has to be unique (there can only be one Juan_Doe, for
example), whereas a Display Name does not. If your AUTH provider allows
for Display Names, you can enable this option. This allows for fewer
strange names (Juan_Doe23245) however it could also be used to
spoof/impersonate another user.
</Typography>
</Localized>
<FormField>
<Flex direction="row" itemGutter="double">
<Field
name={"auth.displayName.enabled"}
type="radio"
parse={parseStringBool}
value
>
{({ input }) => (
<Localized id="configure-auth-displayNamesConfig-showDisplayNames">
<RadioButton
id={`${input.name}-true`}
name={input.name}
onChange={input.onChange}
onFocus={input.onFocus}
onBlur={input.onBlur}
checked={input.checked}
disabled={disabled}
value={input.value}
>
Show Display Names (if available)
</RadioButton>
</Localized>
)}
</Field>
<Field
name={"auth.displayName.enabled"}
type="radio"
parse={parseStringBool}
value={false}
>
{({ input }) => (
<Localized id="configure-auth-displayNamesConfig-hideDisplayNames">
<RadioButton
id={`${input.name}-false`}
name={input.name}
onChange={input.onChange}
onFocus={input.onFocus}
onBlur={input.onBlur}
checked={input.checked}
disabled={disabled}
value={input.value}
>
Hide Display Names (if available)
</RadioButton>
</Localized>
)}
</Field>
</Flex>
</FormField>
</HorizontalGutter>
);
export default DisplayNamesConfig;
@@ -104,7 +104,6 @@ const enhanced = withFragmentContainer<Props>({
...SSOConfigContainer_auth
...SSOConfigContainer_authReadOnly
...LocalAuthConfigContainer_auth
...DisplayNamesConfigContainer_auth
...OIDCConfigContainer_auth
...OIDCConfigContainer_authReadOnly
}
@@ -1,37 +0,0 @@
import React from "react";
import { graphql } from "react-relay";
import { DisplayNamesConfigContainer_auth as AuthData } from "talk-admin/__generated__/DisplayNamesConfigContainer_auth.graphql";
import { withFragmentContainer } from "talk-framework/lib/relay";
import DisplayNamesConfig from "../components/DisplayNamesConfig";
interface Props {
auth: AuthData;
onInitValues: (values: AuthData) => void;
disabled?: boolean;
}
class DisplayNamesConfigContainer extends React.Component<Props> {
constructor(props: Props) {
super(props);
props.onInitValues(props.auth);
}
public render() {
const { disabled } = this.props;
return <DisplayNamesConfig disabled={disabled} />;
}
}
const enhanced = withFragmentContainer<Props>({
auth: graphql`
fragment DisplayNamesConfigContainer_auth on Auth {
displayName {
enabled
}
}
`,
})(DisplayNamesConfigContainer);
export default enhanced;
@@ -36,8 +36,8 @@ const CreateUsername: StatelessComponent<CreateUsernameForm> = props => {
<HorizontalGutter size="oneAndAHalf">
<Localized id="createUsername-whatItIs">
<Typography variant="bodyCopy">
Your username is a unique identifier that will appear on all
of your comments.
Your username is an identifier that will appear on all of your
comments.
</Typography>
</Localized>
{submitError && (
@@ -79,7 +79,7 @@ const enhanced = (withPaginationContainer<
count: { type: "Int!", defaultValue: 5 }
cursor: { type: "Cursor" }
) {
comments(filter: { status: REJECTED }, first: $count, after: $cursor)
comments(status: REJECTED, first: $count, after: $cursor)
@connection(key: "RejectedQueue_comments") {
edges {
node {