All files / client/components/Admin/Search SearchPage.tsx

0% Statements 0/13
100% Branches 0/0
0% Functions 0/3
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62                                                                                                                           
import React, { useContext, useState, FC } from 'react'
import { useTranslation } from 'react-i18next'
import { Alert, Button, FormGroup, Label, FormText, Row, Col } from 'reactstrap'
 
import { AdminContext } from 'components/Admin/AdminPage'
import AdminRebuildSearch from './AdminRebuildSearch'
 
const SearchPage: FC<{}> = () => {
  const [t] = useTranslation()
  const { crowi } = useContext(AdminContext)
  const [alert, setAlert] = useState({ status: '', show: false, message: '' })
 
  const handleSubmit = async e => {
    e.preventDefault()
 
    try {
      await crowi.apiPost('/admin/search/build')
 
      setAlert({ message: 'Now re-building index ... this takes a while.', status: 'success', show: true })
    } catch ({ message }) {
      setAlert({ message, status: 'danger', show: true })
    } finally {
      setTimeout(() => setAlert({ status: '', show: false, message: '' }), 5000)
    }
  }
 
  return (
    <form className="form-horizontal" role="form" onSubmit={handleSubmit}>
      <fieldset>
        <legend>{t('admin.search.legend')}</legend>
 
        <Alert color={alert.status} isOpen={!!alert.show}>
          {alert.message}
        </Alert>
 
        <FormGroup>
          <Row>
            <Col xs={{ size: 3, offset: 1 }}>
              <Label>{t('admin.search.legend')}</Label>
            </Col>
            <Col xs="7">
              <AdminRebuildSearch crowi={crowi} />
              <Button type="submit" color="primary" className="mt-2">
                {t('admin.search.build')}
              </Button>
              <FormText color="muted">
                {t('admin.search.build_description1')}
                <br />
                {t('admin.search.build_description2')}
                <br />
                {t('admin.search.build_description3')}
              </FormText>
            </Col>
          </Row>
        </FormGroup>
      </fieldset>
    </form>
  )
}
 
export default SearchPage