Sizin bahsettiğiniz kullanımın bu olup olmadığını merak etmekteyim. Bu kodda /friend/status/:username adresine giderek iki kullanıcının arkadaş olup olmadıkları test edilmekte.
data.status.status
arkadaş olup olmadıklarını, data.status.sendTo
ise ilk isteği kimin gönderdiğini kontrol etmekte.
Eğer sendTo true, status false ise gönderilen arkadaşlık isteğini çekebilmek için EJS/HTML tarafında bunun simgesi görüntülenir.
Eğer sendTo ile status değeri false ise o zaman arkadaşlık isteğinin karşı taraftan geldiği bilinerek oturumu açık olan kullanıcının yanıt vermesi istenir. Bu durumda da EJS/HTML'de bu yönde bir acceptera (kabul), bir de avvisa (red) butonları oluşturulur.
Yapmış olduğum bu ama bu tam olarak sizin söylediğiniz sistem mi onu bilmiyorum. İnternette yazılmış kod örneklerine bakınca çok fazla çeşit ve kullanım farklılığı gördüm. Bu da benim kafamı karıştırdı.
<script>
const pathname = window.location.pathname;
username = pathname.split('/')[2];
$.get('/friend/status/' + username, function(data) {
function createButton(aProcess, src, onclick) {
const buttoni = $('<a/>').attr('id', 'action-' + aProcess).attr('onclick', onclick).appendTo('#actions-content');
const ico = $('<img>').addClass('action-button').attr('id', 'action-' + aProcess + '-button').attr('src', src).appendTo(buttoni);
}
try {
if (!data.status.status && data.status.sendTo) {
createButton('avvisa', '/public/ico/rm-friend.svg', `friendAdd('${username}')`);
}else if (!data.status.status && !data.sendTo) {
createButton('avvisa', '/public/ico/rm-friend.svg', `friendAvvisa('${username}')`);
createButton('acceptera', '/public/ico/acp-friend.svg', `friendAcceptera('${username}')`);
}else{
createButton('add', '/public/ico/add-friend.svg', `friendAcceptera('${username}')`);
}
} catch(e) {
createButton('add', '/public/ico/add-friend.svg', `friendAdd('${username}')`);
}
});
function friendAcceptera(username){
$.get('/friend/acp/' + username, function(data) {
location.reload();
});
};
function friendAvvisa(username){
$.get('/friend/avv/' + username, function(data) {
location.reload();
});
};
function friendAdd(username) {
$.get('/friend/req/' + username, function(data){
if(data.processTyp && data.status){
$('.action-button').attr('src', '/public/ico/rm-friend.svg');
}else if(data.status && !data.proccesTyp){
$('.action-button').attr('src', '/public/ico/add-friend.svg');
};
});
};
</script>