gitlab-org--gitlab-foss/app/finders
Rémy Coutable 0eea8c8857 Support slash commands in noteable description and notes
Some important things to note:

- commands are removed from noteable.description / note.note
- commands are translated to params so that they are treated as normal
  params in noteable Creation services
- the logic is not in the models but in the Creation services, which is
  the right place for advanced logic that has nothing to do with what
  models should be responsible of!
- UI/JS needs to be updated to handle notes which consist of commands
  only
- the `/merge` command is not handled yet

Other improvements:

- Don't process commands in commit notes and display a flash is note is only commands
- Add autocomplete for slash commands
- Add description and params to slash command DSL methods
- Ensure replying by email with a commands-only note works
- Use :subscription_event instead of calling noteable.subscribe
- Support :todo_event in IssuableBaseService

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-08-13 00:05:57 +02:00
..
branches_finder.rb implements the basic filter functionality 2016-07-19 19:30:10 +01:00
contributed_projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
group_projects_finder.rb Fix groups API to list only user's accessible projects 2016-05-24 18:14:12 -07:00
groups_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
issuable_finder.rb State specific default sort order for issuables 2016-08-01 11:28:56 +02:00
issues_finder.rb Restrict access to confidential issues 2016-03-17 20:55:38 -03:00
joined_groups_finder.rb Address feedback 2016-03-22 00:09:20 +01:00
merge_requests_finder.rb Refactor finders. Prevent circular dependency error 2014-09-02 15:28:27 +03:00
milestones_finder.rb sort milestones by due_date 2015-12-03 08:53:34 -06:00
notes_finder.rb Fix notes on confidential issues through JSON to users without access 2016-06-14 17:51:17 -03:00
personal_projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
pipelines_finder.rb PipelinesFinder use git cached data 2016-06-29 07:10:58 +02:00
projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
README.md Set milestone on new issue when creating issue from index with milestone filter active. 2015-05-27 14:22:11 +02:00
snippets_finder.rb Project members with guest role can't access confidential issues 2016-06-13 19:32:00 -03:00
todos_finder.rb Support slash commands in noteable description and notes 2016-08-13 00:05:57 +02:00
trending_projects_finder.rb Revamp trending projects query 2015-10-06 17:26:32 +02:00
union_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00

Finders

This type of classes responsible for collection items based on different conditions. To prevent lookup methods in models like this:

class Project
  def issues_for_user_filtered_by(user, filter)
    # A lot of logic not related to project model itself
  end
end

issues = project.issues_for_user_filtered_by(user, params)

Better use this:

issues = IssuesFinder.new(project, user, filter).execute

It will help keep models thiner.