Offer State update()
D3s1gn3r opened this issue · 5 comments
D3s1gn3r commented
Hello, I have a problem with update(callback) method.
I send offer to client with my bot, and when client accept/decline offer, STATE that returns in UPDATE method don't changing. It continue to send me with value 2.
DoctorMcKay commented
Can you post code showing how you're trying to use it?
D3s1gn3r commented
export const addItems = (req, res) => {
res.status(200).end('Add items request added');
const appid = 570;
const contextid = 2;
console.log(req.body)
console.log(req.params)
console.log(req.query)
let items = req.body.items;
const id = req.body.id;
User.findOne({ id: id })
.then(user => {
console.log('items to send: ', items);
if (user.tradeLink) {
const offer = manager.createOffer(user.tradeLink);
console.log('user tradelink: ', user.tradeLink);
manager.getInventoryContents(appid, contextid, true, (err, myInv) => {
if (err) {
console.log(err);
} else {
offer.getPartnerInventoryContents(
appid,
contextid,
(err, theirInv) => {
if (err) {
console.log(err);
} else {
items.map(item => {
const theirItem = theirInv.find(their => their.name === item.name);
offer.addTheirItem(theirItem);
});
console.log("TRADE CURRENT STATE *init : ", offer);
offer.send((err, status) => {
console.log("NEW TRADE ERROR: ", err);
let currentTime = moment();
let check = setInterval(() => {
let newTime = moment();
if (newTime.diff(currentTime, 'm') > 3) {
clearInterval(check);
offer.cancel();
io.to(`${req.body.socket}`).emit('error', 'trade offer failed')
}
offer.update((err) => {
//console.log("TRADE ERROR: ", err);
if(err){
console.log("TRADE OFFER ERROR: ", err);
}
else{
console.log("TRADE CURRENT STATE: ", offer);
if (offer.state === 3) {
clearInterval(check);
user.inventory = [...user.inventory, ...items];
user.save((err, result) => {
io.to(`${req.body.socket}`).emit('deposit', items);
})
}
}
});
}, 10000);
if (err) {
console.log(err);
} else {
io.to(`${req.body.socket}`).emit('info', `Sent offer. Status: ${status}.`);
// immediatelly add items
// user.inventory = [...user.inventory, ...items];
// user.save((err, result) => {
// io.to(`${req.body.socket}`).emit('deposit', items);
// })
}
});
}
}
);
}
});
} else {
io.to(`${req.body.socket}`).emit('error', 'Set tradelink, please')
}
})
.catch(err => res.end(err));
};
There you can see the whole function. Then on the line 42 update() func plus on line 49 checking for offerState equal 3 value
D3s1gn3r commented
Still waiting for Your answer... Sorry for disturbing You
DarkGL commented
Cleaning up the code would definitely help with finding the problem.
Also I feel using sentOfferChanged event would be better in that situation.
DoctorMcKay commented
Yes, sentOfferChanged is what you should be using here.