Temos toda a lógica implementada para sprites SVG em cenários de subpastas, e ela é usada com sucesso por vários sites. Neste caso, encontramos um caso de borda muito específico. Verificando as variáveis principais no site de @vkozyrev (no console do navegador):
> Discourse.SvgSpritePath
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
> Discourse.BaseUri
"/sales-community"
Parece correto. Agora, ao carregar a folha de sprites SVG, usamos loadScript, que por sua vez chama Discourse.getURL. Essa função é responsável por adicionar o prefixo da subpasta. Testando isso:
> Discourse.getURL(Discourse.SvgSpritePath)
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
Estranho… isso não fez nada. Outra URL aleatória funciona bem:
> Discourse.getURL("/blah")
"/sales-community/blah"
Um pouco mais de investigação revela esta linha dentro de getUrl:
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
Ou, em português: “se a URL já contiver o prefixo da subpasta, desista”. Então, o problema aqui é que o prefixo da subpasta de @vkozyrev (/sales-community) está incluído no meio da URL da folha de sprites SVG:
/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js
Fiz a verificação mais específica, para que ela verifique o prefixo da subpasta apenas no início da URL:
Embora isso me faça pensar em outros problemas potenciais… por exemplo, se alguém quisesse que o prefixo da subpasta fosse /t ou /about, ou qualquer outra URL que usamos no Discourse ![]()