// Copyright 2023 Google LLC
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     https://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import {ReactElement, useState} from "react";
import {ConfigurationContext} from "../contexts";
import {CONFIG_KEY, ConfigState, defaultConfig} from "../domain";
import {Config} from 'model';

const ConfigurationProvider = ({children}: { children: ReactElement | ReactElement[] }) => {

    const [config, setConfig] = useState<Config>(defaultConfig);

    const overrideSetConfig = (config: Config) => {
        sessionStorage.setItem(CONFIG_KEY, JSON.stringify(config))
        setConfig(config)
    }

    const value = {config, setConfig: overrideSetConfig} as ConfigState;

    return (
        <ConfigurationContext.Provider value={value}>
            {children}
        </ConfigurationContext.Provider>
    )
}

export default ConfigurationProvider