// @flow import { find } from "lodash"; import { observer } from "mobx-react"; import * as React from "react"; import { useTranslation, Trans } from "react-i18next"; import styled from "styled-components"; import Button from "components/Button"; import CollectionIcon from "components/CollectionIcon"; import Heading from "components/Heading"; import HelpText from "components/HelpText"; import List from "components/List"; import ListItem from "components/List/Item"; import Notice from "components/Notice"; import Scene from "components/Scene"; import SlackIcon from "components/SlackIcon"; import SlackButton from "./components/SlackButton"; import env from "env"; import useCurrentTeam from "hooks/useCurrentTeam"; import useQuery from "hooks/useQuery"; import useStores from "hooks/useStores"; function Slack() { const team = useCurrentTeam(); const { collections, integrations } = useStores(); const { t } = useTranslation(); const query = useQuery(); const error = query.get("error"); React.useEffect(() => { collections.fetchPage({ limit: 100 }); integrations.fetchPage({ limit: 100 }); }, [collections, integrations]); const commandIntegration = find(integrations.slackIntegrations, { type: "command", }); return ( }> Slack {error === "access_denied" && ( Whoops, you need to accept the permissions in Slack to connect Outline to your team. Try again? )} {error === "unauthenticated" && ( Something went wrong while authenticating your request. Please try logging in again? )} }} />

{commandIntegration ? ( ) : ( )}

 

{t("Collections")}

Connect Outline collections to Slack channels and messages will be automatically posted to Slack when documents are published or updated. {collections.orderedData.map((collection) => { const integration = find(integrations.slackIntegrations, { collectionId: collection.id, }); if (integration) { return ( } subtitle={ {{ channelName }} channel`} values={{ channelName: integration.settings.channel }} components={{ em: }} /> } actions={ } /> ); } return ( } actions={ } /> ); })}
); } const Code = styled.code` padding: 4px 6px; margin: 0 2px; background: ${(props) => props.theme.codeBackground}; border-radius: 4px; `; export default observer(Slack);