profile
viewpoint
Lucas Cordeiro lucasecdb VTEX Brazil Web enthusiast, working as a Software Engineer at @vtex.

cramkle/cramkle 13

Web-based flashcard studying app

lucasecdb/convideo 3

Simple web-based video converter tool

lucasecdb/dotvim 2

Personal vim config and plugins

lucasecdb/react-app-server 1

Isomorphic server rendering library for React

lucasecdb/react-tab-controller 1

Roving tabIndex utility for React components

lucasecdb/apollo-client 0

:rocket: A fully-featured, production ready caching GraphQL client for every UI framework and GraphQL server

lucasecdb/DefinitelyTyped 0

The repository for high quality TypeScript type definitions.

lucasecdb/dotfiles 0

Personal configuration files

lucasecdb/draft-js 0

A React framework for building text editors.

PullRequestReviewEvent
PullRequestReviewEvent

push eventcramkle/cramkle

Lucas Cordeiro

commit sha 3afa75c68081f867fd44e7b500cc0fe29cb4462f

Release v0.11.4

view details

push time in 2 days

created tagcramkle/cramkle

tagv0.11.4

Web-based flashcard studying app

created time in 2 days

push eventcramkle/cramkle

Lucas Cordeiro

commit sha 133f333e42c3e3040c3b6fc03662d49bf63394eb

Add 512px size icon (#465)

view details

push time in 2 days

delete branch cramkle/cramkle

delete branch : chore/512-icon

delete time in 2 days

PR merged cramkle/cramkle

Add 512px size icon
+20 -9

0 comment

6 changed files

lucasecdb

pr closed time in 2 days

PR opened cramkle/cramkle

Add 512px size icon
+20 -9

0 comment

6 changed files

pr created time in 2 days

create barnchcramkle/cramkle

branch : chore/512-icon

created branch time in 2 days

push eventcramkle/cramkle

Lucas Cordeiro

commit sha b53521e3d9b2683a12515b7f8ec6d6b8a9ba104c

Release v0.11.3

view details

push time in 2 days

created tagcramkle/cramkle

tagv0.11.3

Web-based flashcard studying app

created time in 2 days

push eventcramkle/cramkle

Lucas Cordeiro

commit sha a514ebfdc844eb34088affd278b4bab417d0d4bc

Fix alignment of logo in landing page header (#464)

view details

push time in 2 days

delete branch cramkle/cramkle

delete branch : chore/landing-header

delete time in 2 days

delete branch cramkle/cramkle

delete branch : chore/update-icons

delete time in 2 days

push eventcramkle/cramkle

Lucas Cordeiro

commit sha 6913376b6c9921a9c14ee27d960612f7c87b7a3e

Update manifest icons to squared shape (#463)

view details

push time in 2 days

PR merged cramkle/cramkle

Update manifest icons to squared shape
+70 -28

0 comment

33 changed files

lucasecdb

pr closed time in 2 days

create barnchcramkle/cramkle

branch : chore/landing-header

created branch time in 2 days

PR opened cramkle/cramkle

Fix alignment of logo in landing page header
+5 -3

0 comment

1 changed file

pr created time in 2 days

create barnchcramkle/cramkle

branch : chore/update-icons

created branch time in 2 days

PR opened cramkle/cramkle

Update manifest icons to squared shape
+70 -28

0 comment

33 changed files

pr created time in 2 days

push eventvtex-apps/checkout-graphql

Jefferson

commit sha 817872e448b248406190ee732d9ab26de54fac52

Add setManualPrice mutation

view details

Jefferson

commit sha 4df256f956a5a2abb7b0a68d9e15ae93fbc9ddc2

Use adminUserAuthToken on the checkout client

view details

Jefferson

commit sha f4da797c963e55eabeaec115e944fd236cbc552f

Fix ManualPriceInput type

view details

Jefferson

commit sha 7cd974fd283f625381e8718cad2a197af2204271

Update CHANGELOG.md

view details

Jefferson

commit sha ad0f6be367d8fd3374b4c3f138c4ca265d82f4f8

Add new checkout client in order to make call as admin

view details

Jefferson

commit sha 6ce0eae995531684464717f1fabedaca41fbf0a6

Remove adminUserAuthToken from the checkout client

view details

Jefferson

commit sha 2b0d4a2a459edd42a3c31ea608d5dc3fc7deeee7

Run prettier

view details

Jefferson

commit sha dce3a86c5a1800a839a6b38ee27c85196e521f04

Remove setManualPrice function and route from the checkout client

view details

Jefferson

commit sha e23bc3a5a792d88abc44cec42834e7f3a7b4b3be

Run VTEX setup

view details

Jefferson Benedito

commit sha c7030910aca4be56a2a60b59cdb5f629b0c10790

Merge pull request #89 from vtex-apps/feature/manual-pricing CHK-327: Add setManualPrice mutation

view details

jeffersontuc

commit sha cc3e756b50f153bc5933e373656c37d235bef6c4

Release v0.40.0

view details

Lucas Cordeiro

commit sha c5a0d9bd1b87c6ade12624ce54d3a20916754bfa

Fix null seller inside bundle items

view details

push time in 3 days

PullRequestReviewEvent

push eventvtex/omnishipping

Lucas Cordeiro

commit sha 64d431c3cdc8663a3bd42efe00b61fa167d43cc6

Fix address not updated with falsy postal code value

view details

Lucas Cordeiro

commit sha 52af58342fbee39a377c190445d0c1aa4581e542

Merge pull request #1357 from vtex/fix/valid-empty-postalcode CHK-347: Fix address not updated with falsy postal code value

view details

push time in 3 days

delete branch vtex/omnishipping

delete branch : fix/valid-empty-postalcode

delete time in 3 days

PR merged vtex/omnishipping

CHK-347: Fix address not updated with falsy postal code value

What is the purpose of this pull request?

Replaces the check for postal code value with valid flag in order to update the shipping data with the autocompleted address and avoid showing unavailable delivery options for (valid) addresses without postal code.

What problem is this solving?

In argentinian stores with geolocation active, if you searched an address that didn't had a postal code value returned from the Google API the UI would only show a warning saying that the inputted address didn't have any delivery options (the SLA array was empty and the address had all the required fields filled). But, if you made an action that would trigger Omnishipping to update the shipping data attachment with that autocompleted address (e.g. change the tab from delivery to pickup), it would suddenly have all delivery options correctly returned to it and the customer would be able to proceed the purchase.

This happens because one of the condition Omnishipping uses to check whether or not it will update the shipping data with the new address looked only at the existence of the postal code value, instead of if it was valid or not, which caused it to not even update the shipping data with this address-without-zipcode and display the message that shipping is unavailable. With these changes, it will now update the shipping data with this address before showing the unavailable message, and will only show it if the address really don't have any SLA to attend.

How should this be manually tested?

Workspace.

You can test with the following addresses:

  • av maipu 3886 (doesn't have postal code returned from google).
  • av maipu 1860 (has zipcode).
  • av del libertador 1700 (doesn't have neither zipcode nor city).

You might want to run the following snippet in the console to clear the addresses between each attempt to start from the same clean state

vtexjs.checkout.sendAttachment('shippingData', { address: null, availableAddresses: [], selectedAddresses: [] })

You can see the current behaviour in master.

Screenshots or example usage

Types of changes

  • [x] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause existing functionality to change)
  • [ ] Requires change to documentation, which has been updated accordingly.
+6 -2

1 comment

2 changed files

lucasecdb

pr closed time in 3 days

PullRequestReviewEvent

pull request commentvtex-apps/order-items

CHK-327: Add setManualPrice mutation

Apparently, it can't find the SetManualPrice mutation. I'll wait some minutes after trying to re-run again, since I just deployed the version of the checkout-resources which adds this mutation.

I think you need to mock it, no? since the package toolbelt injects here is only for the typings

jeffersontuc

comment created time in 3 days

PR opened vtex/omnishipping

CHK-347: Fix address not updated with falsy postal code value

What is the purpose of this pull request?

Replaces the check for postal code value with valid flag in order to update the shipping data with the autocompleted address and avoid showing unavailable delivery options for (valid) addresses without postal code.

What problem is this solving?

In argentinian stores with geolocation active, if you searched an address that didn't had a postal code value returned from the Google API the UI would only show a warning saying that the inputted address didn't have any delivery options (the SLA array was empty and the address had all the required fields filled). But, if you made an action that would trigger Omnishipping to update the shipping data attachment with that autocompleted address (e.g. change the tab from delivery to pickup), it would suddenly have all delivery options correctly returned to it and the customer would be able to proceed the purchase.

This happens because one of the condition Omnishipping uses to check whether or not it will update the shipping data with the new address looked only at the existence of the postal code value, instead of if it was valid or not, which caused it to not even update the shipping data with this address-without-zipcode and display the message that shipping is unavailable. With these changes, it will now update the shipping data with this address before showing the unavailable message, and will only show it if the address really don't have any SLA to attend.

How should this be manually tested?

Workspace.

You can test with the following addresses:

  • av maipu 3886 (doesn't have postal code returned from google).
  • av maipu 1860 (has zipcode).
  • av del libertador 1700 (doesn't have neither zipcode nor city).

You might want to run the following snippet in the console to clear the addresses between each attempt to start from the same clean state

vtexjs.checkout.sendAttachment('shippingData', { address: null, availableAddresses: [], selectedAddresses: [] })

You can see the current behaviour in master.

Screenshots or example usage

Types of changes

  • [x] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause existing functionality to change)
  • [ ] Requires change to documentation, which has been updated accordingly.
+6 -2

0 comment

2 changed files

pr created time in 3 days

create barnchvtex/omnishipping

branch : fix/valid-empty-postalcode

created branch time in 3 days

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentvtex-apps/geolocation-graphql-interface

CHK-316: Initial Setup

+.vscode/+.DS_Store

I'd rather add it now because we might want something like prettier to auto format the graphql queries

wdsrocha

comment created time in 4 days

PullRequestReviewEvent

Pull request review commentvtex-apps/geolocation-graphql-interface

CHK-316: Initial Setup

+type Query {+  suggestAddresses(searchTerm: String): [AddressSuggestion]++  getAddressByExternalId(id: String): Address

I dont' think so :-/

wdsrocha

comment created time in 4 days

PullRequestReviewEvent

Pull request review commentvtex-apps/geolocation-graphql-interface

CHK-316: Initial Setup

+.vscode/+.DS_Store

isn't it missing more stuff? like node_modules etc

wdsrocha

comment created time in 4 days

Pull request review commentvtex-apps/geolocation-graphql-interface

CHK-316: Initial Setup

+# Geolocation GraphQL Interface++This app exports a GraphQL schema for geolocation results for Place Components.++### Usage++To use it in your app, declare it on your manifest file like:++```+"dependencies": {+  "vtex.geolocation-graphql-interface": "0.x"+}

this could be just

vtex add vtex.geolocation-graphql-interface
wdsrocha

comment created time in 4 days

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentvtex-apps/product-list

useRenderOnView on ProductList

 const ItemContextWrapper = memo<ItemWrapperProps>(function ItemContextWrapper({   return <ItemContextProvider value={context}>{children}</ItemContextProvider> }) +const ProductGroup: StorefrontFunctionComponent<Props> = ({+  items,+  loading,+  onQuantityChange,+  onRemove,+  renderOnView,+  children,+}) => {+  const { hasBeenViewed, dummyElement } = useRenderOnView({+    lazyRender: true,+    offset: 900,+  })++  if (renderOnView && (!hasBeenViewed || items.length === 0)) {+    return dummyElement+  }++  return (+    <>+      {items.map((item: Item) => (+        <ItemContextWrapper+          key={item.uniqueId + item.sellingPrice}+          item={item}+          loading={loading}+          onQuantityChange={onQuantityChange}+          onRemove={onRemove}+        >+          {children}+        </ItemContextWrapper>+      ))}+    </>+  )+}+ const ProductList: StorefrontFunctionComponent<Props> = ({   items,   loading,   onQuantityChange,   onRemove,+  renderOnView = true,   children, }) => {+  const props = {

personally I'd rather have the destructuring inside the function body and pass the props that you need the default value for explicitly to the other components, like

const ProductList = (props) => {
  const { renderOnView = true } = props

  return (
    <MyChildComponent {...props} renderOnView={renderOnView} />
  )
}
alvimm

comment created time in 5 days

PullRequestReviewEvent

push eventvtex/address-form

Lucas Cordeiro

commit sha a4da330e9c0eb7711e2a8c46d33e4a94bb409079

Fix ARG postal code autocompleted from geolocation

view details

Lucas Cordeiro

commit sha 9191ac13fff336d32402e2059ba24a56f82a37ed

Merge pull request #287 from vtex/fix/arg-geolocation CHK-347: Fix ARG postal code autocompleted from geolocation

view details

push time in 5 days

delete branch vtex/address-form

delete branch : fix/arg-geolocation

delete time in 5 days

PR merged vtex/address-form

CHK-347: Fix ARG postal code autocompleted from geolocation

What is the purpose of this pull request?

Updates the ARG geolocation rules for postal code to extract the postal code numbers.

What problem is this solving?

Fixes the format of postal code for ARG when using Google geolocation.

How should this be manually tested?

Workspace.

You can use the following addresses to test, the shipping component should not end up in an error state after the address is autocompleted:

  • Rastreador Fournier 3150, B1619 Garin, Buenos Aires, Argentina
  • Avenida Santa Fe 1400, Cidade Autônoma de Buenos Aires, Argentina
  • Calle Italia 520, Garin, Buenos Aires, Argentina

Screenshots or example usage

N/A

Types of changes

  • [x] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause existing functionality to change)
  • [ ] Requires change to documentation, which has been updated accordingly.
+90 -78

1 comment

5 changed files

lucasecdb

pr closed time in 5 days

Pull request review commentvtex/address-form

CHK-347: Fix ARG postal code autocompleted from geolocation

 export default {       valueIn: 'long_name',       types: ['postal_code'],       required: false,+      handler: (address) => {+        return {+          ...address,+          postalCode: {+            ...address.postalCode,+            value:+              address.postalCode?.value?.replace(+                /(?:[a-zA-Z]*)(\d+)(?:[a-zA-Z]*)/,+                '$1'+              ) ?? '',

I'll keep it as is, else I'd dismiss the approvals 😂

lucasecdb

comment created time in 5 days

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentvtex-apps/checkout-graphql

CHK-327: Add setManualPrice mutation

 export class Checkout extends JanusClient {   public getProfile = (email: string) =>     this.get<CheckoutProfile>(this.routes.profile(email)) +  public setManualPrice = (+    orderFormId: string,+    itemIndex: number,+    price: number+  ) =>+    this.put<CheckoutOrderForm>(+      this.routes.setManualPrice(orderFormId, itemIndex),+      {+        price,+      }+    )

this could be removed from this client, but we can do it later on another PR

jeffersontuc

comment created time in 5 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentvtex/address-form

CHK-347: Fix ARG postal code autocompleted from geolocation

 describe('Geolocation Auto Complete Address', () => {     const address = geolocationAutoCompleteAddress(       { ...newAddress },       postalCodeGoogleAddressNoNumber,-      usePostalCode,-    )--    expect(address.number).toBeTruthy()-    expect(address.number.notApplicable).toBeTruthy()-  })--  it('should keep number as notApplicable', () => {-    const address = geolocationAutoCompleteAddress(-      { ...newAddress },-      postalCodeGoogleAddressNoNumber,-      usePostalCode,+      usePostalCode

it was duplicated 😅

lucasecdb

comment created time in 5 days

PullRequestReviewEvent

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>+              </ButtonPlain>+            </div>+          ) : (+            <ButtonPlain size="small" onClick={handleOpenModal}>+              <FormattedMessage id="store/product-list.changePrice"></FormattedMessage>+            </ButtonPlain>+          )}+        </div>+      )}++      <Modal isOpen={isModalOpen} onClose={handleCloseModal} className="w-25">+        <div className="flex flex-column">+          <span className="t-small mw9 mb1">+            <FormattedMessage id="store/product-list.originalPrice"></FormattedMessage>+          </span>+          <div className={`c-muted-1 mb3 ${priceChanged ? 'strike' : ''}`}>+            <FormattedPrice value={getFormattedPrice(item.price)} />+          </div>++          <label className="t-small mw9 mb2">+            <FormattedMessage id="store/product-list.changeTo"></FormattedMessage>
            <FormattedMessage id="store/product-list.changeTo" />
jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>+              </ButtonPlain>+            </div>+          ) : (+            <ButtonPlain size="small" onClick={handleOpenModal}>+              <FormattedMessage id="store/product-list.changePrice"></FormattedMessage>+            </ButtonPlain>+          )}+        </div>+      )}++      <Modal isOpen={isModalOpen} onClose={handleCloseModal} className="w-25">+        <div className="flex flex-column">+          <span className="t-small mw9 mb1">+            <FormattedMessage id="store/product-list.originalPrice"></FormattedMessage>+          </span>+          <div className={`c-muted-1 mb3 ${priceChanged ? 'strike' : ''}`}>+            <FormattedPrice value={getFormattedPrice(item.price)} />+          </div>++          <label className="t-small mw9 mb2">+            <FormattedMessage id="store/product-list.changeTo"></FormattedMessage>+          </label>+          <div className="flex flex-row flex-grow mb3">+            <div className="mr2">+              <InputCurrency+                id="manual-price-input"+                placeholder={intl.formatMessage({+                  id: 'store/product-list.manualPricePlaceholder',+                })}+                locale={locale}+                currencyCode={currency}+                value={getFormattedPrice(manualPrice)}+                onChange={handleManualPriceChange}+              />+            </div>++            <Button+              variation="secondary"+              size="regular"+              onClick={submitManualPrice}+            >+              ok

should this be localized?

jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

 const UnitPrice: StorefrontFunctionComponent<UnitPriceProps> = ({ }) => {   const { item, loading } = useItemContext()   const handles = useCssHandles(CSS_HANDLES)+  const isManualPriceDefined = item.price !== item.sellingPrice

same as above

jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

         "padding": 0       }     }+  },+  "manual-pricing": {+    "component": "ManualPrice",+    "composition": "children",

it doesn't need the composition: "children" nor the allowed: "*"

jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice

wouldn't this cause problems for items that have a promotion?

jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

   "flex-layout.row#sub-container.desktop": {     "children": [       "flex-layout.col#product-description",-      "flex-layout.col#quantity.desktop",+      "flex-layout.col#quantity-pricing.desktop",       "flex-layout.row#price-remove"     ],     "props": {       "preserveLayoutOnMobile": "true",       "colSizing": "auto"     }   },+  "flex-layout.col#quantity-pricing.desktop": {+    "children": [+      "flex-layout.col#quantity.desktop",+      "flex-layout.col#manual-pricing"

couldn't this go in the flex-layout.col#quantity.desktop block instead of creating another block for it?

jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>+              </ButtonPlain>+            </div>+          ) : (+            <ButtonPlain size="small" onClick={handleOpenModal}>+              <FormattedMessage id="store/product-list.changePrice"></FormattedMessage>+            </ButtonPlain>+          )}+        </div>+      )}++      <Modal isOpen={isModalOpen} onClose={handleCloseModal} className="w-25">+        <div className="flex flex-column">+          <span className="t-small mw9 mb1">+            <FormattedMessage id="store/product-list.originalPrice"></FormattedMessage>+          </span>+          <div className={`c-muted-1 mb3 ${priceChanged ? 'strike' : ''}`}>+            <FormattedPrice value={getFormattedPrice(item.price)} />+          </div>++          <label className="t-small mw9 mb2">+            <FormattedMessage id="store/product-list.changeTo"></FormattedMessage>+          </label>+          <div className="flex flex-row flex-grow mb3">+            <div className="mr2">+              <InputCurrency+                id="manual-price-input"+                placeholder={intl.formatMessage({+                  id: 'store/product-list.manualPricePlaceholder',+                })}+                locale={locale}+                currencyCode={currency}+                value={getFormattedPrice(manualPrice)}+                onChange={handleManualPriceChange}+              />+            </div>++            <Button+              variation="secondary"+              size="regular"+              onClick={submitManualPrice}+            >+              ok+            </Button>+          </div>++          {priceChanged && (+            <div>+              <ButtonPlain onClick={revertToOriginalPrice}>+                <FormattedMessage id="store/product-list.revertToOriginal"></FormattedMessage>
                <FormattedMessage id="store/product-list.revertToOriginal" />
jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>+              </ButtonPlain>+            </div>+          ) : (+            <ButtonPlain size="small" onClick={handleOpenModal}>+              <FormattedMessage id="store/product-list.changePrice"></FormattedMessage>+            </ButtonPlain>+          )}+        </div>+      )}++      <Modal isOpen={isModalOpen} onClose={handleCloseModal} className="w-25">+        <div className="flex flex-column">+          <span className="t-small mw9 mb1">+            <FormattedMessage id="store/product-list.originalPrice"></FormattedMessage>
            <FormattedMessage id="store/product-list.originalPrice" />
jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>

you don't need these curly braces here 👀

              <div className="flex-grow-0 tc mb2 c-muted-1">
jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>+              </ButtonPlain>+            </div>+          ) : (+            <ButtonPlain size="small" onClick={handleOpenModal}>+              <FormattedMessage id="store/product-list.changePrice"></FormattedMessage>
              <FormattedMessage id="store/product-list.changePrice" />
jeffersontuc

comment created time in 5 days

PullRequestReviewEvent

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>+                </Tag>+              </div>+              <ButtonPlain size="small" onClick={handleOpenModal}>+                <FormattedMessage id="store/product-list.priceOptions"></FormattedMessage>
                <FormattedMessage id="store/product-list.priceOptions" />
jeffersontuc

comment created time in 5 days

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}

can you use the getFormattedPrice function here?

jeffersontuc

comment created time in 5 days

PullRequestReviewEvent

Pull request review commentvtex-apps/product-list

CHK-327: Manual price

+import React, { FunctionComponent, Fragment, useState } from 'react'+import { FormattedMessage, useIntl } from 'react-intl'+import { FormattedPrice } from 'vtex.formatted-price'+import { Button, ButtonPlain, InputCurrency, Modal, Tag } from 'vtex.styleguide'+import { useRuntime } from 'vtex.render-runtime'++import { useItemContext } from './ItemContext'+import { getFormattedPrice } from './utils/price'++const ManualPrice: FunctionComponent = () => {+  const {+    item,+    itemIndex,+    shouldAllowManualPrice,+    onSetManualPrice,+  } = useItemContext()+  const [isModalOpen, setIsModalOpen] = useState(false)+  const [manualPrice, setManualPrice] = useState(item.sellingPrice)+  const {+    culture: { currency, locale },+  } = useRuntime()+  const intl = useIntl()+  const priceChanged = item.price !== item.sellingPrice++  const submitManualPrice = (evt: React.FormEvent<HTMLFormElement>) => {+    evt.preventDefault()+    onSetManualPrice(manualPrice!, itemIndex)+    setIsModalOpen(false)+  }++  const handleManualPriceChange = (+    evt: React.ChangeEvent<HTMLInputElement>+  ) => {+    const newManualPrice = evt.target.value+    setManualPrice(parseFloat(newManualPrice) * 100)+  }++  const handleOpenModal = () => {+    setIsModalOpen(true)+  }++  const handleCloseModal = () => {+    setManualPrice(item.sellingPrice)+    setIsModalOpen(false)+  }++  const revertToOriginalPrice = () => {+    onSetManualPrice(item.price!, itemIndex)+    setManualPrice(item.price)+    setIsModalOpen(false)+  }++  return (+    <Fragment>+      {shouldAllowManualPrice && (+        <div className="flex flex-column items-center mt3">+          {priceChanged ? (+            <div>+              <div className={`flex-grow-0 tc mb2 c-muted-1`}>+                <FormattedPrice+                  value={manualPrice != null ? manualPrice / 100 : manualPrice}+                />+              </div>+              <div className="flex-grow-0 mb3 tc">+                <Tag size="small" bgColor="#3F3F40" className="fw5">+                  <FormattedMessage id="store/product-list.priceChanged"></FormattedMessage>
                  <FormattedMessage id="store/product-list.priceChanged" />
jeffersontuc

comment created time in 5 days

create barnchvtex/address-form

branch : fix/arg-geolocation

created branch time in 5 days

PR opened vtex/address-form

CHK-347: Fix ARG postal code autocompleted from geolocation

What is the purpose of this pull request?

Updates the ARG geolocation rules for postal code to extract the postal code numbers.

What problem is this solving?

Fixes the format of postal code for ARG when using Google geolocation.

How should this be manually tested?

Workspace.

You can use the following addresses to test, the shipping component should not end up in an error state after the address is autocompleted:

  • Rastreador Fournier 3150, B1619 Garin, Buenos Aires, Argentina
  • Avenida Santa Fe 1400, Cidade Autônoma de Buenos Aires, Argentina
  • Calle Italia 520, Garin, Buenos Aires, Argentina

Screenshots or example usage

N/A

Types of changes

  • [x] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause existing functionality to change)
  • [ ] Requires change to documentation, which has been updated accordingly.
+90 -78

0 comment

5 changed files

pr created time in 5 days

PR opened vtex-apps/checkout-graphql

Fix null seller in item when included in bundleItems

What problem is this solving?

Fixes vtex-apps/store-discussion#443

How should this be manually tested?

Workspace

Add this item to your cart, go to Checkout and add the Garantia Extendida attachment, then return to the store. The order form query should not throw an error.

Checklist/Reminders

  • [ ] Updated README.md.
  • [x] Updated CHANGELOG.md.
  • [ ] Linked this PR to a Jira story (if applicable).
  • [ ] Updated/created tests (important for bug fixes).
  • [ ] Deleted the workspace after merging this PR (if applicable).

Screenshots or example usage

Type of changes

<!--- Add a ✔️ where applicable -->

✔️ Type of Change
✔️ Bug fix <!-- a non-breaking change which fixes an issue -->
_ New feature <!-- a non-breaking change which adds functionality -->
_ Breaking change <!-- fix or feature that would cause existing functionality to change -->
_ Technical improvements <!-- chores, refactors and overall reduction of technical debt -->
+55 -66

0 comment

7 changed files

pr created time in 5 days

create barnchvtex-apps/checkout-graphql

branch : fix/bundle-items-seller

created branch time in 5 days

PR opened vtex-apps/order-manager

CHK-331: Replace splunk-events with checkout-splunk

What problem is this solving?

Replaces the lib splunk-events with checkout-splunk app.

How should this be manually tested?

N/A

Checklist/Reminders

  • [ ] Updated README.md.
  • [x] Updated CHANGELOG.md.
  • [x] Linked this PR to a Jira story (if applicable).
  • [ ] Updated/created tests (important for bug fixes).
  • [ ] Deleted the workspace after merging this PR (if applicable).

Screenshots or example usage

N/A

Type of changes

<!--- Add a ✔️ where applicable -->

✔️ Type of Change
✔️ Bug fix <!-- a non-breaking change which fixes an issue -->
_ New feature <!-- a non-breaking change which adds functionality -->
_ Breaking change <!-- fix or feature that would cause existing functionality to change -->
_ Technical improvements <!-- chores, refactors and overall reduction of technical debt -->
+32 -87

0 comment

7 changed files

pr created time in 5 days

create barnchvtex-apps/order-manager

branch : chore/replace-splunk

created branch time in 5 days

Pull request review commentvtex-apps/checkout-graphql

CHK-327: Add setManualPrice mutation

 export class Checkout extends JanusClient {         ...(ctx.storeUserAuthToken           ? { VtexIdclientAutCookie: ctx.storeUserAuthToken }           : null),+        ...ctx.adminUserAuthToken+          ? { VtexIdClientAutCookie: ctx.adminUserAuthToken }+          : null,

remember to remove the token in this client 👀

jeffersontuc

comment created time in 5 days

PullRequestReviewEvent

Pull request review commentvtex-apps/product-list

useRenderOnView on ProductList

 const ItemContextWrapper = memo<ItemWrapperProps>(function ItemContextWrapper({   return <ItemContextProvider value={context}>{children}</ItemContextProvider> }) +const ProductGroup: StorefrontFunctionComponent<Props> = ({+  items,+  loading,+  onQuantityChange,+  onRemove,+  renderOnView,+  children,+}) => {+  const { hasBeenViewed, dummyElement } = useRenderOnView({+    lazyRender: true,+    offset: 900,+  })++  if (renderOnView && (!hasBeenViewed || items.length === 0)) {+    return dummyElement+  }++  return (+    <>+      {items.map((item: Item) => (+        <ItemContextWrapper+          key={item.uniqueId + item.sellingPrice}+          item={item}+          loading={loading}+          onQuantityChange={onQuantityChange}+          onRemove={onRemove}+        >+          {children}+        </ItemContextWrapper>+      ))}+    </>+  )+}+ const ProductList: StorefrontFunctionComponent<Props> = ({   items,   loading,   onQuantityChange,   onRemove,+  renderOnView = true,   children, }) => {+  const props = {

why recreate the props object here?

alvimm

comment created time in 5 days

PullRequestReviewEvent
PullRequestReviewEvent

push eventlucasecdb/react-app-server

dependabot-preview[bot]

commit sha d0da78372489f7a63b4eff9b3a9e928e8015d89a

Bump react-hot-loader from 4.12.21 to 4.13.0 (#217) Bumps [react-hot-loader](https://github.com/gaearon/react-hot-loader) from 4.12.21 to 4.13.0. - [Release notes](https://github.com/gaearon/react-hot-loader/releases) - [Changelog](https://github.com/gaearon/react-hot-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/gaearon/react-hot-loader/commits/v4.13.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

view details

push time in 5 days

delete branch lucasecdb/react-app-server

delete branch : dependabot/npm_and_yarn/react-hot-loader-4.13.0

delete time in 5 days

PR merged lucasecdb/react-app-server

Bump react-hot-loader from 4.12.21 to 4.13.0 dependencies

Bumps react-hot-loader from 4.12.21 to 4.13.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/gaearon/react-hot-loader/releases">react-hot-loader's releases</a>.</em></p> <blockquote> <h2>🔥-rc for 17-rc</h2> <h3>Bug Fixes</h3> <ul> <li>tailUpdate might be blocked by a PureComponent (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1448">#1448</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/e44103a">e44103a</a>)</li> <li>provide "hot fallback" when module.hot is not truthy (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1451">#1451</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/ec3447f">ec3447f</a>)</li> </ul> <h3>Features</h3> <ul> <li>😅 (partial) support for React 17 (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1557">#1557</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/c05396b">c05396b</a>), closes <a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1425">#1425</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/gaearon/react-hot-loader/blob/master/CHANGELOG.md">react-hot-loader's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/gaearon/react-hot-loader/compare/v4.12.20...v4.13.0">4.13.0</a> (2020-09-22)</h2> <h3>Bug Fixes</h3> <ul> <li>tailUpdate might be blocked by a PureComponent (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1448">#1448</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/e44103a">e44103a</a>)</li> <li>when module.hot is not truthy (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1451">#1451</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/ec3447f">ec3447f</a>)</li> </ul> <h3>Features</h3> <ul> <li>support React 17 (<a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1557">#1557</a>) (<a href="https://github.com/gaearon/react-hot-loader/commit/c05396b">c05396b</a>), closes <a href="https://github-redirect.dependabot.com/gaearon/react-hot-loader/issues/1425">#1425</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/gaearon/react-hot-loader/commits/v4.13.0">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

Dependabot will not automatically merge this PR because it includes a minor update to a production dependency.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Automerge options (never/patch/minor, and dev/runtime dependencies)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

</details>

+3 -3

0 comment

1 changed file

dependabot-preview[bot]

pr closed time in 5 days

Pull request review commentvtex-apps/checkout-graphql

CHK-327: Add setManualPrice mutation

 export class Checkout extends JanusClient {         ...(ctx.storeUserAuthToken           ? { VtexIdclientAutCookie: ctx.storeUserAuthToken }           : null),+        ...ctx.adminUserAuthToken+          ? { VtexIdClientAutCookie: ctx.adminUserAuthToken }+          : null,

you'll need to create a separate client to include this token, as this can have unintended side-effects. see vtex-apps/checkout-graphql#61

jeffersontuc

comment created time in 6 days

Pull request review commentvtex-apps/checkout-graphql

CHK-327: Add setManualPrice mutation

 export const mutations = {     )      return data+  },+  setManualPrice: async (+    _: unknown,+    { input: {itemIndex, price} }: { input: {itemIndex: number, price: number} },

can you check if eslint is properly configured in your computer? prettier should've added some spaces around these curly brackets

jeffersontuc

comment created time in 6 days

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

push eventvtex-apps/checkout-cart

Lucas Cordeiro

commit sha 50063823abe8fba2c668e005caf71e4c749b0c1f

Update typings

view details

push time in 6 days

push eventvtex-apps/checkout-cart

Lucas Cordeiro

commit sha 6917f6c87af9e38f61f780d1b1bf7b4924737ea9

Update typings

view details

push time in 6 days

delete branch vtex-apps/checkout-splunk

delete branch : feat/initial-version

delete time in 6 days

push eventvtex-apps/checkout-splunk

Lucas Cordeiro

commit sha 927b8123224f3d56258221f55c1280c141fa21aa

Upgrade splunk-events version and prepare for first release

view details

Lucas Cordeiro

commit sha b0c5d5fb89ea26d54c69383223c7f1d333777805

Add kpi log function

view details

Lucas Cordeiro

commit sha df07c45d4da5ddbf80e4154a3b2b0e0f459991af

Merge pull request #1 from vtex-apps/feat/initial-version CHK-331: Upgrade splunk-events lib and prepare for first release

view details

push time in 6 days

more