Skip to content

Commit

Permalink
feat(nfts): query params
Browse files Browse the repository at this point in the history
  • Loading branch information
plondon committed May 2, 2022
1 parent ba3f5b9 commit cf2956e
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,9 @@ export default ({ api }: { api: APIType }) => {
if (action.meta.field === 'forSale') {
params.forSale = action.payload
}
if (action.meta.field === 'event') {
params.event = action.payload
}
// TRAITS
if (!nonTraitFilters.includes(action.meta.field)) {
const traits = params.traits ? JSON.parse(params.traits) : []
Expand Down Expand Up @@ -705,6 +708,9 @@ export default ({ api }: { api: APIType }) => {
if (params.forSale !== undefined) {
yield put(actions.form.change('nftFilter', 'forSale', Boolean(params.forSale)))
}
if (params.event !== undefined) {
yield put(actions.form.change('nftFilter', 'event', params.event))
}
if (params.traits !== undefined) {
const traits = JSON.parse(params.traits)
yield all(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from 'react'
import React, { useEffect, useState } from 'react'
import { connect, ConnectedProps } from 'react-redux'
import { Dispatch } from '@reduxjs/toolkit'
import { bindActionCreators, compose } from 'redux'
Expand All @@ -18,16 +18,20 @@ import AddressItems from './AddressItems'

const NftAddress: React.FC<Props> = ({ formActions, formValues, pathname }) => {
const address = pathname.split('/nfts/address/')[1]
const tab = window.location.hash.split('?')[1]
debugger
const params = new URLSearchParams(window.location.hash.split('?')[1])
const tab = params.get('tab') === 'EVENTS' ? 'EVENTS' : 'ITEMS'

const [activeTab, setActiveTab] = useState<'ITEMS' | 'EVENTS'>('ITEMS')
const [activeTab, setActiveTab] = useState<'ITEMS' | 'EVENTS'>(tab)
const [collections, setCollections] = useState([] as OwnerQuery['assets'][0]['collection'][])

const minMaxFilters = getMinMaxFilters(formValues)
const collectionFilter = getCollectionFilter(formValues, collections)
const eventFilter = getEventFilter(formValues)

useEffect(() => {
setActiveTab(tab)
}, [tab])

if (!address) return null

const hasSomeFilters =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from 'react'
import React, { useEffect, useState } from 'react'
import { connect, ConnectedProps } from 'react-redux'
import { Icon } from '@blockchain-com/constellation'
import { IconCamera, IconComputer, IconGlobe } from '@blockchain-com/icons'
Expand All @@ -14,7 +14,6 @@ import {
EventFilterFields,
useCollectionsQuery
} from 'generated/graphql.types'
import { media } from 'services/styles'

import { CollectionHeader, event_types, GridWrapper, NftBannerWrapper } from '../components'
import NftError from '../components/NftError'
Expand Down Expand Up @@ -59,8 +58,10 @@ const LinksContainer = styled.div`

const NftsCollection: React.FC<Props> = ({ formActions, formValues, ...rest }) => {
const { slug } = rest.computedMatch.params
const params = new URLSearchParams(window.location.hash.split('?')[1])
const tab = params.get('tab') === 'EVENTS' ? 'EVENTS' : 'ITEMS'

const [activeTab, setActiveTab] = useState<'ITEMS' | 'EVENTS'>('ITEMS')
const [activeTab, setActiveTab] = useState<'ITEMS' | 'EVENTS'>(tab)

const [collectionsQuery] = useCollectionsQuery({
variables: { filter: [{ field: CollectionFilterFields.Slug, value: slug }] }
Expand All @@ -79,6 +80,10 @@ const NftsCollection: React.FC<Props> = ({ formActions, formValues, ...rest }) =
? collectionsQuery.data.collections[0]
: undefined

useEffect(() => {
setActiveTab(tab)
}, [tab])

if (collectionsQuery.error)
return (
<div style={{ marginTop: '40px' }}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const Wrapper = styled.div<{ isOpen: boolean }>`
position: sticky;
transition: width 0.3s ease;
width: ${(props) => (props.isOpen ? '300px' : '20px')};
min-width: ${(props) => (props.isOpen ? '300px' : '20px')};
margin-right: 20px;
height: calc(100vh - ${FIXED_HEADER_HEIGHT}px);
overflow: scroll;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { connect, ConnectedProps } from 'react-redux'
import { colors, Icon } from '@blockchain-com/constellation'
import { IconCloseCircle } from '@blockchain-com/icons'
import { bindActionCreators } from '@reduxjs/toolkit'
import { routerActions } from 'connected-react-router'
import { Field } from 'redux-form'
import styled from 'styled-components'

Expand Down Expand Up @@ -51,10 +50,10 @@ const TraitGridFilters: React.FC<Props> = ({
formValues,
hasSomeFilters,
minMaxFilters,
routerActions,
traitFilters
}) => {
const route = window.location.hash.split('?')[0].substr(1)
console.log(route)

return (
<>
Expand Down Expand Up @@ -249,7 +248,8 @@ const TraitGridFilters: React.FC<Props> = ({
)
}
const mapDispatchToProps = (dispatch) => ({
analyticsActions: bindActionCreators(actions.analytics, dispatch)
analyticsActions: bindActionCreators(actions.analytics, dispatch),
routerActions: bindActionCreators(actions.router, dispatch)
})
const connector = connect(null, mapDispatchToProps)

Expand Down

0 comments on commit cf2956e

Please sign in to comment.