П
Size: a a a
П
DS
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);
fe
DS
AO
fe
NB
AO
AO
NB
DS
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);
AO
AO
fe
NB
fe
fe
DS
<button onClick={() => {
if (address) {
next();
} else {
showAddressDialog({ onSuccess: next });
}
}} />
showAddressDialog
и
по итогу принимать другие действияfe
fe