Как сохранять состояние toggle switch статических записей и записей от сервера в chrome storage?

Вот так выглядит наш статический json data.json:

[
    {
        "id": "settings",
        "title": "Настройки",
        "items": [
            { "id": "test1", "name": "Включить элемент 1" },
            { "id": "test2", "name": "Включить элемент 2" }
        ],
        "description": ""
    },
    {
        "id": "elements",
        "title": "Элементы",
        "items": [],
        "description": ""
    }
]

А это данные от сервера для меню id: elements: /elements:

[
   {
        "id": 1,
        "name": "Name",
        "test": {}
    },
    {
        "id": 2,
        "name": "Name 2",
        "tests": {}
    },
]

Код:

const [data, setData] = useState({
    elements: [], // данные от сервера /elements
    settings: { // настройки ID: settings static 
      test1: false,
      test2: false
    },
    loading: true
  });

  useEffect(() => {
    api.get('/elements')
      .then(response => {
        if (response.data && Array.isArray(response.data)) {
          setData(prev => ({
            ...prev,
            elements: response.data.map(item => ({...item, active: false})),
            loading: false
          }))
        }
      })
      .catch(error => {
        console.error('Error axios elements:', error);
      })
  }, []);

  const handleToggleSetting = () => {
    console.log(data);
  }

Как видим, я для каждого объекта который пришел из /elements, добавляю active: false. Статические настройки и elements я буду хранить в chrome storage для того, чтобы отобразить active настроек и элемента. Так вот мой и вопрос, как это сделать?

import staticData from '../../data.json';
import { chromeStorage } from '../../services/storage';

return (
    <React.Fragment>
      {staticData.length > 0 ? (
        <React.Fragment>
          {staticData.map(({ id, title, description, items }, _) => (
            <Menu key={id} title={title} description={description}>
              {items.length > 0 ? (
                items.map(({ id, name }, _) => (
                  <Menu.Item key={id} name={name} isActive={data.settings[id]} onChange={() => handleToggleSetting()} />
                ))
              ) : (
                !data.loading ? (
                  data.elements.length > 0 ? (
                    data.elements.map(({ id, name, color, active }, _) => (
                      <Menu.Item key={id} name={name} isActive={active} color={color} />
                    ))
                  ) : <div className="text-center">Список пуст.</div>
                ) : <div className="loading-circle" />
              )}
            </Menu>
          ))}
        </React.Fragment>
      ) : <div className="loading">Нет данных.</div>}
    </React.Fragment>
  )

isActive - это у нас checked для checkbox и onChange - это у нас функция также я для checkbox. Передать просто ключи в chrome storage для settings я смогу, а вот с данными от сервера как? Я хочу сделать одну функцию handleToggleSetting и как мне синхронизировать данные chrome storage с сервером? Представим, что у нас в chrome storage elements имеется обьект с id: 5, а на сервере его нет, значит нам нужно удалить этот обьект из chrome storage

Методы для работы с chromeStorage:

chromeStorage.setItem(key, value);
chromeStorage.getItem(key);
chromeStorage.removeItem(key);

Ответы (0 шт):