diff options
author | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-02-27 01:26:26 +0800 |
---|---|---|
committer | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-03-13 20:33:35 +0800 |
commit | 7d5ee4181a63318dd3a981fef9c12ce93e732fdb (patch) | |
tree | fb2c05c6beee188c1cf73112d7e4f502e3c87d98 /app/controllers/concerns | |
parent | f06a649ced952bcc439a5b3d36d96df178aabd66 (diff) | |
download | gitlab-ce-7d5ee4181a63318dd3a981fef9c12ce93e732fdb.tar.gz |
Refactor groups and projects boards actions
Move common functionality to BoardsActions concern
Diffstat (limited to 'app/controllers/concerns')
-rw-r--r-- | app/controllers/concerns/boards_actions.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/app/controllers/concerns/boards_actions.rb b/app/controllers/concerns/boards_actions.rb new file mode 100644 index 00000000000..2cf0ba7c086 --- /dev/null +++ b/app/controllers/concerns/boards_actions.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +module BoardsActions + include Gitlab::Utils::StrongMemoize + extend ActiveSupport::Concern + + included do + include BoardsResponses + + before_action :redirect_to_recent_board, only: :index + before_action :boards, only: :index + before_action :board, only: :show + end + + def index + respond_with_boards + end + + def show + # Add / update the board in the recent visits table + Boards::Visits::CreateService.new(parent, current_user).execute(board) if request.format.html? + + respond_with_board + end + + private + + def redirect_to_recent_board + return if request.format.json? + + if recently_visited = Boards::Visits::LatestService.new(board_parent, current_user).execute + board_path = case board_parent + when Project + namespace_project_board_path(id: recently_visited.board_id) + when Group + group_board_path(id: recently_visited.board_id) + end + + redirect_to board_path + end + end + + def boards + strong_memoize(:boards) do + Boards::ListService.new(parent, current_user).execute + end + end + + def board + strong_memoize(:board) do + boards.find(params[:id]) + end + end +end |