🦜
На первом шаге есть условно кнопка "next"
По клику на неё
— если пользователь залогинен (== есть user address, считайте это айди пользователя), то направить на второй шаг
— если нет, кинуть ивент (типа address required), дождаться когда появится user address, когда появился — направить на второй шаг
Нагородил тут вот такое решение:
export const setAddress = createEvent<string | null>();
export const address = restore(setAddress, null);
export const next = createEvent();
const requireAddress = createEvent();
export const requireAddressFx = createEffect({
handler: () => {
requireAddress();
const unsub = address.subscribe(value => {
if (value) {
next();
unsub();
}
});
},
});
export const addressDialogDismiss = createEvent();
guard({
source: sample(address, next),
filter: address.map(x => !x),
target: requireAddressFx,
});
export const awaitingAddress = createStore(false)
.on(requireAddress, () => true)
.on(addressDialogDismiss, () => false)
.on(address, (_, payload) => !payload);
названия мне не нравятся совсем, не хватает неймспейсинга наверное
Но основной вопрос — правильно ли делать эффект, который подписывается на стор и отписывается в коллбеке subscribe?