diff --git a/app/controllers/my/timezones_controller.rb b/app/controllers/my/timezones_controller.rb index c70d7e80a..8ad770db3 100644 --- a/app/controllers/my/timezones_controller.rb +++ b/app/controllers/my/timezones_controller.rb @@ -1,6 +1,7 @@ class My::TimezonesController < ApplicationController def update Current.user.settings.update!(timezone_name: timezone_param) + head :no_content end private diff --git a/docs/api/sections/identity.md b/docs/api/sections/identity.md index 5167aaf95..9c3352095 100644 --- a/docs/api/sections/identity.md +++ b/docs/api/sections/identity.md @@ -44,3 +44,23 @@ __Response:__ ] } ``` + +## `PATCH /my/timezone` + +Updates the current user's timezone. This affects how times are displayed in notification emails. + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `timezone_name` | string | Yes | IANA timezone identifier (e.g. `America/New_York`, `Europe/London`, `Asia/Tokyo`) | + +__Request:__ + +```json +{ + "timezone_name": "America/New_York" +} +``` + +__Response:__ + +Returns `204 No Content` on success. diff --git a/test/controllers/my/timezones_controller_test.rb b/test/controllers/my/timezones_controller_test.rb index 98d45e304..d39d7cbd4 100644 --- a/test/controllers/my/timezones_controller_test.rb +++ b/test/controllers/my/timezones_controller_test.rb @@ -12,4 +12,11 @@ class My::TimezonesControllerTest < ActionDispatch::IntegrationTest patch my_timezone_path, params: { timezone_name: "America/New_York" } assert_equal time_zone, users(:kevin).reload.timezone end + + test "update as JSON" do + assert_not_equal ActiveSupport::TimeZone["America/Chicago"], users(:kevin).timezone + patch my_timezone_path, params: { timezone_name: "America/Chicago" }, as: :json + assert_response :no_content + assert_equal ActiveSupport::TimeZone["America/Chicago"], users(:kevin).reload.timezone + end end