diff --git a/src/client/actions/settings.actions.tsx b/src/client/actions/settings.actions.tsx index d7b8c60..0585c9a 100644 --- a/src/client/actions/settings.actions.tsx +++ b/src/client/actions/settings.actions.tsx @@ -1,13 +1,31 @@ import axios from "axios"; import { IExtractionOptions } from "threetwo-ui-typings"; -import {} from "../constants/action-types"; +import { SETTINGS_OBJECT_FETCHED } from "../constants/action-types"; import { SETTINGS_SERVICE_BASE_URI } from "../constants/endpoints"; -export const saveSettings = (settingsObject) => async (dispatch) => { +export const saveSettings = + (settingsObject, airdcppUserSettings) => async (dispatch) => { + const result = await axios({ + url: `${SETTINGS_SERVICE_BASE_URI}/saveSettings`, + method: "POST", + data: { settingsObject, airdcppUserSettings }, + }); + dispatch({ + type: SETTINGS_OBJECT_FETCHED, + data: result.data, + }); + }; + +export const getSettings = (settingsKey?) => async (dispatch) => { const result = await axios({ - url: `${SETTINGS_SERVICE_BASE_URI}/saveSettings`, + url: `${SETTINGS_SERVICE_BASE_URI}/getSettings`, method: "POST", - data: settingsObject, + data: settingsKey, }); - console.log(result); + { + dispatch({ + type: SETTINGS_OBJECT_FETCHED, + data: result.data, + }); + } }; diff --git a/src/client/components/AirDCPPSettingsForm.tsx b/src/client/components/AirDCPPSettingsForm.tsx index 030b0c2..baaa75f 100644 --- a/src/client/components/AirDCPPSettingsForm.tsx +++ b/src/client/components/AirDCPPSettingsForm.tsx @@ -1,91 +1,180 @@ -import React, { ReactElement } from "react"; +import React, { ReactElement, useEffect } from "react"; import { Form, Field } from "react-final-form"; -import { useDispatch } from "react-redux"; -import { saveSettings } from "../actions/settings.actions"; +import { useDispatch, useSelector } from "react-redux"; +import { saveSettings, getSettings } from "../actions/settings.actions"; import axios from "axios"; +import { isUndefined, isEmpty } from "lodash"; export const AirDCPPSettingsForm = (): ReactElement => { + const airdcppClientSettings = useSelector( + (state: RootState) => state.settings.data[0], + ); + const dispatch = useDispatch(); + useEffect(() => { + dispatch(getSettings()); + }, [dispatch]); + const onSubmit = async (values) => { try { + const fqdn = values.protocol + values.hostname; const airdcppResponse = await axios({ - url: `https://${values.airdcpp_hostname}/api/v1/sessions/authorize`, + url: `${fqdn}/api/v1/sessions/authorize`, method: "POST", data: { - username: values.airdcpp_username, - password: values.airdcpp_password, + username: values.username, + password: values.password, }, }); if (airdcppResponse.status === 200) { - dispatch(saveSettings(values)); + dispatch(saveSettings(values, airdcppResponse.data)); } } catch (error) { console.log(error); } }; const validate = async () => {}; + const initFormData = !isUndefined(airdcppClientSettings) + ? airdcppClientSettings.directConnect.client + : null; return ( -