import React from "@modules/react"; import Strings from "@modules/strings"; import Utilities from "@modules/utilities"; import Events from "@modules/emitter"; import Settings from "@modules/settingsmanager"; import DataStore from "@modules/datastore"; import WebpackModules, {Filters} from "@modules/webpackmodules"; import Patcher from "@modules/patcher"; import DiscordModules from "@modules/discordmodules"; import Button from "@ui/base/button"; import Modals from "@ui/modals"; import AddonList from "@ui/settings/addonlist"; import SettingsGroup from "@ui/settings/group"; import SettingsTitle from "@ui/settings/title"; import Header from "@ui/settings/sidebarheader"; import Restore from "@ui/icons/restore"; const {useCallback, useEffect, useReducer} = React; function makeResetButton(collectionId) { const action = confirmReset(() => Settings.resetCollection(collectionId)); return {(props) => } ; } /** * @param {function} action * @returns */ function confirmReset(action) { return () => { Modals.showConfirmationModal(Strings.Modals.confirmAction, Strings.Settings.resetSettingsWarning, { confirmText: Strings.Modals.okay, cancelText: Strings.Modals.cancel, danger: true, onConfirm: action, }); }; } export default function SettingsPanel({id, title, groups, onChange, onDrawerToggle, getDrawerState}) { // TODO: add onChange here to lift and manage state here return <> {makeResetButton(id)} , {groups.map(section => { const props = Object.assign({}, section, { onChange, onDrawerToggle: state => onDrawerToggle(id, section.id, state), shown: getDrawerState(id, section.id, section.hasOwnProperty("shown") ? section.shown : true) }); return ; })} ; }