Proyectos de Subversion LeadersLinked - SPA

Rev

Autoría | Ultima modificación | Ver Log |

import React, { useMemo } from 'react';

import { useApi, useAlert } from '@shared/hooks';
import { saveGroupAccessibility } from '@groups/services';

import { parseHelperToSelect } from '@shared/utils';
import { Form, FormButton, FormSelect } from '@shared/components';

export function AccessibilityForm({
  uuid = '',
  privacy,
  accessibility,
  accessibilities = {},
  onSubmit = () => {}
}) {
  const accessibilitiesOptions = useMemo(() => {
    const options = parseHelperToSelect(accessibilities);
    return options.filter((acc) => (privacy === 'Privado' ? acc.value !== 'aj' : true));
  }, [accessibilities, privacy]);

  const currentAccessibility = useMemo(
    () => accessibilitiesOptions.find((acc) => acc.label === accessibility)?.value || '',
    [accessibilitiesOptions, accessibility]
  );

  const { showSuccess, showError } = useAlert();

  const { execute } = useApi(saveGroupAccessibility, {
    onSuccess: (data) => {
      showSuccess('Accesibilidad actualizada correctamente');
      onSubmit(data);
    },
    onError: (error) => {
      showError(error.message);
    }
  });

  const handleSubmit = (data) => {
    execute(uuid, data);
  };

  return (
    <Form onSubmit={handleSubmit} defaultValues={{ accessibility: currentAccessibility }}>
      <FormSelect
        name='accessibility'
        placeholder='Accesibilidad'
        rules={{ required: 'Por favor eliga una accesibilidad' }}
        options={accessibilitiesOptions}
      />
      <FormButton type='submit'>Guardar</FormButton>
    </Form>
  );
}