Skip to content

Кнопка 'Взять диалог' не работает + UX проблемы на странице чатов #171

@dapi

Description

@dapi

Описание проблемы

На странице чатов (/chats) обнаружено три UX-проблемы:

1. Кнопка "Взять диалог" не работает 🔴 Critical

Ожидаемое поведение: При клике на кнопку "Взять диалог" чат переходит в режим менеджера.

Фактическое поведение: Ничего не происходит, кнопка остаётся без изменений.

Причина: Контроллер Tenants::Chats::ManagerController#takeover всегда рендерит JSON ответ (строки 69-77), игнорируя turbo_stream запросы:

# app/controllers/tenants/chats/manager_controller.rb:60-78
def takeover
  result = Manager::TakeoverService.call(...)
  
  if result.success?
    render json: { ... }  # <-- всегда JSON!
  else
    render json: { ... }
  end
end

При этом turbo_stream шаблон app/views/tenants/chats/takeover.turbo_stream.slim существует, но не используется!

Решение: Добавить respond_to блок:

def takeover
  result = Manager::TakeoverService.call(...)

  respond_to do |format|
    format.turbo_stream if result.success?
    format.json do
      if result.success?
        render json: { success: true, chat: chat_json(result.chat), ... }
      else
        render json: { success: false, error: result.error }, status: :unprocessable_entity
      end
    end
  end
end

2. Курсор над кнопкой не pointer 🟡 Minor

Ожидаемое поведение: При наведении на кнопку "Взять диалог" курсор должен меняться на pointer.

Фактическое поведение: Курсор остаётся стандартным.

Файл: app/views/tenants/chats/_chat_controls.html.slim:8

Решение: Добавить класс cursor-pointer к кнопке.

3. URL не обновляется при клике на чат 🟡 Medium

Ожидаемое поведение: При клике на чат в списке URL должен меняться на /chats/123.

Фактическое поведение: URL остаётся /chats или /chats?page=2, пользователь не может поделиться ссылкой на конкретный чат.

Причина: В link_to отсутствует data-turbo-action="advance":

# app/views/tenants/chats/_chat_list.html.slim:4
= link_to tenant_chat_path(chat), class: "...", id: "chat_list_item_#{chat.id}"

Решение: Добавить data: { turbo_action: "advance" }:

= link_to tenant_chat_path(chat), class: "...", id: "chat_list_item_#{chat.id}", data: { turbo_action: "advance" }

Файлы для изменения

  • app/controllers/tenants/chats/manager_controller.rb — добавить respond_to в takeover, release, create_message
  • app/views/tenants/chats/_chat_controls.html.slim — добавить cursor-pointer
  • app/views/tenants/chats/_chat_list.html.slim — добавить data-turbo-action="advance"

Шаги для воспроизведения

  1. Авторизоваться в tenant dashboard
  2. Перейти на /chats
  3. Кликнуть на чат в списке — URL не меняется
  4. Навести курсор на кнопку "Взять диалог" — курсор не pointer
  5. Кликнуть на кнопку "Взять диалог" — ничего не происходит

Среда

Связанные документы

  • US-010: Tenant Chat Takeover
  • TSD-011: Tenant Chat Takeover Technical Specification

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions