Sou membro de um fórum Discourse (BlenderArtists.org) e tenho um monitor 4K, que me permite exibir duas páginas do fórum lado a lado.
Às vezes, quando planejo escrever um comentário longo e preparo minha resposta (com várias citações de um tópico extenso atual), abro o Editor de Mensagens na página da esquerda e navego pelo mesmo tópico na página da direita.
Mas, ao fazer isso, a seguinte mensagem aparece com muita frequência:
O rascunho está sendo editado em outra janela. Por favor, recarregue esta página.
Não me oponho a esse aviso (sei que é útil em algumas situações).
Mas seria possível adicionar uma opção nas preferências do usuário para desativá-lo? Ou definir a frequência de exibição (o temporizador)?
Essa mensagem de aviso impede que eu escreva a mensagem com tranquilidade.
Desculpe, recebemos muitas solicitações de suporte sobre isso, então o lembrete é intencional. É um fluxo de trabalho muito arriscado e você pode perder todo o seu post.
Nós tentamos automaticamente abrir o rascunho para edição quando você entra em um tópico. Mesmo que você minimize imediatamente o compositor, ele ainda estará ativo e em conflito.
Sim, já tive esse problema. É definitivamente irritante quando acontece, mas concordo com o Jeff: precisamos ter cautela aqui devido aos problemas históricos.
Minha solução costuma ser abrir o tópico em duas abas e só começar a escrever depois que ambas forem carregadas.
Também já fui afetado pela abertura automática do rascunho, mas o problema vai além de apenas receber a mensagem de aviso. Voltei a digitar minha postagem e, mais tarde, recebi o pop-up tentando me redirecionar para outra aba que continha um rascunho mais antigo. Nesse ponto, se eu atualizar a página, recebo apenas a versão mais antiga do meu rascunho; portanto, nesse sentido, esse recurso não está realmente impedindo o que deveria.
Não tenho certeza se isso ocorre antes de você começar a digitar. Acabei de tentar reproduzir no meta, e só aconteceu quando comecei a digitar na segunda aba. Costumo ativar isso pouco depois de duplicar minha aba para consultar o que estou escrevendo. Perdoo de qual aba comecei, e quando começo a digitar na segunda aba por engano, o aviso aparece.
Seria possível ou razoável detectar se outra aba já tem o editor aberto para o tópico em questão e, se for o caso, não abrir o editor para a nova aba?
Muito complicado, na verdade… talvez haja algo que possamos fazer com web workers, mas seria uma mudança enorme que eu não gostaria de fazer.
Preciso de uma reprodução exata, passo a passo. Nosso aviso é acionado muito cedo; na pior das hipóteses, você perderia algumas palavras. Imagino que, se você estiver offline, as coisas podem ficar estranhas, mas isso é um caso muito específico… a solução alternativa é copiar e colar.
Acabei de dar uma olhada na mensagem original (OP).
Não consegui reproduzir isso. Você pode fornecer os passos exatos que levam a essa mensagem incorreta? Se você não estiver editando, há apenas um caso específico em que essa mensagem aparece, e até isso é questionável. Mas é um caso muito trivial.
Abra a aba 1… comece a redigir a resposta
Abra a aba 2… navegue por aí
Na aba 1… continue redigindo
Na aba 2… minimize o editor (você recebe uma mensagem de aviso… mas apenas uma vez)
O que pode estar acontecendo e causando confusão:
Abra a aba 1… comece a redigir a resposta
Abra a aba 2… por engano, cite algo para a resposta
Na aba 1… continue redigindo… o aviso permanece… persistentemente (porque estaríamos descartando a citação de (2))
Não tenho certeza do que corrigir aqui… preciso de reproduções.
Definitivamente já tive momentos em que perdi uma quantidade significativa de conteúdo. Por esse motivo, tenho cuidado para não acionar esse aviso, então não me lembro dos passos exatos que causaram a perda significativa neste momento.
Acho que o problema pode ser se isso salvar um rascunho, sobrescrevendo o que você fez na aba 1. Se isso acontecer, pode resultar em uma perda significativa de conteúdo. Isso é apenas especulação por enquanto, mas vou ver se consigo reproduzir o problema dessa forma e te aviso.
Entendo que você precisa de passos para reproduzir. Configurei um lembrete () para olhar amanhã à noite. Seria útil saber (em alto nível) como o teste de conflito funciona. Há um identificador único gerado no carregamento da página ou algo assim?
Basicamente, quero dizer que, se houver uma corrida… e dois compositores estiverem respondendo ao mesmo tópico para o mesmo usuário… apenas um vence. Cada vez que salvamos, um proprietário é escolhido.
Certo, @sam, tenho os passos para reproduzir o problema. Não sei se isso está relacionado ao problema original do OP (já que essa conversa se desviou um pouco), mas, de qualquer forma, eis o que tenho. Basicamente, se você abrir a guia 2 mas continuar digitando na guia 1 antes que a guia 2 termine de carregar, a nova página entra em um estado inválido. Se você continuar digitando na guia 1 enquanto a guia 2 ainda estiver carregando, a guia 2 carregará o rascunho da guia 1 como ele estava no momento em que a página foi aberta, mas você ainda poderá editar na guia 2 mesmo após a guia 1 ter salvo alterações adicionais (sobrescrevendo, assim, essas alterações). Aqui estão os passos para reproduzir:
Abra o tópico A e comece a redigir uma resposta.
Pare de digitar para que o rascunho seja salvo.
Abra o tópico A em uma nova guia (duplicar a guia ou clicar com o botão direito/meio no título do tópico é a maneira mais fácil de reproduzir, pois elas precisam carregar a página inteira e, portanto, são mais lentas).
Imediatamente continue redigindo a resposta na guia 1, antes que a guia 2 termine de carregar.
Pare de digitar para que o rascunho seja salvo novamente (isso terá sucesso, como esperado).
Vá para a guia 2 e digite no editor.
Pare de digitar. O rascunho será salvo, mesmo que o aviso devesse aparecer. Isso sobrescreverá todas as alterações adicionais que você fez na guia 1 a partir do passo #4. (Se você receber o aviso como esperado, provavelmente esperou muito tempo para começar a digitar no passo #4.) Note que, neste ponto, você também não poderá digitar novamente na guia 1 sem recarregar essa guia.
Observe que, no passo #4, você não precisa realmente parar de digitar e salvar um rascunho antes que a guia 2 termine de carregar. Apenas começar a digitar é o que coloca tudo em um estado inválido. Na verdade, não é incomum abrir uma guia duplicada em segundo plano para verificar coisas mais tarde e continuar digitando na guia 1 no meio tempo. Mas fazer isso muito rapidamente colocará as guias em um estado inválido e permitirá que você acidentalmente sobrescreva o que adicionou na guia 1. Claro, minimizar o editor também salva um rascunho; então, uma vez que você entre nesse estado inválido, basta minimizar o editor na guia 2 para tirá-lo do caminho, o que sobrescreverá seu último rascunho da guia 1.
Neste ponto, se você voltar para a guia 1, onde originalmente estava redigindo sua mensagem, não poderá mais digitar e receberá o aviso que deveria ter aparecido na guia 2. Se você perceber que seu rascunho foi perdido, pode, claro, copiar o conteúdo do editor da guia 1. Mas, se não percebeu e recarregou a página (seguindo as instruções do aviso), você perderá as alterações feitas e não terá como recuperá-las.
Me avise se ainda tiver dificuldade em reproduzir o problema com esses passos. Consigo reproduzir o problema com bastante consistência seguindo esses passos (alternando ocasionalmente para novos tópicos para obter rascunhos frescos), então espero que isso seja suficiente informação.
Muito obrigado pelo caso de reprodução. Foi espetacular e me ajudou a isolar o problema rapidamente.
Sinto que minha resposta anterior sobre como mantemos o controle das versões de rascunho foi um pouco vaga. Acredito que se resume a eu ter sido um pouco ingênuo e ambicioso no meu algoritmo. Essa é uma combinação perigosa. O novo algoritmo é muito mais fácil de explicar.
Sempre que o cliente salva um rascunho, ele informa ao servidor qual é o seu “número de sequência”.
Se o número de sequência corresponder, o servidor aumentará o número de sequência em 1 e o retornará ao cliente (nosso novo número de sequência).
Se o número de sequência não corresponder, o servidor informará ao cliente que há um conflito e não salvará o rascunho.
Ao recarregar/carregar a página, o servidor informa ao cliente qual é o número de sequência atual.
Minha implementação anterior era muito complexa; tentava evitar o aumento do número de sequência sob várias condições, rastreando o proprietário de uma sequência. Seu caso de teste mostrou o quão ruim isso é e como pode causar perda de conteúdo.
Isso já deve estar ativo no meta. Me avise se conseguir encontrar mais casos extremos nesse sistema.
Isso exige bastante trabalho, alternando entre abas no navegador, mas sim… o abandono certamente está falhando em abandonar neste caso, devemos corrigir isso.