Git Product home page Git Product logo

spree's People

Contributors

bloodf avatar danielhajduk avatar diegolezana avatar dimidev avatar elgohr avatar filipsobol avatar fpdrozd avatar kshalot avatar letelete avatar mdavo6 avatar mystix avatar rafalcymerys avatar rafalkosla101 avatar tniezg avatar witoldkesek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

spree's Issues

[Feature]: Set locale when pulling products, categories and cart from the API

How the project can be improved?

Spree's endpoints support ?locale parameter, which can affect the language of returned entities.
We should include it in our requests, based on the language selected on the frontend.

What are the acceptance criteria?

  • When fetching product list, products are returned with names in user's language
  • When fetching product details, product name and description is returned in user's language
  • When fetching categories, their names are in user's language
  • When fetching cart, product names are in user's language
  • When fetching orders, product names are in user's languages

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Remove the "My Reviews" tab and page from My Account page

How the project can be improved?

We need to get rid of VSF elements we're not willing to implement soon, so they don't mislead users.

What are the acceptance criteria?

  • Removing the "My Reviews" tab and page from My Account page

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Personal data in the admin panel

How the project can be improved?

Displaying the user's data is giving the user better and improved experience.

What are the acceptance criteria?

Implement:

  • display user's email address
  • display user's store credits
  • provide links to update stored addresses
  • provide links to see full order list

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: (My profile) Creating/updating the address entry (eg. Billing), additionally creates/modifies the same entry but in different address category (eg. Shipping)

Expected Behavior

A Billing address should act independently of the Shipping address and vice versa.

Actual Behavior

A) Creating the Billing address entry results in:

  1. Creating the actual billing entry
  2. Displaying the entry in the billing addresses tab (my account)
  3. Displaying the entry in the shipping addresses tab (my account)

B) Updating the Billing address entry results in:

  1. Updating the actual billing entry
  2. Displaying the entry in the billing addresses tab (my account)
  3. Displaying the same, modified entry in the shipping addresses tab (my account)

It behaves similarly for both Billing addresses and Shipping addresses.

Possible Solution

We use the same method composables>useUserShipping>updateAddress(...) for updating as well as the Billing address as the Shipping address. We don't use any ids which would imply the address category nor use any separated API calls to specify modified content. The possible solution would require using any of these methods to categorize/separate addresses.

Steps to reproduce

Log In > My profile > Shipping/Billing details > Add new address/Change > {Fill the form*} > Update/Add the address

Then open the NOT filled address category.

  • If added shipping -> open the billing address
  • If added billing -> open the shipping address

You should see the same address, you've just applied to another address category.

* - dummy data I used
First Name: John
Last Name: Doe
Street Name: 3793 Duck Creek Road
House/Apartment number: 12
City: San Francisco
State/Province: California
Zip-code: 94104
Country: United States
Phone number: 4153074030

What version of Spree integration are you using?

1.3

What version of Node.js are you using?

14.19

What browser (and version) are you using?

Firefox Developers 99.0b3 (64-bit)

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: The getProducts method is causing an unhandled error when loading product without any taxons on a certain product's page.

Expected Behavior

When you go to a certain product's page, the backend uses the getProducts function to the "suggested" products. It should load or skip them them no matter they have any taxons or not.

Actual Behavior

The products without taxons cause unhandled errors because the backend tries to parse the taxons no matter they exist or not.

Possible Solution

It is possible that in the function "buiildBreadcrums" in the file api-client/src/api/serializers/product.ts handling addTaxonToBreadcrumbs conditionally if taxons exist will fix the issue.
image

Steps to reproduce

Connect a backend with products that don't have any taxons assigned to them and go to any certain product's page. Following error should appear:
image

What version of Spree integration are you using?

1.2.0

What version of Node.js are you using?

14.17.6

What browser (and version) are you using?

Brave

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Update line item structure

How the project can be improved?

Line item structure should be modified in order to be compatible with updated CartSidebar core component.

What are the acceptance criteria?

  • Line item has id property instead of _id

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Upgrade Spree SDK to 5.0.1

How the project can be improved?

Spree SDK v5 (https://github.com/spree/spree-storefront-api-v2-js-sdk/releases) has multiple improvements over v4.11.0, for example:

  • Support for additional Spree endpoints (ex. wishlists and digital products).
  • No required runtime dependencies.
  • New helpers for transforming JSON:API responses from Spree.

What are the acceptance criteria?

  • Upgrade Spree SDK to ^5.0.1.
  • Install either node-fetch or axios and configure the Spree SDK to use it.
  • Recommended: Use helpers included in the SDK to handle JSON:API responses (jsonApi.findRelationshipDocuments , jsonApi.findSingleRelationshipDocument and result.extractSuccess).

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Merging guest cart after login

In Spree's default storefront, if the user starts a checkout anonymously and then signs in, the guest cart is merged to user's signed-in cart. I believe we should apply similar behavior, to maintain a good User Experience.

This will require additional endpoint in the API on Spree's end.

[Feature]: Multi currency support

How the project can be improved?

Spree 4.3 and later support multi-currency out of the box.
The Spree-VSF integration should take that into consideration and pass the correct currency to API requests

What are the acceptance criteria?

  • Currency switcher is connected to a cookie
  • API requests to all endpoints include currency code
  • Changing currency in VSF triggers cart currency change via the API
  • A correct currency symbol is displayed on the frontend

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Reset password

VSF doesn't have any stock views for the reset password flow, but it would be great if we could provide basic API integration + components for that.

  • api-client method for initiating password reset
  • api-client method for confirming password reset and setting a new password
  • "Reset Password" form component
  • "Confirm new password" form component

[Bug]: Product page (product info) layout shifts by shrinking to its minimal content width

Expected Behavior

To improve the UX, the product info panel should have a fixed width that doesn't react to its own content changes.

Actual Behavior

The product info panel shifts based on the selected tab

Screen.Recording.2022-03-15.at.17.11.27.mov

Possible Solution

Set a fixed width.

Steps to reproduce

Navigate to Men > Click on any product to open its page > Start switching between Description/Read Reviews/Additional Information tabs

What version of Spree integration are you using?

1.3

What version of Node.js are you using?

14.19

What browser (and version) are you using?

Firefox Developers 99.0b3 (64-bit)

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Add password change page in user panel

How the project can be improved?

Users will be able to change their passwords in "My account" tab. It will be possible to change password without going through "forgot password" process which will be much easier to do and cause less problems..

What are the acceptance criteria?

  • add change password tab and page

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Fetch wishlist after successful login or register

Expected Behavior

No response

Actual Behavior

Wishlist is not fetched after user successfully logs in, so currentWishlist doesn't store the wishlist token. It means that the user is not able to see items in wishlist nor add items right after logging in (after refreshing the app, wishlist is fetched and works as expected).

Possible Solution

Fetch wishlist after login/register.

Steps to reproduce

No response

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14.15.5

What browser (and version) are you using?

Chrome

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Upgrade Storefront UI to latest version

How the project can be improved?

We should upgrade Storefront UI dependency in theme module to latest version (0.11.4)

What are the acceptance criteria?

  • @storefront-ui/vue upgraded to 0.11.4

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Reducing quantity of items of length 1 in the shopping cart is enabled but has no effect

Expected Behavior

If the quantity of an item equals 0, the "decrement" button should be disabled.

Actual Behavior

The "decrement" button is clickable and has no effect.

Possible Solution

No response

Steps to reproduce

Add an item to the cart > open the cart sidebar > try to reduce the quantity amount.

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14.19

What browser (and version) are you using?

Firefox Developers 99.0b3 (64-bit)

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Separate image host from backend url

How the project can be improved?

At the moment, the backendUrl configuration is prepended on all images for products, this may not be optimal, for instance if the API is internal only, or if a different server is used to serve assets.

Instead it could be beneficial to add a separate assetUrl (or externalUrl) which is used for images and other calls that need to be made from the client.

What are the acceptance criteria?

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Total orders counter displays incorrect value

Expected Behavior

Should display value according to a number of user orders.

Actual Behavior

Displays a value of 1 no matter the order state.

Possible Solution

No response

Steps to reproduce

Navigate to my-account > order-history and verify Total orders counter.

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14.15.5

What browser (and version) are you using?

Firefox Developers

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Order history

  • api-client method for fetching user's orders
  • useUserOrder composable implementation

[Bug]: Broken Women / Men header navigation

Expected Behavior

Clicking the Women / Men header navigation on the landing page should take me to the top-level Women / Men category.

Actual Behavior

Clicking the Women / Men header navigation on the landing page throws up an error page with the following error message:

An error occured
Please go back or try again

Possible Solution

No response

Steps to reproduce

  1. Launch spree_starter
  2. Import spree sample data (docker-compose run web rake spree_sample:load)
  3. Launch VSF Spree

What version of Spree integration are you using?

4.3

What version of Node.js are you using?

14.18.0

What browser (and version) are you using?

Firefox 93.0

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Properties (Brand/Manufacturer) filter is passed incorrectly.

Expected Behavior

When filtering by multiple brands then all products from each brand should be presented to the user.

Actual Behavior

When you pick a brand (or manufacturer) in a filter while some other one is already clicked, then only the newly clicked brand is passed to backend. Therefore, when filtering for the second time only products from lastly picked brand are shown.

Possible Solution

No response

Steps to reproduce

Look at the video. First, there are 11 products from brand beta and then I add brand alpha and it starts showing only 9 products instead of 20.
https://user-images.githubusercontent.com/26672113/150971563-7d4c88ee-202f-44a1-8f75-b93e6985b8ba.mov

What version of Spree integration are you using?

4.3.0

What version of Node.js are you using?

14.18.0

What browser (and version) are you using?

Firefox

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Implement useShippingProvider composable

How the project can be improved?

VSF 2.4.0 introduced useShippingProvider composable, that provides methods for managing shipping methods during a checkout.

Currently, the theme interacts directly with the API to pull available shipping methods or to save selection.
We should migrate to Vue Storefront's model, to keep it consistent and make use of some other VSF mechanisms (like shipping getters).

What are the acceptance criteria?

  • useShippingProvider composable is implemented
  • Calls to $spree in /pages/Shipping.vue are replaced with useShippingProvider
  • checkoutGetters for shipping are implemented
  • Handling multiple shipments works properly
  • Shipping cost displays correctly in CartPreview.vue (after it's selected during the checkout)

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Support for Stripe Apple Pay Gateway

How the project can be improved?

Spree supports Apple Pay as one of its gateways. It would be great to have support for it as one of the payment method components.

What are the acceptance criteria?

  • When Apple Pay gateway is enabled in Spree, the frontend shows a "Pay with Apple Pay" option during checkout payment method step

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Remove My newsletter tab

How the project can be improved?

It is unused page so the view in account page will be clearer and will not mislead potential users.

What are the acceptance criteria?

  • remove above mentioned tab from My account -> My newsletter

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: associateGuestCart failure prevents login popup success

Expected Behavior

When associateGuestCart fails, the user should still be logged in and the associateGuestCart failure should be ignored.

Actual Behavior

The login popup displays the error (422 in my case) and does not close the login window. However, the user actually gets logged in, if you close the window.

The reason why I am getting the 422 error is another issue, but I don't know why I got it either.

Possible Solution

Failure of associate api call should not prevent login window treating login call as successful.

Steps to reproduce

Make associate api method return status 422, then try to login in the vue app.

What version of Spree integration are you using?

latest

What version of Node.js are you using?

14.18.1

What browser (and version) are you using?

Chrome

What operating system (and version) are you using?

Mac

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Change line item default image

How the project can be improved?

Currently, when we are deserializing line items, we attach product image to them. Instead, we should attach variant image by default and use product image only when variant doesn't have any images.

What are the acceptance criteria?

  • Line item has variant image by default
  • Line item has product image when variant doesn't have any images

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Update texts during forgot password flow

How the project can be improved?

The default labels for forgot password dialog don't look good.

We should replace the text there.

What are the acceptance criteria?

  • The input field in the modal should say "Your email", instead of "Forgot password modal email"
  • After the forgot password form is submitted, the dialog should say "We sent you an email with a link to reset your password. Please check your inbox"

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Saved addresses don't show up when logging in during the checkout process

Expected Behavior

Saved addresses should be visible to the user if he just logged in while in the checkout process.

In particular:

at: /checkout/shipping

Assuming a user is not logged in...

Log-in

  • If any saved address exists: Should display all saved addresses
  • If no saved addresses exist: Should log-in user and provide no side-effects

Register

  • Should log-in user and provide no side-effects

Fill in some shipping details -> log-in

  • Shouldn’t clear form’s input

Fill in shipping details -> submit details -> log-in

  • Shouldn’t clear form’s input

at: /checkout/billing

Assuming a user is not logged in...

Log-in

  • If any saved address exists: Should display all saved addresses
  • If no saved addresses exist: Should log-in user and provide no side-effects

Register

  • Should log-in user and provide no side-effects

Fill in some billing details -> log-in

  • Shouldn’t clear form’s input

Actual Behavior

Saved addresses show up IFF user reloads the page manually afterward the successful login

Screen.Recording.2022-03-17.at.17.58.05.mov

Possible Solution

One of the solutions would be to reload the whole page after the login.

Steps to reproduce

  1. Be sure you're logged out (shopping as a guest)
  2. Add some items to the shopping cart
  3. Open the side shopping cart
  4. Click on "GO TO CHECKOUT" button
  5. When on the fill-shipping-form page, click on the user profile button, the login popup will appear
  6. Enter valid credentials AND be sure you have some addresses saved on your account
  7. Refresh the page
  8. Saved addresses should appear, even though they were not listed before

What version of Spree integration are you using?

1.3

What version of Node.js are you using?

14.19

What browser (and version) are you using?

Firefox Developers 99.0b3 (64-bit), Chrome 99.0.4844.74 (Official Build) (arm64)

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: The "select shipping method" button is enabled when shipping methods are loaded

Expected Behavior

No response

Actual Behavior

When user saves shipping address, there's a brief moment when we display the widget for selecting a shipping method but it's empty due to no shipping methods being available. The button to continue is enabled during that time, letting the user to skip this step.

Possible Solution

Disable the "continue" button when shipping methods are being loaded.

Steps to reproduce

No response

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14

What browser (and version) are you using?

All

What operating system (and version) are you using?

All

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Upgrade to Vue Storefront 2.5.0

How the project can be improved?

Vue Storefront recently released 2.5.0, which we should migrate to.

What are the acceptance criteria?

No response

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Show message when there is no shipping method available for the shipment

How the project can be improved?

Currently we are showing list of shipping methods under shipment title, but when shipment doesn't have any shipping methods - there is an empty space which might be confusing for the user. Instead, we should show a message (e.g. "There is no shipping method available for this shipment")

What are the acceptance criteria?

  • show message under shipment title when it doesn't have any shipping methods available

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Remove "Returns" tab and page from My Account page

How the project can be improved?

We need to get rid of VSF elements we're not willing to implement soon, so they don't mislead users.

What are the acceptance criteria?

  • Removing the "Returns" tab and page from My Account page

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Shipping/Billing address state/province value always equals to "Alabama" in the admin panel

Expected Behavior

State/Province value should equal to the one set up on the client.

Actual Behavior

Currently, when the order is opened in the Orders tab of the Admin Panel, the value always equals "Alabama".

Possible Solution

No response

Steps to reproduce

  1. Add any product to the shopping cart
  2. Fill checkout forms with:
    Country: United States
    State/Province California
  3. Order the product
  4. Open the admin panel > Orders > > Customer
  5. Verify a value of the "State" field.

What version of Spree integration are you using?

1.3

What version of Node.js are you using?

14.19

What browser (and version) are you using?

Firefox Developers 99.0b3 (64-bit)

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Open login modal when guest user is trying to add item to wishlist

How the project can be improved?

Wishlist feature is available only for authenticated users. When guest user is trying to add something to wishlist, we should display login modal in order to improve UX.

What are the acceptance criteria?

  • login modal is displayed when guest user is trying to add item to wishlist

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Wishlists support

Even though Spree doesn't support wishlists out of the box, we could still provide a composable compatible with spree-wishlist extension

  • api-client methods for fetching/adding/removing to wishlist
  • useWishlist composable

Since wishlists aren't available OOB in Spree, we should also consider adding a toggle that would enable/disable API connection for wishlists. Otherwise, when using stock theme with stock Spree installation, developers will see a lot of request errors.

[Bug]: Checkout - size column displays color

Expected Behavior

Each column displays associated parameter (column: size displays sizes of products, column: color displays colors)

Actual Behavior

In the checkout proces column size displays a color of an item.

Possible Solution

No response

Steps to reproduce

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14.18.0

What browser (and version) are you using?

Chrome

What operating system (and version) are you using?

macOs

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Add an option to use the same address for billing

How the project can be improved?

Currently in order to progress through checkout process user has to fill up the address form twice, which is usually unnecessary since most of the time shipment address and billing address are the same. We should allow users to use the same provided data to be passed to both forms (e.q. selecting a checkbox) so that user will not have to fill up that form once more with exactly the same details.

What are the acceptance criteria?

  • user can see an option to pass the same data to billing form (e.g. checkbox with a "use provided data for billing" label)

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Implement checkout.js middleware

How the project can be improved?

VSF 2.4.0 introduced checkout.js middleware, that blocks access to /checkout pages, depending on the state of current cart. We should implement it as well.

What are the acceptance criteria?

  • checkout.js is present in middlewares
  • when accessing /checkout/payment with a cart that doesn't have an address or a shipping method, the user should be redirected back
  • when accessing /checkout/billing with a cart that doesn't have a shipping address or shipping method, the user should be redirected back

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Category list on mobile gets broken after navigation

Expected Behavior

The "Menu" button at the bottom should show a list of categories.

Actual Behavior

It displays an empty list.

Possible Solution

No response

Steps to reproduce

  • Open the homepage on mobile
  • Click "Menu" at the bottom, navigate to "Men"
  • Open "Menu" again
  • The list is empty, while it should show subcategories

What version of Spree integration are you using?

1.3.0

What version of Node.js are you using?

14.0

What browser (and version) are you using?

Safari

What operating system (and version) are you using?

iOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Order History fails with empty orders api response

Expected Behavior

Should display the Order History page with no orders.

Actual Behavior

API /api/spree/getOrders returns "[]" with status 200 OK.
Frontend displays error to user "An error occured".
Console shows error:
client.js?06a0:102 TypeError: Cannot read properties of undefined (reading 'length') at Proxy.render (OrderHistory.vue?b07f:161:1) at eval (vue-composition-api.esm.js?35ec:1894:1) at activateCurrentInstance (vue-composition-api.esm.js?35ec:1844:1) at Proxy.$options.render (vue-composition-api.esm.js?35ec:1893:1) at VueComponent.Vue._render (vue.common.dev.js?87aa:3568:1) at VueComponent.updateComponent (vue.common.dev.js?87aa:4067:1) at Watcher.get (vue.common.dev.js?87aa:4490:1) at new Watcher (vue.common.dev.js?87aa:4479:1) at mountComponent (vue.common.dev.js?87aa:4085:1) at VueComponent.Vue.$mount (vue.common.dev.js?87aa:9084:1)

Possible Solution

No response

Steps to reproduce

No response

What version of Spree integration are you using?

2597466

What version of Node.js are you using?

14.18.1

What browser (and version) are you using?

Chrome

What operating system (and version) are you using?

Mac

Relevant log output

client.js?06a0:102 TypeError: Cannot read properties of undefined (reading 'length')
    at Proxy.render (OrderHistory.vue?b07f:161:1)
    at eval (vue-composition-api.esm.js?35ec:1894:1)
    at activateCurrentInstance (vue-composition-api.esm.js?35ec:1844:1)
    at Proxy.$options.render (vue-composition-api.esm.js?35ec:1893:1)
    at VueComponent.Vue._render (vue.common.dev.js?87aa:3568:1)
    at VueComponent.updateComponent (vue.common.dev.js?87aa:4067:1)
    at Watcher.get (vue.common.dev.js?87aa:4490:1)
    at new Watcher (vue.common.dev.js?87aa:4479:1)
    at mountComponent (vue.common.dev.js?87aa:4085:1)
    at VueComponent.Vue.$mount (vue.common.dev.js?87aa:9084:1)

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Add an option to save address in shipping step

How the project can be improved?

Currently, in order to add an address (which can be later used in the checkout), user has to go to the account page and fill the form there. We should also allow saving address submitted in shipping step (e.g. by selecting the checkbox), so that user can use it again in future orders.

What are the acceptance criteria?

  • user can see an option to save the address in shipping step (e.g. checkbox with "Save address" label)

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Price range picker returns only last value.

Expected Behavior

All the picked price ranges should be passed to backend.

Actual Behavior

Currently, in our price picker, we are returning products from the first checked price range instead of products from all checked price ranges.

Possible Solution

Spree expects us to pass the price range as interval [min_price, max_price], so maybe it is a good idea to change this interval price picker to some slider where we can choose minimal and maximal price value.

Steps to reproduce

Screen.Recording.2022-01-21.at.15.50.28.mov

What version of Spree integration are you using?

4.3.0

What version of Node.js are you using?

14.18.0

What browser (and version) are you using?

Firefox

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Don't associate cart upon login, if there's no cart

Expected Behavior

The useCart will always return a cart, even if there's no cart in the backend created for current session.
In such case, it returns a dummy empty cart, with token set to undefined. This works well, and since the interface of the dummy cart is compatible with the interface of a real cart, it can be used across the UI.

Such dummy cart however shouldn't be passed to the backend for association with current user.

Actual Behavior

When user has a dummy cart assigned on the frontend and tries to sign in, the frontend calls associateCart API with invalid (undefined) token.

Possible Solution

When cart.value.token is undefined, the call to associate_cart should be skipped.

Steps to reproduce

No response

What version of Spree integration are you using?

4.3

What version of Node.js are you using?

14.15

What browser (and version) are you using?

Chrome

What operating system (and version) are you using?

macOS

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Implement deleting saved address

How the project can be improved?

deleteAddress method in useUserShipping and useUserBilling composables is not implemented. After implementing that, user will be able to remove unneeded addresses in account page.

What are the acceptance criteria?

  • deleteAddress method is implemented in useUserShipping composable
  • deleteAddress method is implemented in useUserBilling composable
  • user is able to delete saved address in MyAccount/ShippingDetails page
  • user is able to delete saved address in MyAccount/BillingDetails page

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Remove getCheckout API client method

How the project can be improved?

Currently we have two api-client methods that call the GET /cart endpoint in Spree's API.
One of them is getCart, that also fetches all relevant relationships.
The other is getCheckout, that includes only billing and shipping addresses. The getCheckout is used only by useShipping and useBilling composables.

Instead of re-fetching the cart, we could simply provide useCart to the two composables mentioned above. This way we would also reduce the complexity of the api-client and data types.

What are the acceptance criteria?

  • The getCheckout method is removed from the api-client package
  • useShipping composable relies on useCart
  • useBilling composable relies on useCart
  • When billing or shipping address is updated via these composables, the useCart updates shipping and billing addresses stored inside them.

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: match address fields with address fields in Spree

How the project can be improved?

Currently during checkout and when configuring saved addresses, we show the following fields:

  • Street name (maps to address_line_1 in Spree)
  • House number (maps to address_line_2 in Spree).

Both of these fields are required, what is more house number has a validation coming out of stock VSF that doesn't make much sense (at least two characters).

We discussed that, and what would make most sense would be to update these fields to match what's in OOB spree:

  • Address line 1 (required, maps to address_line_1 in Spree)
  • Address line 2 (optional, maps to address_line_2 in Spree)

Address line 2 field should always display below address line 1 (not next to it)

What are the acceptance criteria?

  • Fields are updated in checkout shipping step
  • Fields are updated in checkout billing step
  • Fields are updated in profile -> new/edit saved address step
  • Address line 2 is displayed below Address line 1 in forms
  • Address line 2 is displayed below Address line 1 in address summary (e.g. when displaying saved addresses)
  • Address line 2 is an optional field

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Cleanup supported currencies

How the project can be improved?

Currently, supported currencies displayed to the user are taken from the vueI18n.numberFormats.${locale}.currency.currencyDefault values. Besides that, we don't use numberFormats array.

We should revisit this and possibly use i18n.currencies array. This requires a bit of research first

What are the acceptance criteria?

No response

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Feature]: Wishlists support

How the project can be improved?

Spree doesn't provide wishlists out of the box, but there's a popular extension spree_wishlist that adds this functionality.
The integration should allow to optionally enable the useWishlist composable to connect to the API exposed by spree_wishlist.

What are the acceptance criteria?

  • useWishlist composable is implemented
  • Wishlists work for signed-in users
  • A feature flag is available that disables any API calls to the wishlists API (in case someone wants to connect to a Spree instance that doesn't have spree_wishlist installed).

Additional information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.