mirror of
https://github.com/PrimalHQ/primal-web-app.git
synced 2024-10-01 17:31:13 +00:00
Delay zapping after the animation has completed
This commit is contained in:
parent
37a522ecbe
commit
ec0bd99d84
@ -11,6 +11,7 @@ import { PrimalNote, PrimalUser, ZapOption } from '../../types/primal';
|
||||
import { debounce } from '../../utils';
|
||||
import ButtonPrimary from '../Buttons/ButtonPrimary';
|
||||
import Modal from '../Modal/Modal';
|
||||
import { lottieDuration } from '../Note/NoteFooter/NoteFooter';
|
||||
import TextInput from '../TextInput/TextInput';
|
||||
import { useToastContext } from '../Toaster/Toaster';
|
||||
|
||||
@ -92,40 +93,51 @@ const CustomZap: Component<{
|
||||
if (account?.hasPublicKey()) {
|
||||
props.onConfirm(selectedValue());
|
||||
|
||||
let success = false;
|
||||
const note = props.note;
|
||||
|
||||
if (props.note) {
|
||||
success = await zapNote(
|
||||
props.note,
|
||||
account.publicKey,
|
||||
selectedValue().amount || 0,
|
||||
comment(),
|
||||
account.relays,
|
||||
);
|
||||
if (note) {
|
||||
setTimeout(async () => {
|
||||
const success = await zapNote(
|
||||
note,
|
||||
account.publicKey,
|
||||
selectedValue().amount || 0,
|
||||
comment(),
|
||||
account.relays,
|
||||
);
|
||||
|
||||
handleZap(success);
|
||||
}, lottieDuration());
|
||||
return;
|
||||
}
|
||||
else if (props.profile) {
|
||||
success = await zapProfile(
|
||||
|
||||
if (props.profile) {
|
||||
const success = await zapProfile(
|
||||
props.profile,
|
||||
account.publicKey,
|
||||
selectedValue().amount || 0,
|
||||
comment(),
|
||||
account.relays,
|
||||
);
|
||||
}
|
||||
|
||||
if (success) {
|
||||
props.onSuccess(selectedValue());
|
||||
handleZap(success);
|
||||
return;
|
||||
}
|
||||
|
||||
toast?.sendWarning(
|
||||
intl.formatMessage(toastZapFail),
|
||||
);
|
||||
|
||||
props.onFail(selectedValue())
|
||||
}
|
||||
};
|
||||
|
||||
const handleZap = (success = false) => {
|
||||
if (success) {
|
||||
props.onSuccess(selectedValue());
|
||||
return;
|
||||
}
|
||||
|
||||
toast?.sendWarning(
|
||||
intl.formatMessage(toastZapFail),
|
||||
);
|
||||
|
||||
props.onFail(selectedValue());
|
||||
};
|
||||
|
||||
return (
|
||||
<Modal open={props.open} onClose={() => props.onCancel({ amount: 0, message: '' })}>
|
||||
<div id={props.id} class={styles.customZap}>
|
||||
|
@ -23,6 +23,8 @@ import { NoteFooterState } from '../Note';
|
||||
import { SetStoreFunction } from 'solid-js/store';
|
||||
import BookmarkNote from '../../BookmarkNote/BookmarkNote';
|
||||
|
||||
export const lottieDuration = () => zapMD.op * 1_000 / zapMD.fr;
|
||||
|
||||
const NoteFooter: Component<{
|
||||
note: PrimalNote,
|
||||
wide?: boolean,
|
||||
@ -269,29 +271,33 @@ const NoteFooter: Component<{
|
||||
props.updateState('satsZapped', (z) => z + amount);
|
||||
});
|
||||
|
||||
const success = await zapNote(props.note, account.publicKey, amount, message, account.relays);
|
||||
|
||||
props.updateState('isZapping', () => false);
|
||||
setTimeout(async () => {
|
||||
const success = await zapNote(props.note, account.publicKey, amount, message, account.relays);
|
||||
|
||||
if (success) {
|
||||
props.customZapInfo.onSuccess({
|
||||
props.updateState('isZapping', () => false);
|
||||
|
||||
if (success) {
|
||||
props.customZapInfo.onSuccess({
|
||||
emoji,
|
||||
amount,
|
||||
message,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
batch(() => {
|
||||
props.updateState('zappedAmount', () => -amount);
|
||||
props.updateState('zapped', () => props.note.post.noteActions.zapped);
|
||||
});
|
||||
|
||||
props.customZapInfo.onFail({
|
||||
emoji,
|
||||
amount,
|
||||
message,
|
||||
});
|
||||
return;
|
||||
}
|
||||
}, lottieDuration());
|
||||
|
||||
batch(() => {
|
||||
props.updateState('zappedAmount', () => -amount);
|
||||
props.updateState('zapped', () => props.note.post.noteActions.zapped);
|
||||
});
|
||||
|
||||
props.customZapInfo.onFail({
|
||||
emoji,
|
||||
amount,
|
||||
message,
|
||||
});
|
||||
}
|
||||
|
||||
const buttonTypeClasses: Record<string, string> = {
|
||||
|
@ -488,15 +488,18 @@ const Profile: Component = () => {
|
||||
},
|
||||
onSuccess: (zapOption: ZapOption) => {
|
||||
app?.actions.closeCustomZapModal();
|
||||
app?.actions.resetCustomZap();
|
||||
toaster?.sendSuccess(intl.formatMessage(toastZapProfile, {
|
||||
name: authorName(profile?.userProfile)
|
||||
}))
|
||||
},
|
||||
onFail: (zapOption: ZapOption) => {
|
||||
app?.actions.closeCustomZapModal();
|
||||
app?.actions.resetCustomZap();
|
||||
},
|
||||
onCancel: (zapOption: ZapOption) => {
|
||||
app?.actions.closeCustomZapModal();
|
||||
app?.actions.resetCustomZap();
|
||||
},
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user