Skip to content

Service Desk list - handle alerts

What does this MR do and why?

This is the last MR in a series of changes that will change Service Desk issues list from haml file to a Vue app.

Issues Status
Create the app for service desk issues and add queries that will show all the issues created by the bot and issues count for tabs

Recreate info banner about service desk

Define tokens for search bar

CE search tokens

EE search tokens

searching functionality

Add sorting functionality

Add loading state and improve empty state

empty states

loading state

alert for errors with dismiss handle

handling of next/previous page

This MR covers:

  • handling dismiss action on alert within IssuableList component
  • displaying and clearing alert for not loaded issues/issues counts (I decided to display an empty state after dismissing)
  • displaying and clearing alerts for errors from any user interaction within IssuableList

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

Context Before After
errors from interacting with IssuableList Screen Recording 2023-08-21 at 18.00.23.mov Screen Recording 2023-08-21 at 17.55.40.mov
no issues loaded due to an error Screen Recording 2023-08-21 at 18.00.48.mov Screen Recording 2023-08-21 at 17.54.36.mov

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

SERVICE DESK SETUP

  1. Setup a service desk on your GDK: https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/service_desk_mail_room.md
  2. Send 21 emails to your Service Desk, so you have something to display on the list.

ALTERNATIVE SETUP (not idea, for this MR you will need at least 21 Service Desk issues)

  1. You can omit Service Desk setup and force an already existing issue to become a SD issue. Open the rails console: rails c
  2. Use these commands. Change 7 to the project id that matches the one you want to use for testing:
email = 'your-email@gitlab.com'
project = Project.find 7
issue = project.issues.last
issue.update!(service_desk_reply_to: email, author: User.support_bot)
IssueEmailParticipant.create!(issue: issue, email: email)
  1. In rails console enable the feature flag

    Feature.enable(:service_desk_vue_list)
    Feature.enable(:frontend_caching)
  2. Visit the project that has Service Desk setup

  3. In the main navigation click Monitor, than Service Desk.

  4. Emulate error for fetching Service Desk issues:

    1. Open file app/assets/javascripts/service_desk/components/service_desk_list_app.vue
    2. In line 180, change fullPath: this.fullPath, to fullPath: this.fullPat,
    3. Reload the view
  5. Emulate error from IssuableList component:

    1. Open file app/assets/javascripts/service_desk/components/service_desk_list_app.vue
    2. In line 500, change .put(joinPaths(issueToMove.webPath, 'reorder'), { to .put(joinPaths(issueToMove.webPath, 'reord'), {
    3. Reload the view, choose manual sorting, drag & drop any issue.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #413092 (closed)

Edited by Paulina Sedlak-Jakubowska

Merge request reports