context.js 1.28 KB
import { getImageBases } from '@/services/common/api';
import React, { useEffect, useState } from 'react';
const UploadContext = React.createContext();

const sleep = time =>
  new Promise((res, rej) => {
    setTimeout(() => {
      res();
    }, time);
  });

const PictureWallProvider = props => {
  const { children, ...rest } = props;
  const [imgBed, setImgBed] = useState([]);

  const update = () =>
    getImageBases('icon,androidMenu,menuNew,logo,CityTemp')
      .then(res => {
        if (res.code === 0) {
          const { data } = res;
          let arr = data.filter(item => item.moduleName !== 'menu') || [];
          data.forEach(item => {
            if (item.baseUrl && item.moduleName !== 'CityTemp') {
              if (!localStorage.getItem('pd2-baseUrl')) {
                localStorage.setItem('pd2-baseUrl', item.baseUrl);
              }
            }
          });
          setImgBed(arr);
        }
      })
      .catch(err => {
        // eslint-disable-next-line no-console
        console.error(err);
        return sleep(10000).then(update);
      });
  useEffect(() => {
    update();
  }, []);
  return (
    <UploadContext.Provider value={{ imgBed, update }}>
      {children}
    </UploadContext.Provider>
  );
};

export { UploadContext as default, PictureWallProvider };