diff options
author | Igor <idrozdov@gitlab.com> | 2019-08-09 21:01:55 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-08-09 21:01:55 +0000 |
commit | b99011af62935de0b15e8a314ffb7df1f8a3f303 (patch) | |
tree | f19bc1052fa1cd903a31d6f01489b56ec2bb7ead /app/controllers | |
parent | 43b9be9d6cf59a02ea86795a1734848615d38a26 (diff) | |
download | gitlab-ce-b99011af62935de0b15e8a314ffb7df1f8a3f303.tar.gz |
Split MR widget into cached and non-cached serializers
Splits auto-refreshing of MR widget into 2 requests:
- the one which uses etag-caching and invalidates the fields on change
- the one without caching
The idea is to gradually move all the fields to etag-cached endpoint
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/projects/merge_requests/content_controller.rb | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/app/controllers/projects/merge_requests/content_controller.rb b/app/controllers/projects/merge_requests/content_controller.rb index 6e026b83ee3..eec5c1a4355 100644 --- a/app/controllers/projects/merge_requests/content_controller.rb +++ b/app/controllers/projects/merge_requests/content_controller.rb @@ -7,16 +7,33 @@ class Projects::MergeRequests::ContentController < Projects::MergeRequests::Appl # for other types of serialization before_action :close_merge_request_if_no_source_project + before_action :set_polling_header around_action :allow_gitaly_ref_name_caching def widget respond_to do |format| format.json do - Gitlab::PollingInterval.set_header(response, interval: 10_000) + render json: serializer(MergeRequestPollWidgetEntity) + end + end + end - serializer = MergeRequestSerializer.new(current_user: current_user, project: merge_request.project) - render json: serializer.represent(merge_request, serializer: 'widget') + def cached_widget + respond_to do |format| + format.json do + render json: serializer(MergeRequestPollCachedWidgetEntity) end end end + + private + + def set_polling_header + Gitlab::PollingInterval.set_header(response, interval: 10_000) + end + + def serializer(entity) + serializer = MergeRequestSerializer.new(current_user: current_user, project: merge_request.project) + serializer.represent(merge_request, {}, entity) + end end |