From a6a10ef6b8091f4566325f76a0a560a8f05f41ee Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Mon, 13 Dec 2021 15:22:33 +0200 Subject: [PATCH] feat: switch betweel full and partial transactions locking. --- .../TransactionsLockingList.js | 137 +++++++++++++----- .../TransactionsLockingProvider.js | 12 +- .../TransactionsLocking/components.js | 23 +++ 3 files changed, 136 insertions(+), 36 deletions(-) diff --git a/src/containers/TransactionsLocking/TransactionsLockingList.js b/src/containers/TransactionsLocking/TransactionsLockingList.js index 5348dadbb..025561ce4 100644 --- a/src/containers/TransactionsLocking/TransactionsLockingList.js +++ b/src/containers/TransactionsLocking/TransactionsLockingList.js @@ -1,13 +1,15 @@ import React from 'react'; -import { Link } from 'react-router-dom'; import clsx from 'classnames'; import { Intent } from '@blueprintjs/core'; import styled from 'styled-components'; import * as R from 'ramda'; -import { Alert } from 'components'; +import { Alert, ButtonLink } from 'components'; import { TransactionsLockingProvider } from './TransactionsLockingProvider'; -import { TransactionLockingContent } from './components'; +import { + TransactionLockingContent, + TransactionLockingItemLoading, +} from './components'; import { useTransactionsLockingContext } from './TransactionsLockingProvider'; import withDialogActions from 'containers/Dialog/withDialogActions'; @@ -28,13 +30,83 @@ function TransactionsLockingList({ items, onlock, onUnlock, onUnlockPartial }) { )); } -/** - * Transactions locking list. - */ -function TransactionsLockingListPage({ +function TransactionsLockingFull({ onLock, onUnlock, onUnlockPartial }) { + const { + transactionsLocking: { all }, + } = useTransactionsLockingContext(); + + return ( + + ); +} + +function TransactionLockingSkeletonList() { + return ( + <> + + + + + ); +} + +function TransactionsLockingAlert() { + const { transactionLockingType, setTransactionLockingType } = + useTransactionsLockingContext(); + + // Handle all lock link click. + const handleAllLockClick = () => { + setTransactionLockingType('all'); + }; + + const handleUndividualLockClick = () => { + setTransactionLockingType('partial'); + }; + + return transactionLockingType !== 'all' ? ( + +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. +

+ + Lock All Transactions At Once → + +
+ ) : ( + +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. +

+ + Lock Modules Individually → + +
+ ); +} + +function TransactionsLockingBodyJsx({ // #withDialogActions openDialog, }) { + const { + transactionsLocking: { modules }, + isTransactionLockingLoading, + + transactionLockingType, + } = useTransactionsLockingContext(); + // Handle locking transactions. const handleLockingTransactions = () => { openDialog('locking-transactions', {}); @@ -49,10 +121,30 @@ function TransactionsLockingListPage({ openDialog('unlocking-partial-transactions', {}); }; - const { - transactionsLocking: { modules }, - } = useTransactionsLockingContext(); + return !isTransactionLockingLoading ? ( + transactionLockingType === 'partial' ? ( + + ) : ( + + ) + ) : ( + + ); +} +const TransactionsLockingBody = R.compose(withDialogActions)( + TransactionsLockingBodyJsx, +); + +/** + * Transactions locking list. + */ +export default function TransactionsLockingListPage() { return ( @@ -63,31 +155,14 @@ function TransactionsLockingListPage({ ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - - -

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. -

- Lock All Transactions At Once → -
+ - +
); } -export default R.compose(withDialogActions)(TransactionsLockingListPage); - const TransactionsLocking = styled.div` display: flex; flex-direction: column; @@ -99,10 +174,6 @@ const TransactionsLockingParagraph = styled(Paragraph)` margin-bottom: 25px; `; -const TransLockingTitle = styled.h2` - margin-bottom: 12px; -`; - const TransLockingDesc = styled.p``; const LockAllAlert = styled(Alert)` diff --git a/src/containers/TransactionsLocking/TransactionsLockingProvider.js b/src/containers/TransactionsLocking/TransactionsLockingProvider.js index 7ade11e12..9c1bd1101 100644 --- a/src/containers/TransactionsLocking/TransactionsLockingProvider.js +++ b/src/containers/TransactionsLocking/TransactionsLockingProvider.js @@ -8,22 +8,28 @@ const TransactionsLockingContext = React.createContext(); * Transactions locking data provider. */ function TransactionsLockingProvider({ ...props }) { - // Fetch + // Fetch transaction locking modules list. const { data: transactionsLocking, isFetching: isTransactionLockingFetching, isLoading: isTransactionLockingLoading, } = useTransactionsLocking(); - console.log(transactionsLocking, 'XX'); + const [transactionLockingType, setTransactionLockingType] = + React.useState('partial'); // Provider const provider = { transactionsLocking, + isTransactionLockingFetching, + isTransactionLockingLoading, + + transactionLockingType, + setTransactionLockingType, }; return ( - + ); diff --git a/src/containers/TransactionsLocking/components.js b/src/containers/TransactionsLocking/components.js index 15c93a9a2..503861959 100644 --- a/src/containers/TransactionsLocking/components.js +++ b/src/containers/TransactionsLocking/components.js @@ -7,11 +7,34 @@ import { Menu, Intent, Divider, + Classes, } from '@blueprintjs/core'; import { Hint, Icon, If, FormattedMessage as T } from 'components'; import { Popover2 } from '@blueprintjs/popover2'; import { safeInvoke } from 'utils'; +export const TransactionLockingItemLoading = ({}) => { + return ( + + + + + + + + + XXXX + + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. + + + + + ); +}; + export const TransactionLockingContent = ({ name, description,