import React, { useState } from 'react'; import { Avatar, Button, Input, UserName } from '@capital/component'; import styled from 'styled-components'; import type { OpenAppInfo } from 'types'; import { useAsyncRequest, postRequest, showErrorToasts, useGroupIdContext, showSuccessToasts, } from '@capital/common'; import { Translate } from './translate'; const Tip = styled.div` color: #999; margin-bottom: 10px; `; const Row = styled.div` display: flex; `; const AppInfoCard = styled.div({ backgroundColor: 'rgba(0, 0, 0, 0.1)', borderRadius: 3, padding: 10, marginTop: 10, '.app-info': { flex: 1, marginLeft: 10, '.title': { fontSize: 18, fontWeight: 'bold', }, '.action': { marginTop: 10, }, }, }); const IntegrationPanel: React.FC = React.memo(() => { const [appId, setAppId] = useState(''); const [openAppInfo, setOpenAppInfo] = useState(null); const groupId = useGroupIdContext(); const [{ loading }, handleQueryApp] = useAsyncRequest(async () => { const { data } = await postRequest('/openapi/app/get', { appId, }); if (!data) { showErrorToasts(Translate.notFoundApp); return; } setOpenAppInfo(data); }, [appId]); const [{ loading: addBotLoading }, handleAddBotIntoGroup] = useAsyncRequest(async () => { await postRequest('/openapi/integration/addBotUser', { appId, groupId, }); showSuccessToasts(); }, [appId]); return (
{Translate.onlyAllowManualAddition} setAppId(e.target.value)} /> {openAppInfo && (
{openAppInfo.appName}
{openAppInfo.appDesc}
{Translate.developer}:
{openAppInfo.capability.includes('bot') && ( )}
)}
); }); IntegrationPanel.displayName = 'IntegrationPanel'; export default IntegrationPanel;