Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
3 changes: 2 additions & 1 deletion public/locales/ca-CA/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,8 @@
"on_tx": "en la (tx)",
"yes": "Sí",
"no": "No",
"deprecated": "obsolet",
"retired": null,
"obsolete": null,
"domain": "domini",
"unl": "unl",
"fee": "comissió",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/en-US/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": "on (tx)",
"yes": "Yes",
"no": "No",
"deprecated": "deprecated",
"retired": "retired",
"obsolete": "obsolete",
"domain": "domain",
"unl": "unl",
"fee": "fee",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/es-ES/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": null,
"yes": null,
"no": null,
"deprecated": null,
"retired": null,
"obsolete": null,
"domain": "dominio",
"unl": "unl",
"fee": "comisión",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/fr-FR/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": null,
"yes": null,
"no": null,
"deprecated": null,
"retired": null,
"obsolete": null,
"domain": "domaine",
"unl": "unl",
"fee": "frais",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/ja-JP/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": null,
"yes": "はい",
"no": "いいえ",
"deprecated": "非推奨",
"retired": null,
"obsolete": null,
"domain": "ドメイン",
"unl": "unl",
"fee": "手数料",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/ko-KR/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": null,
"yes": null,
"no": null,
"deprecated": null,
"retired": null,
"obsolete": null,
"domain": "도메인",
"unl": "unl",
"fee": "수수료",
Expand Down
3 changes: 2 additions & 1 deletion public/locales/my-MM/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@
"on_tx": "on (tx)",
"yes": "Yes",
"no": "No",
"deprecated": "မသုံးတော့",
"retired": null,
"obsolete": null,
"domain": "domain",
"unl": "unl",
"fee": "အခကြေးငွေ",
Expand Down
3 changes: 2 additions & 1 deletion src/containers/Amendment/test/mockVotingAmendment.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"id": "mock-amendment-id",
"name": "mock-name",
"rippled_version": "1.12.0",
"deprecated": false,
"retired": false,
"obsolete": false,
"threshold": "3/4",
"consensus": "25%",
"voted": {
Expand Down
26 changes: 20 additions & 6 deletions src/containers/Amendments/AmendmentsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,21 @@ export const AmendmentsTable: FC<{
return DEFAULT_EMPTY_VALUE
}

const renderName = (name: string, id: string, deprecated: boolean) =>
deprecated ? (
<div className="name-deprecated">
const renderName = (
name: string,
id: string,
retired: boolean,
obsolete: boolean,
) =>
retired || obsolete ? (
<div className="name-with-badge">
<span className="name-text text-truncate">
<RouteLink to={AMENDMENT_ROUTE} params={{ identifier: id }}>
{name}
</RouteLink>
</span>
<span className="deprecated badge">{t('deprecated')}</span>
{retired && <span className="retired badge">{t('retired')}</span>}
{obsolete && <span className="obsolete badge">{t('obsolete')}</span>}
</div>
) : (
<span className="name-text">
Expand Down Expand Up @@ -112,7 +118,12 @@ export const AmendmentsTable: FC<{
</td>
<td className="amendment-id text-truncate">{amendment.id}</td>
<td className="name text-truncate">
{renderName(amendment.name, amendment.id, amendment.deprecated)}
{renderName(
amendment.name,
amendment.id,
amendment.retired,
amendment.obsolete,
)}
</td>
<td className="voters">{getVoter(amendment.voted)}</td>
<td className="threshold">
Expand All @@ -122,7 +133,10 @@ export const AmendmentsTable: FC<{
{amendment.consensus ?? DEFAULT_EMPTY_VALUE}
</td>
<td className="enabled">
{renderEnabled(!amendment.deprecated && amendment.voted === undefined)}
{/* Retired amendments have been enabled for 2+ years and are baked into
the protocol, so they are enabled. Obsolete amendments were never
passed, so they are not. */}
{renderEnabled(!amendment.obsolete && amendment.voted === undefined)}
</td>
<td className="on_tx">{renderOnTx(amendment)}</td>
</tr>
Expand Down
5 changes: 3 additions & 2 deletions src/containers/Amendments/amendmentsTable.scss
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
}
}

.name-deprecated {
.name-with-badge {
display: flex;
overflow: hidden;
align-items: center;
Expand All @@ -85,7 +85,8 @@
text-overflow: ellipsis;
}

.deprecated {
.retired,
.obsolete {
overflow: hidden;
max-width: 60%;
font-size: 12px;
Expand Down
44 changes: 44 additions & 0 deletions src/containers/Amendments/test/amendmentsTable.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,48 @@ describe('Amendments table', () => {
amendmentsRaw.amendments.length + 1,
)
})

it('renders a retired badge and marks retired amendments as enabled', () => {
const { container } = renderAmendmentsTable({
amendments: [
{
id: 'RETIRED_ID',
name: 'RetiredAmendment',
rippled_version: '1.10.0',
retired: true,
obsolete: false,
date: null,
},
],
})
const badge = container.querySelector('.name .retired.badge')
expect(badge).not.toBeNull()
expect(badge.textContent).toBe('retired')
expect(container.querySelector('.name .obsolete.badge')).toBeNull()
// Retired amendments are baked into the protocol, so they are enabled.
expect(container.querySelector('.enabled .badge').className).toContain(
'yes',
)
})

it('renders an obsolete badge and marks obsolete amendments as not enabled', () => {
const { container } = renderAmendmentsTable({
amendments: [
{
id: 'OBSOLETE_ID',
name: 'ObsoleteAmendment',
rippled_version: '1.10.0',
retired: false,
obsolete: true,
date: null,
},
],
})
const badge = container.querySelector('.name .obsolete.badge')
expect(badge).not.toBeNull()
expect(badge.textContent).toBe('obsolete')
expect(container.querySelector('.name .retired.badge')).toBeNull()
// Obsolete amendments were never passed, so they are not enabled.
expect(container.querySelector('.enabled .badge').className).toContain('no')
})
})
12 changes: 8 additions & 4 deletions src/containers/Amendments/test/mockAmendments.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"date": "2023-08-21T05:59:11.000Z",
"name": "fixUniversalNumber",
"rippled_version": "1.10.0",
"deprecated": false
"retired": false,
"obsolete": false
},
{
"id": "75A7E01C505DD5A179DFE3E000A9B6F1EDDEB55A12F95579A23E15B15DC8BE5A",
Expand All @@ -16,13 +17,15 @@
"date": "2023-08-21T05:59:11.000Z",
"name": "ImmediateOfferKilled",
"rippled_version": "1.10.0",
"deprecated": false
"retired": false,
"obsolete": false
},
{
"id": "8CC0774A3BF66D1D22E76BBDA8E8A232E6B6313834301B3B23E8601196AE6455",
"name": "AMM",
"rippled_version": "1.12.0",
"deprecated": false,
"retired": false,
"obsolete": false,
"threshold": "28/35",
"consensus": "2.86%",
"voted": {
Expand Down Expand Up @@ -85,7 +88,8 @@
"id": "56B241D7A43D40354D02A9DC4C8DF5C7A1F930D92A9035C4E12291B3CA3E1C2B",
"name": "Clawback",
"rippled_version": "1.12.0",
"deprecated": false,
"retired": false,
"obsolete": false,
"threshold": "28/35",
"consensus": "11.43%",
"voted": {
Expand Down
12 changes: 8 additions & 4 deletions src/containers/Validators/test/mock_data/amendments.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"date": "2023-08-21T05:59:11.000Z",
"name": "fixUniversalNumber",
"rippled_version": "1.10.0",
"deprecated": false
"retired": false,
"obsolete": false
},
{
"id": "75A7E01C505DD5A179DFE3E000A9B6F1EDDEB55A12F95579A23E15B15DC8BE5A",
Expand All @@ -16,13 +17,15 @@
"date": "2023-08-21T05:59:11.000Z",
"name": "ImmediateOfferKilled",
"rippled_version": "1.10.0",
"deprecated": false
"retired": false,
"obsolete": false
},
{
"id": "8CC0774A3BF66D1D22E76BBDA8E8A232E6B6313834301B3B23E8601196AE6455",
"name": "AMM",
"rippled_version": "1.12.0",
"deprecated": false,
"retired": false,
"obsolete": false,
"voted": {
"count": 6,
"validators": [
Expand Down Expand Up @@ -57,7 +60,8 @@
"id": "56B241D7A43D40354D02A9DC4C8DF5C7A1F930D92A9035C4E12291B3CA3E1C2B",
"name": "Clawback",
"rippled_version": "1.12.0",
"deprecated": false,
"retired": false,
"obsolete": false,
"voted": {
"count": 15,
"validators": [
Expand Down
3 changes: 2 additions & 1 deletion src/containers/shared/vhsTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ export interface AmendmentData {
name: string
threshold?: string
consensus?: string
deprecated: boolean
retired: boolean
obsolete: boolean
date: string | null
tx_hash?: string
ledger_index?: number
Expand Down
Loading