O tópico continua sendo excluído

Aqui está o que eu consegui:

  1. O usuário cria um tópico.
  2. O usuário exclui a postagem do tópico, agendando a exclusão (mudei a configuração do site delete_removed_posts_after para 1).
  3. O tópico é excluído após o tempo especificado.
  4. A equipe desfaz a exclusão do tópico e reverte para a versão original da postagem (apenas restaurar trará a postagem de volta com a mensagem “tópico retirado pelo autor, será excluído automaticamente em 1 hora, a menos que seja sinalizado”).
  5. O tópico será excluído novamente após algum tempo.

O que está acontecendo: Quando um usuário exclui sua própria postagem de tópico, uma propriedade chamada user_deleted é definida como true. Existe um trabalho em segundo plano chamado DestroyOldDeletionStubs que é executado a cada 30 minutos. Esse trabalho executa a função PostDestroyer.destroy_stubs, que buscará no banco de dados e excluirá todas as postagens que tenham user_deleted definido como true juntamente com um “temporizador de exclusão” expirado.

O problema: Quando a equipe restaura a postagem, user_deleted nunca é definido como false. Portanto, na próxima execução de DestroyOldDeletionStubs, a postagem será excluída novamente.

A solução: Tenho quase certeza de que precisaremos adicionar alguma lógica à função staff_recovered que definirá user_deleted como false (user_recovered já faz isso). Veja: discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub

A correção rápida: Restaure a postagem do tópico e obtenha seu ID, depois vá para o console do Rails e execute:

Post.find_by_id(ID_DA_POSTAGEM).update(user_deleted: false)

O ID da postagem pode ser encontrado facilmente adicionando .json ao final da URL de um tópico. Usando este tópico como exemplo: https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json. O ID da postagem do tópico é 632362.

10 curtidas