Skip to content

Commit

Permalink
feat: add sales marketplace endpoint (#2309)
Browse files Browse the repository at this point in the history
  • Loading branch information
Melisa Anabella Rossi authored Oct 10, 2024
1 parent d48a040 commit 20425d9
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { connect } from 'react-redux'
import { getIsOffchainPublicItemOrdersEnabled, getIsOffchainPublicNFTOrdersEnabled } from '../../../modules/features/selectors'
import { RootState } from '../../../modules/reducer'
import TransactionHistory from './TransactionHistory'
import { MapStateProps } from './TransactionHistory.types'

const mapState = (state: RootState): MapStateProps => ({
isOffchainPublicItemOrdersEnabled: getIsOffchainPublicItemOrdersEnabled(state),
isOffchainPublicNFTOrdersEnabled: getIsOffchainPublicNFTOrdersEnabled(state)
})

export default connect(mapState)(TransactionHistory)
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { t } from 'decentraland-dapps/dist/modules/translation/utils'
import { useTabletAndBelowMediaQuery } from 'decentraland-ui'
import { isNFT } from '../../../modules/asset/utils'
import { NFT } from '../../../modules/nft/types'
import { saleAPI } from '../../../modules/vendor/decentraland'
import { saleAPI, marketplaceSaleAPI } from '../../../modules/vendor/decentraland'
import TableContainer from '../../Table/TableContainer'
import { TableContent } from '../../Table/TableContent'
import { DataTableType } from '../../Table/TableContent/TableContent.types'
Expand All @@ -15,7 +15,7 @@ import './TransactionHistory.css'
const ROWS_PER_PAGE = 5

const TransactionHistory = (props: Props) => {
const { asset } = props
const { asset, isOffchainPublicItemOrdersEnabled, isOffchainPublicNFTOrdersEnabled } = props
const isMobileOrTablet = useTabletAndBelowMediaQuery()

const tabList = [
Expand Down Expand Up @@ -51,7 +51,8 @@ const TransactionHistory = (props: Props) => {
} else {
params.itemId = assetItemId
}
saleAPI
const api = isOffchainPublicItemOrdersEnabled || isOffchainPublicNFTOrdersEnabled ? marketplaceSaleAPI : saleAPI
api
.fetch(params)
.then(response => {
if (cancel) return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ import { Asset } from '../../../modules/asset/types'

export type Props = {
asset: Asset | null
isOffchainPublicItemOrdersEnabled: boolean
isOffchainPublicNFTOrdersEnabled: boolean
}

export type MapStateProps = Pick<Props, 'isOffchainPublicItemOrdersEnabled' | 'isOffchainPublicNFTOrdersEnabled'>
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
import TransactionHistory from './TransactionHistory'
import TransactionHistory from './TransactionHistory.container'
export { TransactionHistory }
12 changes: 9 additions & 3 deletions webapp/src/modules/sale/sagas.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { call, takeEvery, put } from '@redux-saga/core/effects'
import { call, takeEvery, put, select } from '@redux-saga/core/effects'
import { t } from 'decentraland-dapps/dist/modules/translation/utils'
import { isErrorWithMessage } from '../../lib/error'
import { saleAPI } from '../vendor/decentraland'
import { getIsOffchainPublicItemOrdersEnabled, getIsOffchainPublicNFTOrdersEnabled } from '../features/selectors'
import { waitForFeatureFlagsToBeLoaded } from '../features/utils'
import { saleAPI, marketplaceSaleAPI } from '../vendor/decentraland'
import { fetchSalesFailure, FetchSalesRequestAction, fetchSalesSuccess, FETCH_SALES_REQUEST } from './actions'

export function* saleSaga() {
Expand All @@ -12,7 +14,11 @@ export function* handleFetchSalesRequest(action: FetchSalesRequestAction) {
const { filters } = action.payload

try {
const { data: sales, total } = (yield call([saleAPI, saleAPI.fetch], filters)) as Awaited<ReturnType<typeof saleAPI.fetch>>
yield waitForFeatureFlagsToBeLoaded()
const isOffchainPublicNFTOrdersEnabled: boolean = yield select(getIsOffchainPublicNFTOrdersEnabled)
const isOffchainPublicItemOrdersEnabled: boolean = yield select(getIsOffchainPublicItemOrdersEnabled)
const api = isOffchainPublicItemOrdersEnabled || isOffchainPublicNFTOrdersEnabled ? marketplaceSaleAPI : saleAPI
const { data: sales, total } = (yield call([api, api.fetch], filters)) as Awaited<ReturnType<typeof api.fetch>>

yield put(fetchSalesSuccess(sales, total))
} catch (error) {
Expand Down
3 changes: 2 additions & 1 deletion webapp/src/modules/vendor/decentraland/sale/api.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SaleFilters } from '@dcl/schemas'
import { BaseAPI } from 'decentraland-dapps/dist/lib/api'
import { NFT_SERVER_URL } from '../nft'
import { MARKETPLACE_SERVER_URL, NFT_SERVER_URL } from '../nft'
import { retryParams } from '../utils'
import { SaleResponse } from './types'

Expand Down Expand Up @@ -29,3 +29,4 @@ class SaleAPI extends BaseAPI {
}

export const saleAPI = new SaleAPI(NFT_SERVER_URL, retryParams)
export const marketplaceSaleAPI = new SaleAPI(MARKETPLACE_SERVER_URL, retryParams)

0 comments on commit 20425d9

Please sign in to comment.