@n1ksON
Интерн

Как сделать цикл для API запросов?

Мне нужно начислить рефералам бонусы.
Пользователь является рефералом -> пригласившему начислить бонус -> пригласивший тоже является рефералом -> пригласившему пригласившего начислить бонусы и т.д.
5 уровневая реферальная система.

Код:
const [ref, setRef] = useState(mail); // для логинов пригласивших
const [refStep, setRefStep] = useState(false); // для отслеживания уровня пригласившего. Пользователь может являться рефералом 1-5 уровней
const [level, setLevel] = useState(false);
const usersDB = fb.firestore().collection('users');
useEffect(
		() => {
			if (refStep < 5 && ref && level) { // бонусы может получить максимум 5 пригласивших
				usersDB
					.doc(`${ref}`)
					.get()
					.then((doc) => {
						if (doc.exists) {
							doc.data().referrer ? setRef(doc.data().referrer) : setRefStep(5); // проверка на наличие пригласившего
							const refs = doc.data().refs;
							refs[refStep].sum += Number(vip[level].price); // для изменения статистики
							setRefStep((prev) => prev + 1); // переход на следующий шаг
							usersDB.doc(`${ref}`).set(
								{
									allow_money: doc.data().allow_money + vip[level].price * 0.1,
									recd: doc.data().recd + vip[level].price,
									refs: refs
								},
								{ merge: true }
							);
						}
					});
			}
		},
		[ref],
		[refStep]
	);


Я хочу решить задачу так: пишу цикл с получением логина пригласившего и начислением бонусов. Но проблема заключается в том, что цикл проходится по одному пользователю, так как не успевает получить данные.
То есть шаг следующего цикла должен начинаться только когда обновился логин пригласившего пользователя. Поэтому решил использовать useEffect, но работает криво.

Помогите, как это сделать?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы