Como criar um filtro de tópicos baseado no grupo de usuário atual e na localização do tópico

Olá,

Estou desenvolvendo um plugin que filtra todos os tópicos com base na origem do post e no grupo ao qual o usuário que visualiza o tópico pertence. O caso de uso aqui é ter uma equipe de suporte em diferentes países atendendo a perguntas provenientes de suas próprias regiões.

Sou um iniciante na criação de plugins para Discourse e ainda estou aprendendo como fazer isso. A localização dos tópicos será tratada pelo plugin de localizações disponível em Locations Plugin 🌍.

Além disso, adicionarei os usuários que precisam dessa visualização filtrada a um grupo com um nome como NA_queue ou EU_queue.

O plugin verificará se o usuário está logado e se o grupo principal está definido. Caso positivo, ele filtrará todos os tópicos para corresponder à fila à qual o usuário atual pertence.

Estou pensando que isso poderia ser feito com algo semelhante ao código a seguir:
after_initialize do
require_dependency ‘topic_query’

  # Se estiver logado e com grupo principal definido

  # É necessário obter o grupo principal do usuário
  # É necessário obter a localização do tópico

  TopicQuery.add_custom_filter(:location) do |results, topic_query|
    filter = "ALGUMA CONSULTA SQL AQUI"
    results = results.joins("{filter}")

    results
  end

Essa é uma boa abordagem para o meu problema?
Além disso, alguém tem sugestões sobre como seria a consulta SQL ou como obter essas duas informações comentadas?

Não tenho permissão para atualizar minha pergunta, então vou apenas postar isso aqui. Atualização:

Estou me perdendo em como passar o usuário atual do lado do navegador (JS) para o meu código rodando no lado do servidor. Provavelmente existe um guia por aí que explica isso, mas ainda não encontrei :frowning:

O código a seguir funciona muito bem como um filtro na localização da postagem:
after_initialize do

# obtém o usuário atual passado de alguma forma do lado do cliente
def self.filter_on_user

  require_dependency 'topic_query'

  # se o usuário atual tiver um grupo primário, defina o código do país
  # por enquanto, assuma que o código do país é US para os EUA
 countrycode = "us" 

  # filtra por esse código de país para todas as consultas de tópico no site para aquele usuário.
  TopicQuery.add_custom_filter(:location) do |results, topic_query|

    results = results.joins("JOIN topic_custom_fields tc ON
                             topics.id = tc.topic_id AND
                             tc.name = 'location' AND
                             tc.value LIKE '%countrycode\":\"#{countrycode}%'
                             ")
 results
  end
end

filter_on_user

end