diff --git a/packages/mobile/components/ExpirationTimePicker.svelte b/packages/mobile/components/ExpirationTimePicker.svelte new file mode 100644 index 0000000000..15ae03fdf0 --- /dev/null +++ b/packages/mobile/components/ExpirationTimePicker.svelte @@ -0,0 +1,33 @@ + + + diff --git a/packages/mobile/components/index.js b/packages/mobile/components/index.js index 23c5321293..8dbe1513e0 100644 --- a/packages/mobile/components/index.js +++ b/packages/mobile/components/index.js @@ -5,6 +5,7 @@ export { default as AsyncActivityTileFooter } from './AsyncActivityTileFooter.sv export { default as ColorPicker } from './ColorPicker.svelte' export { default as Confirmation } from './Confirmation.svelte' export { default as Drawer } from './Drawer.svelte' +export { default as ExpirationTimePicker } from './ExpirationTimePicker.svelte' export { default as OnboardingLayout } from './OnboardingLayout.svelte' export { default as QRScanner } from './QRScanner.svelte' export { default as RecoveryPhrase } from './RecoveryPhrase.svelte' diff --git a/packages/mobile/lib/routers/interfaces/send-router-event.interface.ts b/packages/mobile/lib/routers/interfaces/send-router-event.interface.ts index cdc63eefff..1bc687c87b 100644 --- a/packages/mobile/lib/routers/interfaces/send-router-event.interface.ts +++ b/packages/mobile/lib/routers/interfaces/send-router-event.interface.ts @@ -3,4 +3,5 @@ import { IRouterEvent } from '@core/router' export interface ISendRouterEvent extends IRouterEvent { needsUnlock?: boolean addReference?: boolean + addExpiration?: boolean } diff --git a/packages/mobile/lib/routers/routers/dashboard/send-router.ts b/packages/mobile/lib/routers/routers/dashboard/send-router.ts index 660af5b6d7..62fc3640a3 100644 --- a/packages/mobile/lib/routers/routers/dashboard/send-router.ts +++ b/packages/mobile/lib/routers/routers/dashboard/send-router.ts @@ -17,7 +17,7 @@ export class SendRouter extends Subrouter { } next(event: ISendRouterEvent = {}): void { - const { needsUnlock, addReference } = event + const { needsUnlock, addReference, addExpiration } = event let nextRoute: SendRoute const currentRoute = get(this.routeStore) @@ -38,6 +38,8 @@ export class SendRouter extends Subrouter { case SendRoute.Review: { if (addReference) { nextRoute = SendRoute.Reference + } else if (addExpiration) { + nextRoute = SendRoute.Expiration } else { if (needsUnlock) { nextRoute = SendRoute.Password @@ -48,6 +50,7 @@ export class SendRouter extends Subrouter { break } case SendRoute.Reference: + case SendRoute.Expiration: case SendRoute.Password: { super.previous() break diff --git a/packages/mobile/views/dashboard/drawers/send/SendDrawer.svelte b/packages/mobile/views/dashboard/drawers/send/SendDrawer.svelte index 55705a526c..a3aa1992ef 100644 --- a/packages/mobile/views/dashboard/drawers/send/SendDrawer.svelte +++ b/packages/mobile/views/dashboard/drawers/send/SendDrawer.svelte @@ -18,6 +18,9 @@ case SendRoute.Reference: title = localize('actions.addReference') break + case SendRoute.Expiration: + title = localize('general.expirationTime') + break default: title = localize('popups.sendForm.title') break diff --git a/packages/mobile/views/dashboard/drawers/send/SendRouter.svelte b/packages/mobile/views/dashboard/drawers/send/SendRouter.svelte index 237f5e8f0c..6f79b0c530 100644 --- a/packages/mobile/views/dashboard/drawers/send/SendRouter.svelte +++ b/packages/mobile/views/dashboard/drawers/send/SendRouter.svelte @@ -18,29 +18,27 @@ } from '@core/wallet' import { getStorageDepositFromOutput } from '@core/wallet/utils/generateActivity/helper' import type { OutputOptions } from '@iota/wallet' - import { ExpirationTimePicker } from 'shared/components' import { get } from 'svelte/store' import { StrongholdUnlock } from '../../../../components' import { sendRoute, SendRoute, sendRouter } from '../../../../lib/routers' - import { AmountView, RecipientView, ReferenceView, ReviewView, TokenView } from './views' + import { AmountView, Expiration, RecipientView, ReferenceView, ReviewView, TokenView } from './views' $: ({ recipient, expirationDate, giftStorageDeposit, surplus } = $newTransactionDetails) let storageDeposit = 0 let preparedOutput: Output let outputOptions: OutputOptions - let expirationTimePicker: ExpirationTimePicker let initialExpirationDate: ExpirationTime = getInitialExpirationDate() let triggerSendOnMount: boolean = false $: transactionDetails = get(newTransactionDetails) $: recipientAddress = recipient?.type === 'account' ? recipient?.account?.depositAddress : recipient?.address - $: expirationTimePicker?.setNull(giftStorageDeposit) $: asset = transactionDetails.type === NewTransactionType.TokenTransfer ? getAssetById(transactionDetails.assetId) : undefined + $: expirationDate, giftStorageDeposit, refreshSendConfirmationState() async function sendTransaction(): Promise { triggerSendOnMount = false @@ -112,6 +110,10 @@ } } + function refreshSendConfirmationState(): void { + void prepareTransactionOutput() + } + function getInitialExpirationDate(): ExpirationTime { if (expirationDate) { return ExpirationTime.Custom @@ -137,7 +139,9 @@ {:else if $sendRoute === SendRoute.Reference} {:else if $sendRoute === SendRoute.Review} - + +{:else if $sendRoute === SendRoute.Expiration} + $sendRouter.previous()} /> {:else if $sendRoute === SendRoute.Password} $sendRouter.previous()} /> {/if} diff --git a/packages/mobile/views/dashboard/drawers/send/views/Expiration.svelte b/packages/mobile/views/dashboard/drawers/send/views/Expiration.svelte new file mode 100644 index 0000000000..cb5bd1b63f --- /dev/null +++ b/packages/mobile/views/dashboard/drawers/send/views/Expiration.svelte @@ -0,0 +1,62 @@ + + +
+ + + + +
+ +
diff --git a/packages/mobile/views/dashboard/drawers/send/views/ReviewView.svelte b/packages/mobile/views/dashboard/drawers/send/views/ReviewView.svelte index 08fcb3aeab..f1d309bedd 100644 --- a/packages/mobile/views/dashboard/drawers/send/views/ReviewView.svelte +++ b/packages/mobile/views/dashboard/drawers/send/views/ReviewView.svelte @@ -1,6 +1,7 @@