Skip to content

Commit

Permalink
Hotfix: Alguns links de vagas não funcionam no Safari do Ipad (#334)
Browse files Browse the repository at this point in the history
Olá a todos,

Anteriormente havia feito um pull request sobre uma correção de links de
vagas não funcionarem corretamente no Safari do Iphone. O pull request
resolveu o problema no Iphone, mas aparentemente no Ipad o problema
ainda persiste.

[PR anterior](#333)

Ao investigar o problema, encontrei inúmeros relatos que além da
substituição do "window.open", também deve ser feito um tratamento para
a abertura de links que são feitos dentro de chamadas assíncronas, como
por exemplo: Dentro de um fetch, que é o caso do card de vagas, onde o
link é aberto dentro de um fetch.

Existe evidências de outras pessoas no stack overflow com o mesmo
problema/solução:

[Evidência](https://stackoverflow.com/a/70463940)

Também gerei reproduções dentro do codepen, emulando um link sendo
aberto dentro de um fetch:

Com o bug no IOS:

[Com bug](https://codepen.io/WillRy/pen/wBwGNJP)

Sem bug no IOS:

[Sem bug](https://codepen.io/WillRy/pen/JoPXwpw)

Ao colocar a abertura do link dentro de um setTimeout, o safari não
bloqueia as operações de abertura de links, há pouca explicação
disponível na internet sobre a causa do problema, mas acredito ser algo
relacionado a callback queue.

Caso tenha algum dispositivo com o Safari, vai conseguir ver na prática
o problema nos links do codepen que enviei

Fiz os testes em Iphone e Ipad, nas versões que estou utilizando
funcionou, mas seria interessante um teste com mais alguém que tem
dispositivos IOS (o que é difícil achar em abundância, devido ao custo
nada barato huehuehue)


Desde já, muito obrigado
  • Loading branch information
WillRy authored Jan 29, 2025
1 parent 8284870 commit 52850e3
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions apps/web/app/components/ui/JobCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ const JobCard = ({ job, skillsFromProps }) => {
}, [job.salary])

const handleRedirect = useCallback((linkUrl: string) => {
const a = document.createElement("a");
a.setAttribute('href', linkUrl);
a.setAttribute('target', '_blank');
a.click();
setTimeout(() => {
const a = document.createElement("a");
a.setAttribute('href', linkUrl);
a.setAttribute('target', '_blank');
a.click();
})
}, []);

const handleClick = useCallback(
Expand Down

0 comments on commit 52850e3

Please sign in to comment.