From 54a1193d790ae40fea5db1d8596c12fbc7a93576 Mon Sep 17 00:00:00 2001 From: Mike Greiling Date: Wed, 7 Dec 2016 16:35:53 -0600 Subject: add scope filters to project snippets page --- app/finders/snippets_finder.rb | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'app/finders/snippets_finder.rb') diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb index 00ff1611039..99f1e73c800 100644 --- a/app/finders/snippets_finder.rb +++ b/app/finders/snippets_finder.rb @@ -8,7 +8,7 @@ class SnippetsFinder when :by_user then by_user(current_user, params[:user], params[:scope]) when :by_project - by_project(current_user, params[:project]) + by_project(current_user, params[:project], params[:scope]) end end @@ -47,14 +47,30 @@ class SnippetsFinder end end - def by_project(current_user, project) + def by_project(current_user, project, scope) snippets = project.snippets.fresh if current_user if project.team.member?(current_user) || current_user.admin? - snippets + case scope + when 'are_internal' then + snippets.are_internal + when 'are_private' then + snippets.are_private + when 'are_public' then + snippets.are_public + else + snippets + end else - snippets.public_and_internal + case scope + when 'are_internal' then + snippets.are_internal + when 'are_public' then + snippets.are_public + else + snippets.public_and_internal + end end else snippets.are_public -- cgit v1.2.3 From adbc37804e49e1d3ba02bf61122696e135666ff3 Mon Sep 17 00:00:00 2001 From: Mike Greiling Date: Fri, 9 Dec 2016 14:40:48 -0600 Subject: refactor duplicate code into a by_scope method --- app/finders/snippets_finder.rb | 54 +++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) (limited to 'app/finders/snippets_finder.rb') diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb index 99f1e73c800..31f039b5a70 100644 --- a/app/finders/snippets_finder.rb +++ b/app/finders/snippets_finder.rb @@ -29,21 +29,11 @@ class SnippetsFinder def by_user(current_user, user, scope) snippets = user.snippets.fresh - return snippets.are_public unless current_user - - if user == current_user - case scope - when 'are_internal' then - snippets.are_internal - when 'are_private' then - snippets.are_private - when 'are_public' then - snippets.are_public - else - snippets - end + if current_user + include_private = user == current_user + by_scope(snippets, scope, include_private) else - snippets.public_and_internal + snippets.are_public end end @@ -51,29 +41,23 @@ class SnippetsFinder snippets = project.snippets.fresh if current_user - if project.team.member?(current_user) || current_user.admin? - case scope - when 'are_internal' then - snippets.are_internal - when 'are_private' then - snippets.are_private - when 'are_public' then - snippets.are_public - else - snippets - end - else - case scope - when 'are_internal' then - snippets.are_internal - when 'are_public' then - snippets.are_public - else - snippets.public_and_internal - end - end + include_private = project.team.member?(current_user) || current_user.admin? + by_scope(snippets, scope, include_private) else snippets.are_public end end + + def by_scope(snippets, scope = nil, include_private = false) + case scope.to_s + when 'are_private' + include_private ? snippets.are_private : nil + when 'are_internal' + snippets.are_internal + when 'are_public' + snippets.are_public + else + include_private ? snippets : snippets.public_and_internal + end + end end -- cgit v1.2.3 From a68735d4985bf5ffaeaf5a051b40f8aed0c0a6e0 Mon Sep 17 00:00:00 2001 From: Mike Greiling Date: Fri, 9 Dec 2016 15:43:02 -0600 Subject: use Snippet.none in favor of nil to allow chaining --- app/finders/snippets_finder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/finders/snippets_finder.rb') diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb index 31f039b5a70..78a2f8840ed 100644 --- a/app/finders/snippets_finder.rb +++ b/app/finders/snippets_finder.rb @@ -51,7 +51,7 @@ class SnippetsFinder def by_scope(snippets, scope = nil, include_private = false) case scope.to_s when 'are_private' - include_private ? snippets.are_private : nil + include_private ? snippets.are_private : Snippet.none when 'are_internal' snippets.are_internal when 'are_public' -- cgit v1.2.3