Autoría | Ultima modificación | Ver Log |
import { useState, useEffect } from 'react';import { useApi, useAlert } from '@shared/hooks';import { getPrivacySettings, updatePrivacySettings } from '@account-settings/services';const PRIVACY_OPTIONS = [{label: 'Mostrar en la búsqueda',input_name: 'show_in_search',value: false}];export function usePrivacySettings() {const { showSuccess, showError } = useAlert();const [options, setOptions] = useState(PRIVACY_OPTIONS);const { loading: isLoading, execute: fetchSettings } = useApi(getPrivacySettings, {autoFetch: true,onSuccess: (response) => {if (response.success && response.data) {Object.entries(response.data).forEach(([key, value]) => {setOptions((prevOptions) =>prevOptions.map((option) =>option.input_name === key ? { ...option, value: Boolean(value) } : option));});}},onError: (error) => {showError(error.message || 'Error al cargar las configuraciones de privacidad');}});const { loading: isUpdating, execute: executeUpdate } = useApi(updatePrivacySettings, {onSuccess: (response) => {if (response.success) {showSuccess(response.data);} else {showError(response.data || 'Error al actualizar la privacidad');}},onError: (error) => {showError(error.message || 'Error al actualizar la privacidad');}});const handleChecked = (value, inputName) => {setOptions((prevOptions) =>prevOptions.map((option) =>option.input_name === inputName ? { ...option, value: Boolean(value) } : option));};const updateSettings = async () => {const settingsData = {};options.forEach(({ input_name, value }) => {settingsData[input_name] = value;});await executeUpdate(settingsData);};return {options,isLoading,isUpdating,handleChecked,updateSettings};}