Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions public/locales/ca-CA/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,
"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
7 changes: 7 additions & 0 deletions public/locales/en-US/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": "No LP Tokens found",
"account_page_asset_table_no_mpt": "No MPTs found",
"account_page_asset_table_no_nft": "No NFTs found",
"account_page_permission_delegation": "Permission delegation",
Comment thread
kuan121 marked this conversation as resolved.
Outdated
"account_page_permission_delegation_column_permission": "Permission",
"account_page_permission_delegation_column_granted_to": "Granted To",
"account_page_permission_delegation_column_status": "Status",
"account_page_permission_delegation_status_active": "Active",
"account_page_permission_delegation_status_expired": "Expired",
Comment thread
kuan121 marked this conversation as resolved.
Outdated
"account_page_permission_delegation_no_delegations": "No permission delegations found",
"tx_hash": "Tx Hash",
"timestamp": "Timestamp (UTC)",
"amount_in": "Amount In",
Expand Down
7 changes: 7 additions & 0 deletions public/locales/es-ES/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,
"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
7 changes: 7 additions & 0 deletions public/locales/fr-FR/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,
"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
7 changes: 7 additions & 0 deletions public/locales/ja-JP/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,
"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
7 changes: 7 additions & 0 deletions public/locales/ko-KR/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works like it should

"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
7 changes: 7 additions & 0 deletions public/locales/my-MM/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,13 @@
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null,
"account_page_permission_delegation": null,
"account_page_permission_delegation_column_permission": null,
"account_page_permission_delegation_column_granted_to": null,
"account_page_permission_delegation_column_status": null,
"account_page_permission_delegation_status_active": null,
"account_page_permission_delegation_status_expired": null,
"account_page_permission_delegation_no_delegations": null,
"tx_hash": null,
"timestamp": null,
"amount_in": null,
Expand Down
128 changes: 128 additions & 0 deletions src/containers/Accounts/PermissionDelegation/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import { useState, useContext } from 'react'
import { useTranslation } from 'react-i18next'
import { useQuery } from 'react-query'
import ArrowIcon from '../../shared/images/down_arrow.svg'
import { Account } from '../../shared/components/Account'
import { Loader } from '../../shared/components/Loader'
import { EmptyMessageTableRow } from '../../shared/EmptyMessageTableRow'
import { getAccountObjects } from '../../../rippled/lib/rippled'
import SocketContext from '../../shared/SocketContext'
import { shortenAccount } from '../../shared/utils'
import '../AccountAsset/styles.scss'
import './styles.scss'

interface DelegateObject {
Account: string
Authorize: string
Permissions: Array<{
Permission: {
PermissionValue: string
}
}>
LedgerEntryType: string
}

interface PermissionDelegationProps {
accountId: string
}

export const PermissionDelegation = ({
accountId,
}: PermissionDelegationProps) => {
const { t } = useTranslation()
const rippledSocket = useContext(SocketContext)
const [isOpen, setIsOpen] = useState(true)

const { data, isLoading } = useQuery(
['accountDelegates', accountId],
() => getAccountObjects(rippledSocket, accountId, 'delegate'),
{ enabled: !!accountId },
)

const delegates: DelegateObject[] = data?.account_objects ?? []

// Don't render the section if there are no delegations and we're done loading
if (!isLoading && delegates.length === 0) {
return null
Comment thread
kuan121 marked this conversation as resolved.
}

return (
<section className="account-asset permission-delegation">
<div className="asset-section-header">
<h3 className="account-asset-title">
{t('account_page_permission_delegation')}
</h3>
<button
type="button"
className="asset-section-toggle"
onClick={() => setIsOpen((s) => !s)}
aria-expanded={isOpen}
aria-label="Toggle permission delegation"
>
<ArrowIcon
className={`asset-section-arrow ${isOpen ? 'open' : ''}`}
/>
</button>
</div>
Comment thread
kuan121 marked this conversation as resolved.
Outdated
{isOpen && (
<div className="permission-delegation-table-wrapper">
{isLoading ? (
<Loader />
) : (
<div className="account-asset-table">
<table>
<thead>
<tr>
<th>
{t(
'account_page_permission_delegation_column_permission',
)}
</th>
<th>
{t(
'account_page_permission_delegation_column_granted_to',
)}
</th>
<th>
{t('account_page_permission_delegation_column_status')}
</th>
</tr>
</thead>
<tbody>
Comment thread
kuan121 marked this conversation as resolved.
Outdated
{delegates.length === 0 ? (
<EmptyMessageTableRow colSpan={3}>
{t('account_page_permission_delegation_no_delegations')}
</EmptyMessageTableRow>
) : (
Comment thread
kuan121 marked this conversation as resolved.
Outdated
delegates.flatMap((delegate) =>
delegate.Permissions.map((perm) => (
<tr
key={`${delegate.Authorize}-${perm.Permission.PermissionValue}`}
>
<td>{perm.Permission.PermissionValue}</td>
<td>
<Account
account={delegate.Authorize}
displayText={shortenAccount(delegate.Authorize)}
/>
</td>
<td>
{t(
'account_page_permission_delegation_status_active',
Comment thread
kuan121 marked this conversation as resolved.
Outdated
)}
</td>
</tr>
)),
)
)}
</tbody>
</table>
</div>
)}
</div>
)}
</section>
)
}

export default PermissionDelegation
15 changes: 15 additions & 0 deletions src/containers/Accounts/PermissionDelegation/styles.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* PermissionDelegation-specific overrides.
Layout, header, toggle, arrow, and table base styles are reused
from AccountAsset via the shared .account-asset / .asset-section-header /
.account-asset-table classes. */

.permission-delegation .permission-delegation-table-wrapper {
Comment thread
kuan121 marked this conversation as resolved.
Outdated
.loader {
min-height: 50px;
}

/* Override the large min-width from account-asset-table since we only have 3 columns */
.account-asset-table table {
min-width: 0;
}
Comment thread
kuan121 marked this conversation as resolved.
Outdated
}
Loading
Loading