mirror of
https://github.com/discourse/discourse.git
synced 2025-06-05 14:07:30 +08:00
FIX: Do not lose admin sidebar when opening chat drawer (#26235)
This commit fixes an issue where the following happens: 1. You open /admin as a member of the admin_sidebar_enabled_groups 1. You then click the chat icon in the header when you prefer to have drawer open, or if you just minimise chat into drawer after it opens fullscreen 1. You lose the admin sidebar panel, and are reset instead to the main panel Also included is a bit of refactoring to make it so the forcing of admin sidebar state is in one place.
This commit is contained in:
@ -62,12 +62,20 @@ export default class ChatStateManager extends Service {
|
||||
|
||||
didOpenDrawer(url = null) {
|
||||
withPluginApi("1.8.0", (api) => {
|
||||
if (getUserChatSeparateSidebarMode(this.currentUser).always) {
|
||||
api.setSidebarPanel(MAIN_PANEL);
|
||||
api.setSeparatedSidebarMode();
|
||||
api.hideSidebarSwitchPanelButtons();
|
||||
} else {
|
||||
api.setCombinedSidebarMode();
|
||||
const adminSidebarStateManager = api.container.lookup(
|
||||
"service:admin-sidebar-state-manager"
|
||||
);
|
||||
|
||||
if (
|
||||
adminSidebarStateManager === undefined ||
|
||||
!adminSidebarStateManager.maybeForceAdminSidebar()
|
||||
) {
|
||||
if (getUserChatSeparateSidebarMode(this.currentUser).always) {
|
||||
api.setSeparatedSidebarMode();
|
||||
api.hideSidebarSwitchPanelButtons();
|
||||
} else {
|
||||
api.setCombinedSidebarMode();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -84,20 +92,30 @@ export default class ChatStateManager extends Service {
|
||||
|
||||
didCloseDrawer() {
|
||||
withPluginApi("1.8.0", (api) => {
|
||||
api.setSidebarPanel(MAIN_PANEL);
|
||||
const adminSidebarStateManager = api.container.lookup(
|
||||
"service:admin-sidebar-state-manager"
|
||||
);
|
||||
|
||||
const chatSeparateSidebarMode = getUserChatSeparateSidebarMode(
|
||||
this.currentUser
|
||||
);
|
||||
if (chatSeparateSidebarMode.fullscreen) {
|
||||
api.setCombinedSidebarMode();
|
||||
api.showSidebarSwitchPanelButtons();
|
||||
} else if (chatSeparateSidebarMode.always) {
|
||||
api.setSeparatedSidebarMode();
|
||||
api.showSidebarSwitchPanelButtons();
|
||||
} else {
|
||||
api.setCombinedSidebarMode();
|
||||
api.hideSidebarSwitchPanelButtons();
|
||||
|
||||
if (
|
||||
adminSidebarStateManager === undefined ||
|
||||
!adminSidebarStateManager.maybeForceAdminSidebar()
|
||||
) {
|
||||
api.setSidebarPanel(MAIN_PANEL);
|
||||
|
||||
if (chatSeparateSidebarMode.fullscreen) {
|
||||
api.setCombinedSidebarMode();
|
||||
api.showSidebarSwitchPanelButtons();
|
||||
} else if (chatSeparateSidebarMode.always) {
|
||||
api.setSeparatedSidebarMode();
|
||||
api.showSidebarSwitchPanelButtons();
|
||||
} else {
|
||||
api.setCombinedSidebarMode();
|
||||
api.hideSidebarSwitchPanelButtons();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
describe "Admin Revamp | Sidebar Navigation | Plugin Links", type: :system do
|
||||
fab!(:admin)
|
||||
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
|
||||
let(:chat_page) { PageObjects::Pages::Chat.new }
|
||||
|
||||
before do
|
||||
chat_system_bootstrap
|
||||
@ -56,5 +57,23 @@ describe "Admin Revamp | Sidebar Navigation | Plugin Links", type: :system do
|
||||
find("#site-logo").click
|
||||
expect(sidebar).to have_section("chat-channels")
|
||||
end
|
||||
|
||||
it "keeps the admin sidebar open instead of switching to the main panel when toggling the drawer" do
|
||||
membership =
|
||||
Fabricate(
|
||||
:user_chat_channel_membership,
|
||||
user: admin,
|
||||
chat_channel: Fabricate(:chat_channel),
|
||||
)
|
||||
admin.upsert_custom_fields(::Chat::LAST_CHAT_CHANNEL_ID => membership.chat_channel.id)
|
||||
chat_page.prefers_full_page
|
||||
visit("/admin")
|
||||
expect(sidebar).to have_section("admin-nav-section-root")
|
||||
chat_page.open_from_header
|
||||
expect(sidebar).to have_no_section("admin-nav-section-root")
|
||||
chat_page.minimize_full_page
|
||||
expect(chat_page).to have_drawer
|
||||
expect(sidebar).to have_section("admin-nav-section-root")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user