diff --git a/rails_application/app/controllers/application_controller.rb b/rails_application/app/controllers/application_controller.rb index 2a070e7f8..a9e87b938 100644 --- a/rails_application/app/controllers/application_controller.rb +++ b/rails_application/app/controllers/application_controller.rb @@ -1,4 +1,6 @@ class ApplicationController < ActionController::Base + around_action :set_time_zone + def event_store Rails.configuration.event_store end @@ -10,4 +12,10 @@ def command_bus def not_found render file: "#{Rails.root}/public/404.html", layout: false, status: :not_found end + + private + + def set_time_zone(&block) + Time.use_zone(cookies[:timezone], &block) + end end diff --git a/rails_application/app/javascript/controllers/timezone_controller.js b/rails_application/app/javascript/controllers/timezone_controller.js new file mode 100644 index 000000000..819f60f4b --- /dev/null +++ b/rails_application/app/javascript/controllers/timezone_controller.js @@ -0,0 +1,15 @@ +// app/javascript/controllers/timezone_controller.js +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + + connect() { + this.detectAndSetTimezone() + } + + detectAndSetTimezone() { + const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone + + document.cookie = `timezone=${timezone}` + } +} diff --git a/rails_application/app/read_models/time_promotions/create_time_promotion.rb b/rails_application/app/read_models/time_promotions/create_time_promotion.rb index f68ba572b..c811a0419 100644 --- a/rails_application/app/read_models/time_promotions/create_time_promotion.rb +++ b/rails_application/app/read_models/time_promotions/create_time_promotion.rb @@ -6,8 +6,8 @@ def call(event)