Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spree order checkout state reload issue #11973

Open
rahul-bash opened this issue Dec 12, 2023 · 2 comments
Open

Spree order checkout state reload issue #11973

rahul-bash opened this issue Dec 12, 2023 · 2 comments

Comments

@rahul-bash
Copy link

rahul-bash commented Dec 12, 2023

Context

In Spree frontend checkout process, when user is checking out a order, and he/she is at any state of the order(let's say address), then user fill the address details and click the continue button to proceed to next checkout state but if user reloads the page just after clicking the continue button. the current checkout state page is being loaded(address page) againg rather than loading the next checkout state page.

Expected Behavior

When we continue the process and reload just after continue, the frontend should redirect us to order's updated the checkout state page(in the below video it should render confirm page) as it is already done in backend and user must be redirected to the confirm page .

Actual Behavior

When we continue the process and reload just after we click continue(for processing order to next state) the frontend should also update the checkout state to confirm ( for reference ) as it is already done in backend but the user is not redirected to confirm page.
For refrence:- please check the linked video

Possible Fix

When user clicks on continue the Post request goes to checkout_controller.rb's update action in frontend. we need to make sure if the update request get's executed first, before the reload (get request for old state).

Steps to Reproduce

  1. Start creating an order.
  2. Reload the page just after you click continue(for processing order to next state) at any state of checkout process
  3. You'll be redirected back to the same page instead of updated state.
  4. Check out the state changes now for the same order in the admin panel the current state will be shown updated.
Shopping.Cart.-.Spree.Demo.Site.1.mp4

Your Environment

  • Version used: spree 4.6, rails 6.1.7.4 and ruby 3.0.2
  • Gemfile and Gemfile.lock as text in a Gist:
git_source(:github) { |repo| "[https://github.com/#{repo}.git"](https://github.com/#{repo}.git%22) }

ruby '3.0.2'

Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
# gem 'rails', '~> 7.0', '= 7.0.5.1'
gem 'rails', '~> 6.1', '>= 6.1.7.4'
# Use postgresql as the database for Active Record
gem 'pg', '~> 1.1'
# Use Puma as the app server
gem 'puma', '~> 5.0'
Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 5.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.4', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 4.1.0'
  # Display performance information such as SQL time and flame graphs for each request in your browser.
  # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
  gem 'rack-mini-profiler', '~> 2.0'
  gem 'listen', '~> 3.3'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 3.26'
  gem 'selenium-webdriver', '>= 4.0.0.rc1'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]


#spree gems
gem 'spree', '= 4.6.0'
gem 'spree_sample', '= 4.6.0'
gem 'spree_emails', '= 4.6.0'
gem 'spree_frontend', '= 4.6.0'
gem 'spree_backend', '= 4.6.0'
gem 'spree_gateway', '~> 3.10'
gem 'spree_auth_devise', '= 4.5.0'

gem 'deface'```
@rahul-bash
Copy link
Author

rahul-bash commented Dec 12, 2023

hey @rafalcymerys , @damianlegawiec , we are facing this issue in all spree version, will spree team check this. Thanks.

@damianlegawiec
Copy link
Member

hey @rahul-bash

Could you check with the newest spree frontend version straight from github?

In your Gemfile please change

gem 'spree_frontend', '= 4.6.0'

to

gem 'spree_frontend', github: 'spree/spree_rails_frontend', branch: 'main'

and run

bundle update spree_frontend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants