DataPrivacyForm.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { useEffect } from 'react'
  3. import { Card, CardContent, CardFooter, Form } from 'ui'
  4. import { AIOptInLevelSelector } from './AIOptInLevelSelector'
  5. import { FormActions } from '@/components/ui/Forms/FormActions'
  6. import { useAIOptInForm } from '@/hooks/forms/useAIOptInForm'
  7. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  8. export const DataPrivacyForm = () => {
  9. const { form, onSubmit, isUpdating, currentOptInLevel } = useAIOptInForm()
  10. const { can: canUpdateOrganization } = useAsyncCheckPermissions(
  11. PermissionAction.UPDATE,
  12. 'organizations'
  13. )
  14. const permissionsHelperText = !canUpdateOrganization
  15. ? "You need additional permissions to manage this organization's settings"
  16. : undefined
  17. useEffect(() => {
  18. form.reset({ aiOptInLevel: currentOptInLevel })
  19. }, [currentOptInLevel, form])
  20. return (
  21. <Form {...form}>
  22. <form id="org-privacy-form" onSubmit={form.handleSubmit(onSubmit)}>
  23. <Card>
  24. <CardContent className="pt-6">
  25. <AIOptInLevelSelector
  26. control={form.control}
  27. disabled={!canUpdateOrganization || isUpdating}
  28. layout="flex-row-reverse"
  29. label="Briven Assistant Opt-in Level"
  30. />
  31. </CardContent>
  32. <CardFooter className="flex justify-end p-4 md:px-8">
  33. <FormActions
  34. form="org-privacy-form"
  35. isSubmitting={isUpdating}
  36. hasChanges={form.formState.isDirty}
  37. handleReset={() => form.reset()}
  38. helper={permissionsHelperText}
  39. disabled={!canUpdateOrganization}
  40. />
  41. </CardFooter>
  42. </Card>
  43. </form>
  44. </Form>
  45. )
  46. }