I have set up a Provider to share some state for a user using useContext. As such I am trying to leverage local storage to save some state for a users images (avatars, etc.)
To start I'm tryingto persist the avatar for a user, essentially saving their ID from express and then using it when I make a call to Cloudinary (an image hosting service).
I think I'm close (as I get the default image-placeholder for the avatar to work) but I can't set the local storage.
import React, { useState, useEffect } from 'react';
import dynamic from 'next/dynamic';
var initialState = {
  userId: null,
  avatar: '/static/uploads/profile-avatars/placeholder.jpg'
};
var UserContext = React.createContext();
function getLocalStorage() {
  return Object.keys(initialState).forEach(item => {
    dynamic(
      () =>
        Object.keys(initialState).forEach(
          val => (initialState[window.localStorage.getItem(item)] = val)
        ),
      {
        ssr: false
      }
    );
  });
}
function setLocalStorage() {
  Object.keys(initialState).forEach(item => {
    console.log('item setLocalStorage', item);
    dynamic(
      () =>
        window.localStorage.setItem(
          item,
          Object.values(initialState).forEach(item => item)
        ),
      {
        ssr: false
      }
    );
  });
}
function UserProvider({ children }) {
  var [userImages, setUserImages] = useState(() => getLocalStorage() || initialState);
  var [userId, setUserId] = useState(userImages.userId);
  useEffect(() => {
    setLocalStorage();
  }, [userId]);
  return (
    <UserContext.Provider
      value={{
        userImages,
        setUserImages,
        userId,
        setUserId
      }}
    >
      {children}
    </UserContext.Provider>
  );
}
export default UserContext;
export { UserProvider };
Thank you in advance, Happy Father's day!
 
    