From 34295036e2a9ecf18ca5440a5dd6dbb0c7f05643 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 19 Dec 2016 23:53:19 +0100 Subject: Improve sources - Add proper error handling, - Use flash[:alert] and flash[:notice], - Use `resource` instead of `resources`, --- app/controllers/projects/mattermosts_controller.rb | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 app/controllers/projects/mattermosts_controller.rb (limited to 'app/controllers/projects/mattermosts_controller.rb') diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb new file mode 100644 index 00000000000..c6b39add7ad --- /dev/null +++ b/app/controllers/projects/mattermosts_controller.rb @@ -0,0 +1,41 @@ +class Projects::MattermostsController < Projects::ApplicationController + include TriggersHelper + include ActionView::Helpers::AssetUrlHelper + + layout 'project_settings' + + before_action :authorize_admin_project! + before_action :service + before_action :teams, only: [:new] + + def new + end + + def create + @service.configure!(current_user, configure_params) + + flash[:notice] = 'This service is now configured' + redirect_to edit_namespace_project_service_path(@project.namespace, @project, service) + rescue => e + flash[:alert] = e.message + redirect_to new_namespace_project_mattermost_path(@project.namespace, @project) + end + + private + + def configure_params + params.require(:mattermost).permit(:trigger, :team_id).merge( + url: service_trigger_url(@service), + icon_url: asset_url('gitlab_logo.png')) + end + + def teams + @teams ||= @service.list_teams(current_user) + rescue => e + flash[:alert] = e.message + end + + def service + @service ||= @project.find_or_initialize_service('mattermost_slash_commands') + end +end -- cgit v1.2.1 From 841960f847f04da9c427bcdb19037e2112a90890 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 20 Dec 2016 00:22:10 +0100 Subject: Fix flow --- app/controllers/projects/mattermosts_controller.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'app/controllers/projects/mattermosts_controller.rb') diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb index c6b39add7ad..0f939838306 100644 --- a/app/controllers/projects/mattermosts_controller.rb +++ b/app/controllers/projects/mattermosts_controller.rb @@ -32,6 +32,7 @@ class Projects::MattermostsController < Projects::ApplicationController def teams @teams ||= @service.list_teams(current_user) rescue => e + @teams = [] flash[:alert] = e.message end -- cgit v1.2.1 From 61d09a7b15ef9ae2e23359f1afb87b0adbda4dd4 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 20 Dec 2016 19:11:53 +0100 Subject: WIP --- app/controllers/projects/mattermosts_controller.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'app/controllers/projects/mattermosts_controller.rb') diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb index 0f939838306..d87dff2a80e 100644 --- a/app/controllers/projects/mattermosts_controller.rb +++ b/app/controllers/projects/mattermosts_controller.rb @@ -12,13 +12,17 @@ class Projects::MattermostsController < Projects::ApplicationController end def create - @service.configure!(current_user, configure_params) - - flash[:notice] = 'This service is now configured' - redirect_to edit_namespace_project_service_path(@project.namespace, @project, service) - rescue => e - flash[:alert] = e.message - redirect_to new_namespace_project_mattermost_path(@project.namespace, @project) + result, message = @service.configure(current_user, configure_params) + + if result + flash[:notice] = 'This service is now configured' + redirect_to edit_namespace_project_service_path( + @project.namespace, @project, service) + else + flash[:alert] = message || 'Failed to configure service' + redirect_to new_namespace_project_mattermost_path( + @project.namespace, @project) + end end private @@ -31,9 +35,6 @@ class Projects::MattermostsController < Projects::ApplicationController def teams @teams ||= @service.list_teams(current_user) - rescue => e - @teams = [] - flash[:alert] = e.message end def service -- cgit v1.2.1