70 lines
1.7 KiB
TypeScript
70 lines
1.7 KiB
TypeScript
import { useState, useEffect } from 'react';
|
|
|
|
const useConfig = () => {
|
|
const [config, setConfig] = useState({
|
|
username: '',
|
|
password: '',
|
|
memory: 4096,
|
|
comfortVersion: '',
|
|
accessToken: '',
|
|
clientToken: '',
|
|
});
|
|
|
|
const loadInitialConfig = () => {
|
|
try {
|
|
const savedConfig = localStorage.getItem('launcher_config');
|
|
if (savedConfig) {
|
|
return JSON.parse(savedConfig);
|
|
}
|
|
} catch (error) {
|
|
console.log('Ошибка загрузки конфигурации:', error);
|
|
}
|
|
return {
|
|
username: '',
|
|
password: '',
|
|
memory: 4096,
|
|
comfortVersion: '',
|
|
accessToken: '',
|
|
clientToken: '',
|
|
};
|
|
};
|
|
|
|
useEffect(() => {
|
|
const savedConfig = loadInitialConfig();
|
|
setConfig(savedConfig);
|
|
}, []);
|
|
|
|
const saveConfig = (
|
|
username: string,
|
|
memory: number,
|
|
accessToken = '',
|
|
clientToken = '',
|
|
comfortVersion = '',
|
|
password = '',
|
|
) => {
|
|
try {
|
|
const newConfig = {
|
|
username,
|
|
memory,
|
|
accessToken: accessToken || config.accessToken,
|
|
clientToken: clientToken || config.clientToken,
|
|
comfortVersion: comfortVersion || config.comfortVersion,
|
|
password: password || config.password,
|
|
};
|
|
setConfig(newConfig);
|
|
localStorage.setItem('launcher_config', JSON.stringify(newConfig));
|
|
} catch (error) {
|
|
console.log(`Ошибка при сохранении конфигурации: ${error.message}`);
|
|
}
|
|
};
|
|
|
|
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
const { name, value } = e.target;
|
|
setConfig((prev) => ({ ...prev, [name]: value }));
|
|
};
|
|
|
|
return { config, setConfig, saveConfig, handleInputChange };
|
|
};
|
|
|
|
export default useConfig;
|