Files
talk/src/core/server/models/settings.ts
T
KiwiandGitHub 51880bcfc9 [CORL-129] Render Community Guidelines (#2191)
* chore: Rename InnerProps to Props

* feat: Render community guidelines

* chore: refactor schema communityGuidelines* settings into it's own type

* test: update snapshots
2019-02-13 18:06:42 +01:00

123 lines
2.8 KiB
TypeScript

import { Omit } from "talk-common/types";
import {
GQLAuthDisplayNameConfiguration,
GQLCharCount,
GQLEmail,
GQLExternalIntegrations,
GQLFacebookAuthIntegration,
GQLGoogleAuthIntegration,
GQLKarma,
GQLLocalAuthIntegration,
GQLMODERATION_MODE,
GQLOIDCAuthIntegration,
GQLReactionConfiguration,
GQLSSOAuthIntegration,
GQLWordList,
} from "talk-server/graph/tenant/schema/__generated__/types";
export interface ModerationSettings {
moderation: GQLMODERATION_MODE;
requireEmailConfirmation: boolean;
communityGuidelines: {
enabled: boolean;
content?: string;
};
questionBoxEnable: boolean;
questionBoxIcon?: string;
questionBoxContent?: string;
premodLinksEnable: boolean;
autoCloseStream: boolean;
/**
* closedTimeout is the amount of seconds from the createdAt timestamp that a
* given story will be considered closed.
*/
closedTimeout: number;
closedMessage?: string;
disableCommenting: boolean;
disableCommentingMessage?: string;
charCount: GQLCharCount;
}
export type LocalAuthIntegration = GQLLocalAuthIntegration;
export type SSOAuthIntegration = GQLSSOAuthIntegration;
export type OIDCAuthIntegration = Omit<
GQLOIDCAuthIntegration,
"callbackURL" | "redirectURL"
>;
export type GoogleAuthIntegration = Omit<
GQLGoogleAuthIntegration,
"callbackURL" | "redirectURL"
>;
export type FacebookAuthIntegration = Omit<
GQLFacebookAuthIntegration,
"callbackURL" | "redirectURL"
>;
export interface AuthIntegrations {
local: LocalAuthIntegration;
sso: SSOAuthIntegration;
oidc: OIDCAuthIntegration;
google: GoogleAuthIntegration;
facebook: FacebookAuthIntegration;
}
export interface Auth {
/**
* integrations are the set of configurations for the variations of
* authentication solutions.
*/
integrations: AuthIntegrations;
/**
* displayName contains configuration related to the use of Display Names
* across AuthIntegrations.
*/
displayName: GQLAuthDisplayNameConfiguration;
}
export interface Settings extends ModerationSettings {
customCssUrl?: string;
/**
* editCommentWindowLength is the length of time (in seconds) after a comment
* is posted that it can still be edited by the author.
*/
editCommentWindowLength: number;
/**
* email is the set of credentials and settings associated with the
* Tenant.
*/
email: GQLEmail;
/**
* karma is the set of settings related to how user Trust and Karma are
* handled.
*/
karma: GQLKarma;
/**
* wordList stores all the banned/suspect words.
*/
wordList: GQLWordList;
/**
* Set of configured authentication integrations.
*/
auth: Auth;
/**
* Various integrations with external services.
*/
integrations: GQLExternalIntegrations;
/**
* reaction specifies the configuration for reactions.
*/
reaction: GQLReactionConfiguration;
}