Elevate / routes / app / context / storage / classes / classReducer.js
classReducer.js
Raw
import { v4 as uuidv4 } from "uuid";
import AsyncStorage from "@react-native-async-storage/async-storage";

export const ClassReducer = (state, action) => {
  switch (action.type) {
    case "ADD_CLASS":
      const newClass = {
        id: uuidv4(),
        className: action.class.className,
        classNum: action.class.classNum,
        roomNum: action.class.roomNum,
        college: action.class.college,
        classTimes: action.class.addDatesArr,
      };
      return [...state, newClass];
    case "REMOVE_CLASS":
      return state.filter((classe) => classe.id !== action.id);
    case "RELOAD_CLASS":
      const existingClass = {
        id: action.class.id,
        className: action.class.className,
        classNum: action.class.classNum,
        roomNum: action.class.roomNum,
        college: action.class.college,
        classTimes: action.class.addDatesArr,
      };
      return [...state, existingClass];
    default:
      return state;
  }
};

// const addClass = async (newClass) => {
//   try {
//     const existingClasses = await AsyncStorage.getItem("classes");
//     let classes = JSON.parse(existingClasses);
//     if (!classes) {
//       classes = [];
//     }
//     classes.push(newClass);
//     await AsyncStorage.setItem("classes", JSON.stringify(classes))
//       .then(() => {
//         console.log("class has been added!");
//       })
//       .catch((e) => {
//         console.log("Adding Class Error1:");
//         error.log(e);
//       });
//   } catch (e) {
//     console.log("Adding Class Error2:");
//     error.log(e);
//   }
// };