| if (!response) | if (!response) | ||||
| return <Loading /> | return <Loading /> | ||||
| const handleError = (err: Error | null) => { | |||||
| if (!err) { | |||||
| notify({ | |||||
| type: 'success', | |||||
| message: t('common.actionMsg.modifiedSuccessfully'), | |||||
| }) | |||||
| const handleCallbackResult = (err: Error | null, message?: string) => { | |||||
| const type = err ? 'error' : 'success' | |||||
| message ||= (type === 'success' ? 'modifiedSuccessfully' : 'modifiedUnsuccessfully') | |||||
| if (type === 'success') { | |||||
| mutate(detailParams) | mutate(detailParams) | ||||
| } | } | ||||
| else { | |||||
| notify({ | |||||
| type: 'error', | |||||
| message: t('common.actionMsg.modificationFailed'), | |||||
| }) | |||||
| } | |||||
| notify({ | |||||
| type, | |||||
| message: t(`common.actionMsg.${message}`), | |||||
| }) | |||||
| } | } | ||||
| const onChangeSiteStatus = async (value: boolean) => { | const onChangeSiteStatus = async (value: boolean) => { | ||||
| body: { enable_site: value }, | body: { enable_site: value }, | ||||
| }) as Promise<App>, | }) as Promise<App>, | ||||
| ) | ) | ||||
| handleError(err) | |||||
| handleCallbackResult(err) | |||||
| } | } | ||||
| const onChangeApiStatus = async (value: boolean) => { | const onChangeApiStatus = async (value: boolean) => { | ||||
| body: { enable_api: value }, | body: { enable_api: value }, | ||||
| }) as Promise<App>, | }) as Promise<App>, | ||||
| ) | ) | ||||
| handleError(err) | |||||
| handleCallbackResult(err) | |||||
| } | } | ||||
| const onSaveSiteConfig: IAppCardProps['onSaveSiteConfig'] = async (params) => { | const onSaveSiteConfig: IAppCardProps['onSaveSiteConfig'] = async (params) => { | ||||
| if (!err) | if (!err) | ||||
| localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1') | localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1') | ||||
| handleError(err) | |||||
| handleCallbackResult(err) | |||||
| } | } | ||||
| const onGenerateCode = async () => { | const onGenerateCode = async () => { | ||||
| url: `/apps/${appId}/site/access-token-reset`, | url: `/apps/${appId}/site/access-token-reset`, | ||||
| }) as Promise<UpdateAppSiteCodeResponse>, | }) as Promise<UpdateAppSiteCodeResponse>, | ||||
| ) | ) | ||||
| handleError(err) | |||||
| handleCallbackResult(err, err ? 'generatedUnsuccessfully' : 'generatedSuccessfully') | |||||
| } | } | ||||
| return ( | return ( |
| else { | else { | ||||
| notify({ | notify({ | ||||
| type: 'error', | type: 'error', | ||||
| message: t('common.actionMsg.modificationFailed'), | |||||
| message: t('common.actionMsg.modifiedUnsuccessfully'), | |||||
| }) | }) | ||||
| } | } | ||||
| }, | }, |
| <div className="space-y-3 "> | <div className="space-y-3 "> | ||||
| {promptVariables.map(({ key, name, type, options, max_length, required }) => ( | {promptVariables.map(({ key, name, type, options, max_length, required }) => ( | ||||
| <div key={key} className="flex items-center justify-between"> | <div key={key} className="flex items-center justify-between"> | ||||
| <div className="mr-1 shrink-0 w-[120px] text-sm text-gray-900">{name || key}</div> | |||||
| <div className="mr-1 shrink-0 w-[120px] text-sm text-gray-900 break-all">{name || key}</div> | |||||
| {type === 'select' | {type === 'select' | ||||
| ? ( | ? ( | ||||
| <Select | <Select |
| return true | return true | ||||
| } | } | ||||
| catch (err) { | catch (err) { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| return false | return false | ||||
| } | } | ||||
| } | } | ||||
| return true | return true | ||||
| } | } | ||||
| catch (err) { | catch (err) { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| return false | return false | ||||
| } | } | ||||
| } | } | ||||
| return true | return true | ||||
| } | } | ||||
| catch (err) { | catch (err) { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| return false | return false | ||||
| } | } | ||||
| } | } | ||||
| return true | return true | ||||
| } | } | ||||
| catch (err) { | catch (err) { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| return false | return false | ||||
| } | } | ||||
| } | } |
| } | } | ||||
| const onGenCode = async () => { | const onGenCode = async () => { | ||||
| setGenLoading(true) | |||||
| await asyncRunSafe(onGenerateCode?.() as any) | |||||
| setGenLoading(false) | |||||
| if (onGenerateCode) { | |||||
| setGenLoading(true) | |||||
| await asyncRunSafe(onGenerateCode()) | |||||
| setGenLoading(false) | |||||
| } | |||||
| } | } | ||||
| return ( | return ( |
| onSave, | onSave, | ||||
| }) => { | }) => { | ||||
| const [isShowMore, setIsShowMore] = useState(false) | const [isShowMore, setIsShowMore] = useState(false) | ||||
| const { title, description, copyright, privacy_policy, default_language, icon, icon_background } = appInfo.site | |||||
| const { icon, icon_background } = appInfo | |||||
| const { title, description, copyright, privacy_policy, default_language } = appInfo.site | |||||
| const [inputInfo, setInputInfo] = useState({ title, desc: description, copyright, privacyPolicy: privacy_policy }) | const [inputInfo, setInputInfo] = useState({ title, desc: description, copyright, privacyPolicy: privacy_policy }) | ||||
| const [language, setLanguage] = useState(default_language) | const [language, setLanguage] = useState(default_language) | ||||
| const [saveLoading, setSaveLoading] = useState(false) | const [saveLoading, setSaveLoading] = useState(false) |
| </div> | </div> | ||||
| <div className='flex gap-3 mt-4 ml-12'> | <div className='flex gap-3 mt-4 ml-12'> | ||||
| <div onClick={onConfirm} className='w-20 leading-[34px] text-center text-white border rounded-lg cursor-pointer h-9 border-color-primary-700 bg-primary-700'>{confirmText || t('common.operation.confirm')}</div> | |||||
| <div onClick={onCancel} className='w-20 leading-[34px] text-center text-gray-500 border rounded-lg cursor-pointer h-9 border-color-gray-200'>{cancelText || t('common.operation.cancel')}</div> | |||||
| <div onClick={onConfirm} className='w-20 leading-9 text-center text-white border rounded-lg cursor-pointer h-9 border-color-primary-700 bg-primary-700'>{confirmText || t('common.operation.confirm')}</div> | |||||
| <div onClick={onCancel} className='w-20 leading-9 text-center text-gray-500 border rounded-lg cursor-pointer h-9 border-color-gray-200'>{cancelText || t('common.operation.cancel')}</div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| setAllSegments([...allSegments]) | setAllSegments([...allSegments]) | ||||
| } | } | ||||
| else { | else { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| } | } | ||||
| } | } | ||||
| resetList() | resetList() | ||||
| } | } | ||||
| else { | else { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| } | } | ||||
| } | } | ||||
| setIndexingStatusDetail(null) | setIndexingStatusDetail(null) | ||||
| } | } | ||||
| else { | else { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| } | } | ||||
| } | } | ||||
| if (!e) | if (!e) | ||||
| notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) | notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) | ||||
| else | else | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| onUpdate?.() | onUpdate?.() | ||||
| setEditStatus(false) | setEditStatus(false) | ||||
| setSaveLoading(false) | setSaveLoading(false) |
| if (!e) | if (!e) | ||||
| notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) | notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) | ||||
| else | else | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| onUpdate(operationName) | onUpdate(operationName) | ||||
| } | } | ||||
| await mutateDatasets() | await mutateDatasets() | ||||
| } | } | ||||
| catch (e) { | catch (e) { | ||||
| notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) | |||||
| notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||||
| } | } | ||||
| finally { | finally { | ||||
| setLoading(false) | setLoading(false) |
| return ( | return ( | ||||
| <Button | <Button | ||||
| type='primary' | type='primary' | ||||
| className={cn(className, `flex items-center ${s.customBtn} gap-2`)} | |||||
| className={cn(className, `!px-0 flex items-center ${s.customBtn} gap-2`)} | |||||
| onClick={onClick}> | onClick={onClick}> | ||||
| <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> | <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
| <path fillRule="evenodd" clipRule="evenodd" d="M18 10.5C18 14.366 14.418 17.5 10 17.5C8.58005 17.506 7.17955 17.1698 5.917 16.52L2 17.5L3.338 14.377C2.493 13.267 2 11.934 2 10.5C2 6.634 5.582 3.5 10 3.5C14.418 3.5 18 6.634 18 10.5ZM7 9.5H5V11.5H7V9.5ZM15 9.5H13V11.5H15V9.5ZM9 9.5H11V11.5H9V9.5Z" fill="white" /> | <path fillRule="evenodd" clipRule="evenodd" d="M18 10.5C18 14.366 14.418 17.5 10 17.5C8.58005 17.506 7.17955 17.1698 5.917 16.52L2 17.5L3.338 14.377C2.493 13.267 2 11.934 2 10.5C2 6.634 5.582 3.5 10 3.5C14.418 3.5 18 6.634 18 10.5ZM7 9.5H5V11.5H7V9.5ZM15 9.5H13V11.5H15V9.5ZM9 9.5H11V11.5H9V9.5Z" fill="white" /> |
| actionMsg: { | actionMsg: { | ||||
| noModification: 'No modifications at the moment.', | noModification: 'No modifications at the moment.', | ||||
| modifiedSuccessfully: 'Modified successfully', | modifiedSuccessfully: 'Modified successfully', | ||||
| modificationFailed: 'Modification failed', | |||||
| modifiedUnsuccessfully: 'Modified unsuccessfully', | |||||
| copySuccessfully: 'Copied successfully', | copySuccessfully: 'Copied successfully', | ||||
| paySucceeded: 'Payment succeeded', | paySucceeded: 'Payment succeeded', | ||||
| payCancelled: 'Payment cancelled', | payCancelled: 'Payment cancelled', | ||||
| generatedSuccessfully: 'Generated successfully', | |||||
| generatedUnsuccessfully: 'Generated unsuccessfully', | |||||
| }, | }, | ||||
| model: { | model: { | ||||
| params: { | params: { |
| actionMsg: { | actionMsg: { | ||||
| noModification: '暂无修改', | noModification: '暂无修改', | ||||
| modifiedSuccessfully: '修改成功', | modifiedSuccessfully: '修改成功', | ||||
| modificationFailed: '修改失败', | |||||
| modifiedUnsuccessfully: '修改失败', | |||||
| copySuccessfully: '复制成功', | copySuccessfully: '复制成功', | ||||
| generatedSuccessfully: '已重新生成', | |||||
| generatedUnsuccessfully: '生成失败', | |||||
| paySucceeded: '已支付成功', | paySucceeded: '已支付成功', | ||||
| payCancelled: '已取消支付', | payCancelled: '已取消支付', | ||||
| }, | }, |