Bate-papo em tela cheia como padrão para configuração de colaboração

Estou trabalhando em uma configuração de colaboração que posiciona o Chat como o principal espaço para comunicação dos membros, semelhante a outras plataformas de colaboração. O objetivo é que os membros acessem diretamente seus canais ou os tópicos mais recentes, tornando o chat o centro principal quando visitarem o site.

Em vez de acessar uma visualização como esta:

Eu acessaria o chat em tela cheia:

Parece que atualmente não há como ter o chat aberto em tela cheia por padrão. Isso poderia ser adicionado como uma opção?

Poderia ser exposto como uma configuração do site, um modificador de tema ou um transformador de valor. Uma maneira de dar aos autores de temas ou administradores do site a flexibilidade de integrar o Chat como a visualização de interação padrão.

5 curtidas

Você pode escrever um inicializador assim:

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\"');
    }
  },
};

Isso deve fazer o que você quer, eu acho.

8 curtidas

De fato, funciona perfeitamente! Obrigado :blush:

7 curtidas

Eu sei que já foi resolvido, mas em vez de acessar o localStorage diretamente assim, se você puder acessar os serviços do plugin a partir de um tema, você pode fazer:

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();
  },
};

O que chama isso:

Isso seria mais confiável a longo prazo, se funcionar (eu não testei isso :sweat_smile: ).

5 curtidas

Sim, usar o serviço é melhor, mas não acho que tenhamos como verificar se alguma preferência foi definida por meio do serviço atualmente. Temos?

E se entendi o pedido aqui, não queremos substituir nenhuma decisão do usuário, apenas queremos promover a tela cheia no primeiro carregamento, se quisermos apenas forçar, sim, sua solução funcionará.

4 curtidas

Temos estes, mas isDrawerPreferred é sempre true se nenhuma preferência foi definida:

Eu acho que seria bom se tivéssemos um getter hasNoPreferredMode para esta situação que apenas verifica o store, aqui está um PR:

4 curtidas

Ok @manuel este PR foi mesclado agora, então você pode usar a API de plugin que descrevi em Full-screen chat as default for collaboration setup - #4 by martin e hasNoPreferredMode do gerenciador de estado do chat.

2 curtidas

Oi @nolo, só uma nota rápida:

No modo de chat em tela cheia, você normalmente precisa sair da tela cheia (ou mudar a interface do chat de alguma outra forma) antes de ver uma opção clara para voltar à lista de chats ou mudar para uma conversa com outro membro.

Pode valer a pena considerar se há uma maneira de melhorar essa experiência de navegação dentro da própria tela cheia.

Obrigado @martin, isso funciona muito bem!

Testando a UX no meu caso atual, na verdade parece mais intuitivo ter o Chat em tela cheia o tempo todo. Quero que o Chat seja o principal modo de comunicação, e permitir que ele seja minimizado pode fazer com que os usuários acabem em uma tela que não escolheram intencionalmente antes, o que pode ser confuso.

Estou pensando em usar apenas CSS para ocultar a opção de minimizar, a menos que haja uma maneira mais direta de desativá-la?


@jahan_gagan Não tenho certeza a que você estava se referindo, isso é em sites que usam um menu hambúrguer para navegação? Na minha configuração, todas as opções de navegação estão disponíveis através da barra lateral.

No entanto, encontrei um problema: em tablets, o teclado aparece automaticamente ao navegar para um canal de chat e isso causa um layout muito instável. Ainda não procurei resolver isso, apenas observando como uma complicação.

3 curtidas

Sim, ocultar o botão de colapso funcionaria, mas acabei de verificar e há mais uma maneira de os usuários voltarem ao modo de gaveta. Se você pressionar a tecla - quando estiver no fórum, abriremos a gaveta de chat:

E nesta função chamamos chatStateManager.prefersDrawer(), que define a preferência de armazenamento local. Tivemos mais algumas discussões internamente sobre permitir um modo somente de chat do Discourse, incluindo um experimento nessa direção, bem como ideias sobre o modo de gaveta.

Não tenho certeza de quando teremos tempo para focar mais nisso, @mcwumbly pode ter alguma contribuição aqui ou @lindsey.

2 curtidas

Obrigado, é muito útil saber disso! Não tenho certeza do que farei agora, mas sim, seria ótimo se houvesse uma opção futura para alinhar isso totalmente com as configurações comuns do Discourse.

1 curtida