import { useReducer } from "react";

const initialState = {
  items: [],
  total: 0,
  discount: null,
  isLoading: false,
};

function reducer(state, action) {
  switch (action.type) {
    case "addItem":
      return {
        ...state,
        items: [...state.items, action.payload],
        total: state.total + action.payload.price,
      };
    case "removeItem":
      const item = state.items.find(i => i.id === action.payload);
      return {
        ...state,
        items: state.items.filter(i => i.id !== action.payload),
        total: state.total - (item?.price || 0),
      };
    case "applyDiscount":
      return { ...state, discount: action.payload };
    case "reset":
      return initialState;
    default:
      return state;
  }
}

function Cart() {
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      {JSON.stringify(state)}
      <button onClick={() => dispatch({ type: "addItem", payload: { id:1, price:10 } })}>Add</button>
      <button onClick={() => dispatch({ type: "removeItem", payload: 1 })}>Remove</button>
      <button onClick={() => dispatch({ type: "applyDiscount", payload: "SUMMER10" })}>Discount</button>
      <button onClick={() => dispatch({ type: "reset" })}>Reset</button>
    </div>
  );
}