, так как я совершенно новый, чтобы реагировать на нативную, я столкнулся с проблемой с обновлением моего состояния. Я получил в корзине массив корзин, в которых хранится информация о корзине и все элементы, выбранные пользователем для синхронизации c с сервером. Всякий раз, когда я пытаюсь синхронизировать c корзины с моей функцией на сервере, я получаю сообщение об ошибке, что элементы больше не определяются в объекте состояния. Кто-нибудь знает, как это исправить?
Я использую TypeORM локально для сохранения изменений для пользователя, который на самом деле работает, но обновление состояния не работает, массив элементов в корзине после setCarts(newCarts)
вызов всегда неопределен. Так как элементы содержат синхронизированную метку времени, я перебираю getSyncState()
над ними, чтобы получить син c состояние самой корзины в FlatList.
const syncAllCarts = async () => {
let tempCarts = carts;
let newCarts = tempCarts.map(async cart => {
if (getSyncState(cart) === 0) {
cart.items = cart.items.map(async item => {
if (item.state !== 1) {
postData({
SiteNumber: item.site.sitenum,
SiteTitle: item.site.title,
ArticleNumber: item.article.artnum,
Quantity: item.quantity,
Uuid: cart.uuid,
Scanned: cart.created
}).then(async (data) => {
const itemRepo = getRepository(Item);
const dbItem = await itemRepo.findOne({where: {id: item.id}});
if (data.status === true) {
const syncDate = Math.round((new Date()).getTime() / 1000);
dbItem.state = 1;
dbItem.synchronized = syncDate;
item.state = 1;
item.synchronized = syncDate;
await itemRepo.save(dbItem);
} else {
Alert.alert('Fehler bei der Übertragung', 'Leider ist ein Fehler aufgetreten, prüfen Sie Ihre Verbindung.');
dbItem.state = -1;
item.state = -1;
dbItem.message = typeof response !== 'undefined' ? response.message : 'no connection';
await itemRepo.save(dbItem);
}
}).catch((e) => {
Alert.alert('Fehler bei der Verbindung', 'Leider ist ein Fehler aufgetreten, prüfen Sie Ihre Verbindung.');
console.log(e);
});
}
return item;
})
}
return cart;
});
setCarts(newCarts);
}
const postData = async (data = {}) => {
const response = await fetch(host + 'post/json', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Token: token,
cache: 'no-cache',
redirect: 'follow',
referrerPolicy: 'no-referrer',
connection: 'keep-alive'
},
body: JSON.stringify(data)
});
return await response.json();
}
const getSyncState = (cart) => {
let syncState = 1;
cart.items.forEach((element) => {
if (element.state !== 1) {
syncState = 0;
}
})
return syncState;
}