Proyectos de Subversion LeadersLinked - SPA

Rev

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

import React, { useMemo } from 'react';

import { useAlert, useApi } from '@shared/hooks';
import { parseHelperToSelect } from '@shared/utils';
import { saveGroupPrivacy } from '@groups/services';

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

export function PrivacyForm({ privacies, privacy, uuid, onSubmit }) {
  const privaciesOptions = useMemo(() => parseHelperToSelect(privacies), [privacies]);
  const privacyId = useMemo(
    () => privaciesOptions.find((value) => value.label === privacy)?.value || '',
    [privaciesOptions, privacy]
  );

  const { showError, showSuccess } = useAlert();

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

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

  return (
    <Form onSubmit={handleSubmit} defaultValues={{ privacy: privacyId }}>
      <FormSelect
        name='privacy'
        placeholder='Privacidad'
        rules={{ required: 'Por favor eliga una privacidad' }}
        options={privaciesOptions}
      />
      <FormButton type='submit'>Guardar</FormButton>
    </Form>
  );
}