dayhaysoos / use-shopping-cart

Shopping cart state and logic for Stripe
MIT License
907 stars 118 forks source link

Add Timestamp to Cart Instance #320

Open dayhaysoos opened 1 year ago

dayhaysoos commented 1 year ago

Disclaimer

This issue was written by ChatGPT lol

Feature Proposal: Add Time Stamps to Cart Entries

Overview

Currently, there's no way to make changes or updates to the cart based on time. This proposal suggests adding time stamps to cart entries, enabling updates based on time. Time stamps should be created for every cart and turned on by default.

Implementation

The time stamp should be created in the Entry.js file located in the core folder. The createEntry function is the ideal location for creating the time stamp.

Here's what the createEntry function currently looks like:

export function createEntry({
  state,
  id,
  product,
  count,
  price_metadata,
  product_metadata
}) {
  const entry = Entry({
    id,
    product,
    quantity: count,
    price_metadata,
    product_metadata
  })

  state.cartDetails[id] = entry
  updateFormattedValue(state, id)
  updateFormattedPrice(state, id)

  state.totalPrice += entry.value
  state.cartCount += count
  updateFormattedTotalPrice(state)
}

To add the time stamp, we can simply modify the createEntry function to include the current time:

import { formatISO } from 'date-fns'

export function createEntry({
  state,
  id,
  product,
  count,
  price_metadata,
  product_metadata
}) {
  const entry = Entry({
    id,
    product,
    quantity: count,
    price_metadata,
    product_metadata,
    timeStamp: formatISO(new Date()) // Add the time stamp here
  })

  state.cartDetails[id] = entry
  updateFormattedValue(state, id)
  updateFormattedPrice(state, id)

  state.totalPrice += entry.value
  state.cartCount += count
  updateFormattedTotalPrice(state)
}

Future Expansion

This proposal focuses on adding time stamps to cart entries as an initial step. We can expand on time-oriented features in the future based on the requirements and use cases.

Feel free to modify the content as needed, but this structure should give you a clear and concise proposal for adding time stamps to the cart entries in the use-shopping-cart library. Good luck!