Skip to content

Commit ad0b78d

Browse files
committed
Add support for merging all networks in the layer selector
1 parent de2c56c commit ad0b78d

5 files changed

Lines changed: 21 additions & 5 deletions

File tree

src/app/components/LayerPicker/LayerDetails.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { getNameForScope, SearchScope } from '../../../types/searchScope'
2020
import { useConsensusFreshness, useRuntimeFreshness } from '../OfflineBanner/hook'
2121
import { LayerStatus } from '../LayerStatus'
2222
import { useScreenSize } from '../../hooks/useScreensize'
23+
import { mergeNetworksInLayerSelector } from '../../utils/route-utils'
2324

2425
type LayerDetailsContent = {
2526
description: string
@@ -154,6 +155,7 @@ const RuntimeDetails: FC<LayerDetailsProps> = props => {
154155
const { handleConfirm, selectedScope } = props
155156
const isOutOfDate = useRuntimeFreshness(selectedScope).outOfDate
156157
const details = getDetails(t)[selectedScope.network]?.[selectedScope.layer]
158+
const networkNames = getNetworkNames(t)
157159

158160
return (
159161
<LayerDetailsSection
@@ -162,6 +164,13 @@ const RuntimeDetails: FC<LayerDetailsProps> = props => {
162164
isOutOfDate={isOutOfDate}
163165
selectedScope={selectedScope}
164166
>
167+
{mergeNetworksInLayerSelector && (
168+
<Typography sx={{ fontSize: '14px', color: COLORS.brandExtraDark, pb: 4 }}>
169+
{t('layerPicker.hostedOn', {
170+
network: networkNames[selectedScope.network],
171+
})}
172+
</Typography>
173+
)}
165174
{details?.description && (
166175
<Typography sx={{ fontSize: '14px', color: COLORS.brandExtraDark, pb: 4 }}>
167176
{details.description}

src/app/components/LayerPicker/LayerMenu.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Tooltip from '@mui/material/Tooltip'
99
import { COLORS } from '../../../styles/theme/colors'
1010
import { Layer } from '../../../oasis-nexus/api'
1111
import { getLayerLabels } from '../../utils/content'
12-
import { isScopeHidden, RouteUtils } from '../../utils/route-utils'
12+
import { isScopeHidden, mergeNetworksInLayerSelector, RouteUtils } from '../../utils/route-utils'
1313
import { Network } from '../../../types/network'
1414
import { orderByLayer } from '../../../types/layers'
1515
import { useScreenSize } from '../../hooks/useScreensize'
@@ -123,7 +123,9 @@ const getOptionsForNetwork = (network: Network, activeScope?: SearchScope | unde
123123
export const LayerMenu: FC<LayerMenuProps> = ({ selectedNetwork, selectedScope, setSelectedScope }) => {
124124
const activeScope = useScopeParam()!
125125
const [hoveredScope, setHoveredScope] = useState<undefined | SearchScope>()
126-
const options = getOptionsForNetwork(selectedNetwork ?? activeScope.network)
126+
const options = mergeNetworksInLayerSelector
127+
? RouteUtils.getVisibleScopes(activeScope).map(scope => ({ scope, enabled: true }))
128+
: getOptionsForNetwork(selectedNetwork ?? activeScope.network)
127129

128130
return (
129131
<MenuList>

src/app/components/LayerPicker/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { useRequiredScopeParam } from '../../hooks/useScopeParam'
1313
import { NetworkMenu } from './NetworkMenu'
1414
import { LayerMenu } from './LayerMenu'
1515
import { LayerDetails } from './LayerDetails'
16-
import { scopeFreedom, RouteUtils } from '../../utils/route-utils'
16+
import { scopeFreedom, RouteUtils, mergeNetworksInLayerSelector } from '../../utils/route-utils'
1717
import { styled } from '@mui/material/styles'
1818
import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'
1919
import { useScreenSize } from '../../hooks/useScreensize'
@@ -109,7 +109,9 @@ const LayerPickerContent: FC<LayerPickerContentProps> = ({ isOutOfDate, onClose,
109109
<div>
110110
{
111111
// Do we need a "back to networks" button ?
112-
((scopeFreedom === 'network-layer' && tabletStep === LayerPickerTabletStep.Layer) || // Stepping back from layers
112+
((scopeFreedom === 'network-layer' &&
113+
!mergeNetworksInLayerSelector &&
114+
tabletStep === LayerPickerTabletStep.Layer) || // Stepping back from layers
113115
(scopeFreedom === 'network' && tabletStep === LayerPickerTabletStep.LayerDetails)) && ( // Stepping back from details, skipping layers
114116
<TabletBackButton
115117
variant="text"
@@ -146,7 +148,7 @@ const LayerPickerContent: FC<LayerPickerContentProps> = ({ isOutOfDate, onClose,
146148
<Divider />
147149
<StyledContent>
148150
<Grid container>
149-
{scopeFreedom !== 'layer' &&
151+
{!(scopeFreedom === 'layer' || mergeNetworksInLayerSelector) &&
150152
(!isTablet || (isTablet && tabletStep === LayerPickerTabletStep.Network)) && (
151153
<Grid xs={12} md={3}>
152154
<NetworkMenu

src/app/utils/route-utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ export const hiddenScopes: SearchScope[] = [
7979
// { network: Network.mainnet, layer: Layer.sapphire }, // This is only for testing
8080
]
8181

82+
export const mergeNetworksInLayerSelector = false
83+
8284
export const isScopeHidden = (scope: SearchScope): boolean =>
8385
!!hiddenScopes.find(s => s.network === scope.network && s.layer === scope.layer)
8486

src/locales/en/translation.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@
544544
"consensus": "The consensus layer is a scalable, high-throughput, secure, proof-of-stake consensus run by a decentralized set of validator nodes.",
545545
"goToDashboard": "Go to dashboard",
546546
"hex": "Hex: {{ id }}",
547+
"hostedOn": "Hosted on {{ network }}",
547548
"readMore": "Read more about {{ layer }} on {{ network }} in Oasis Docs",
548549
"rpcHttp": "RPC HTTP endpoint: {{ endpoint }}",
549550
"rpcWebSockets": "RPC WebSockets endpoint: {{ endpoint }}",

0 commit comments

Comments
 (0)