Adicionar opção Pendente às ações do tópico

Desculpe pelo atraso. Tenho pensado bastante sobre isso.

Deixar uma postagem como pendente significa excluir permanentemente a postagem e armazenar todos os dados necessários para recriá-la no atributo payload do reviewable. Tive que reescrever isso algumas vezes porque estava preocupado com a perda de dados nessa transição devido a associações marcadas com dependent: :destroy ou dependent: :delete_all. No entanto, após alguns testes, acredito que deve ser seguro fazer isso.

Fazer isso quando um tópico não tem respostas ou quando não é a primeira postagem deve exigir um esforço baixo a moderado. Toda a lógica para enfileirar uma postagem está dentro do método NewPostManager#enqueue, então teremos que extraí-la para uma classe separada e reutilizá-la. Sempre adicionamos postagens pendentes no final do tópico após a aprovação, então adicioná-las em uma posição específica exigirá um pouco mais de trabalho.

Mover um tópico com respostas de volta para pendente deve ser mais complicado usando essa abordagem. Serializá-lo em um reviewable parece um pouco exagerado. Talvez pudéssemos simplesmente ocultar o tópico temporariamente? Por exemplo, já fazemos isso quando uma postagem é sinalizada como spam por um usuário confiável.

Alternativamente, poderíamos sempre sinalizar + excluir (ou ocultar) em vez disso, tornando tudo muito mais fácil. Não consigo pensar em nenhuma razão pela qual excluir permanentemente e enfileirar a postagem seria melhor.

2 curtidas