我正在开发一个协作设置,该设置将聊天定位为成员沟通的主要空间,类似于其他协作平台。目标是让成员直接进入他们的频道或最新帖子,使聊天成为他们访问网站时的中心枢纽。
因此,而不是登陆到这样的视图:
我将直接进入全屏聊天:
目前似乎没有办法默认以全屏模式打开聊天。能否添加此选项?
它可以作为站点设置、主题修改器或值转换器公开。一种为主题作者或站点管理员提供灵活性,将聊天作为默认交互视图集成的方式。
我正在开发一个协作设置,该设置将聊天定位为成员沟通的主要空间,类似于其他协作平台。目标是让成员直接进入他们的频道或最新帖子,使聊天成为他们访问网站时的中心枢纽。
因此,而不是登陆到这样的视图:
我将直接进入全屏聊天:
目前似乎没有办法默认以全屏模式打开聊天。能否添加此选项?
它可以作为站点设置、主题修改器或值转换器公开。一种为主题作者或站点管理员提供灵活性,将聊天作为默认交互视图集成的方式。
您可以这样编写一个初始化器:
export default {
name: "default-full-page-chat",
initialize() {
if (!window.localStorage.getItem("discourse_chat_preferred_mode")) {
window.localStorage.setItem("discourse_chat_preferred_mode", '\"FULL_PAGE_CHAT\"');
}
},
};
我想这应该可以满足您的需求。
确实,效果很好!谢谢你:blush:
我知道这已经解决了,但与其直接访问 localstorage,不如如果你能从主题访问插件服务,你可以这样做:
export default {
name: "default-full-page-chat",
initialize(container) {
const chat = container.lookup("service:chat");
if (!chat.userCanChat) {
return;
}
const chatStateManager = container.lookup("service:chat-state-manager");
chatStateManager.prefersFullPage();
},
};
这会调用:
如果有效(我还没测试
),这在长期内会更可靠。
是的,使用服务更好,但我不认为我们有任何方法来检查是否已通过服务设置任何首选项。我们有吗?
而且如果我理解了这里的请求,我们不想覆盖用户的任何决定,我们只想在首次加载时推广全屏,如果我们只想强制执行,是的,您的解决方案会起作用。
我们有这些,但如果没有设置偏好设置,isDrawerPreferred 始终为 true:
我认为如果我们有一个 hasNoPreferredMode getter 来处理这种情况,它只是检查存储,那就太好了,这是一个 PR:
好的 @manuel,这个 PR 现在已经合并了,所以你可以使用我在 Full-screen chat as default for collaboration setup - #4 by martin 中描述的插件 API 和 chat state manager 中的 hasNoPreferredMode。
嗨 @nolo,只是一个快速的提示:
在全屏聊天模式下,通常需要退出全屏(或以其他方式更改聊天界面),然后才能看到一个清晰的选项,以返回聊天列表或切换到与另一位成员的对话。
如果有一种方法可以在全屏本身内改善导航体验,则可能值得考虑。
谢谢 @martin,这效果很棒!
在我的实际使用场景中测试了用户体验,实际上让聊天一直全屏显示感觉更直观。我想让聊天成为主要的沟通方式,而允许最小化可能会让用户意外地进入他们并非有意选择的屏幕,这可能会造成混淆。
我想直接用 CSS 来隐藏最小化选项,除非有更直接的方法来禁用它?
@jahan_gagan 我不太确定你指的是什么,这是指使用汉堡菜单进行导航的网站吗?在我的设置中,所有导航选项都可以通过侧边栏访问。
不过我遇到了一个问题:在平板电脑上,导航到聊天频道时键盘会自动弹出,这会导致布局非常不稳定。我还没有研究如何解决这个问题,只是在此指出这是一个复杂问题。
是的,隐藏折叠按钮可以解决问题,但我刚刚检查了一下,用户还可以通过另一种方式切换回抽屉模式。如果在论坛中按下“-”键,我们会打开聊天抽屉:
在此函数中,我们调用了 chatStateManager.prefersDrawer(),它会设置本地存储的偏好。最近我们内部就允许 Discourse 仅聊天模式进行了更多讨论,包括一项这方面的实验,以及关于抽屉模式的想法。
谢谢,这真的很有帮助!现在还不确定我会怎么做,但是如果将来能有选项将其与常见的 Discourse 设置完全对齐,那就太好了。