Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP LABX-390 Middleware commit #185

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
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
28 changes: 25 additions & 3 deletions pages/create-job.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,37 @@
import React from 'react'
import PropTypes from "prop-types";
import { connect } from 'react-redux'
import { CreateJobContent } from 'src/content'
import { MainLayout } from 'src/components/layouts'
import PageContentLoader from 'src/components/PageContentLoader'
import { getSelectInitialPropsLoading, selectInitialProps } from "src/store/createJob";

class CreateJobPage extends React.Component {

static propTypes = {
selectInitialProps: PropTypes.func.isRequired,
selectInitialPropsLoading: PropTypes.bool.isRequired,
}

componentDidMount () {
this.props.selectInitialProps()
}

render () {
return (
<MainLayout title='nav.createJob'>
<CreateJobContent />
<MainLayout title='nav.activeJobs'>
{ this.props.selectInitialPropsLoading ? <PageContentLoader /> : <CreateJobContent /> }
</MainLayout>
)
}
}

export default CreateJobPage
const mapStateToProps = (state) => ({
selectInitialPropsLoading: getSelectInitialPropsLoading(state),
})

const mapDispatchToProps = (dispatch) => ({
selectInitialProps: () => dispatch(selectInitialProps()),
})

export default connect(mapStateToProps, mapDispatchToProps)(CreateJobPage)
4 changes: 2 additions & 2 deletions src/api/backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import ProfileClientModel from "./model/ProfileClientModel"
import ProfileWorkerModel from "./model/ProfileWorkerModel"
import ProfileRecruiterModel from "./model/ProfileRecruiterModel"

// const API_URL = 'https://backend.profile.tp.ntr1x.com/api/v1'
const API_URL = 'http://localhost:3000/api/v1'
const API_URL = 'https://backend.profile.tp.ntr1x.com/api/v1'
// const API_URL = 'http://localhost:3000/api/v1'

const http = axios.create({ baseURL: API_URL })

Expand Down
18 changes: 14 additions & 4 deletions src/daos/lib/BoardControllerDAO.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// import BigNumber from 'bignumber.js'
import get from 'lodash/get'
import {
BoardModel,
BoardIPFSModel,
Expand All @@ -15,6 +16,9 @@ import {
import { loadFromIPFS, bytes32ToIPFSHash, ipfsHashToBytes32 } from 'src/utils'
import AbstractContractDAO from './AbstractContractDAO'
import {TAGS_LIST} from "../../models";
import { TAG_ANY_MASK } from "src/models/meta/TagModel";
import { TAG_AREA_ANY_MASK } from "src/models/meta/TagAreaModel";
import { TAG_CATEGORY_ANY_MASK } from "src/models/meta/TagCategoryModel";

export default class BoardControllerDAO extends AbstractContractDAO {
constructor ({ address, history, abi }) {
Expand Down Expand Up @@ -85,6 +89,12 @@ export default class BoardControllerDAO extends AbstractContractDAO {
return boards
}

async getBoardsForUser (address, tags = TAG_ANY_MASK, tagsArea = TAG_AREA_ANY_MASK, tagsCategory = TAG_CATEGORY_ANY_MASK) {
const ids = await this.contract.methods.getBoardsForUser(address, tags, tagsArea, tagsCategory).call()
const boards = await this.getBoards(address)
let b=8;
}

async getBoardsByIds (signer, ids: Number[]) {
const boards = []
const response = await this.contract.methods.getBoardsByIds(ids).call()
Expand Down Expand Up @@ -115,11 +125,11 @@ export default class BoardControllerDAO extends AbstractContractDAO {
tagsCategory: TagCategoryModel.arrayValueOfMask(_tagsCategories[i]),
ipfs: new BoardIPFSModel({
...ipfs,
joinRequirement: ipfs.joinRequirement !== undefined ? BoardRequirementModel.valueOf(ipfs.joinRequirement) : null,
fee: ipfs.fee !== undefined ? BoardPostFeeModel.valueOf(ipfs.fee) : null,
lhus: ipfs.lhus !== undefined ? +ipfs.lhus : 0,
joinRequirement: get(ipfs, "joinRequirement") !== undefined ? BoardRequirementModel.valueOf(get(ipfs, "joinRequirement")) : null,
fee: get(ipfs, "fee") !== undefined ? BoardPostFeeModel.valueOf(get(ipfs, "fee")) : null,
lhus: get(ipfs, "lhus") !== undefined ? +get(ipfs, "lhus") : 0,
hash: ipfsHash,
endorsingSkills: !!ipfs.endorsingSkills,
endorsingSkills: !!get(ipfs, "endorsingSkills"),
}),
extra: new BoardExtraModel({
isSignerJoined,
Expand Down
2 changes: 2 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ import {
completedJobs,
applicationsAndOffers,
auth,
createJob,
} from "src/store/reducers"

import AuthRoute from "src/components/routes/AuthRoute"
Expand Down Expand Up @@ -159,6 +160,7 @@ const reducer = combineReducers({
completedJobs,
applicationsAndOffers,
auth,
createJob,
})

const store = createStore(
Expand Down
22 changes: 22 additions & 0 deletions src/store/createJob/actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { signerSelector } from '../wallet/selectors'
import { daoByType } from "src/store";

export const SELECT_INITIAL_PROPS_REQUEST = 'CREATE_JOB/SELECT_INITIAL_PROPS/REQUEST'
export const SELECT_INITIAL_PROPS_SUCCESS = 'CREATE_JOB/SELECT_INITIAL_PROPS/SUCCESS'
export const SELECT_INITIAL_PROPS_FAILURE = 'CREATE_JOB/SELECT_INITIAL_PROPS/FAILURE'
export const selectInitialPropsRequest = (req) => ({ type: SELECT_INITIAL_PROPS_REQUEST, payload: req })
export const selectInitialPropsSuccess = (res) => ({ type: SELECT_INITIAL_PROPS_SUCCESS, payload: res })
export const selectInitialPropsFailure = (err) => ({ type: SELECT_INITIAL_PROPS_FAILURE, payload: err })
export const selectInitialProps = () => async (dispatch, getState) => {
try {
dispatch(selectInitialPropsRequest())
const state = getState()
const BoardController = daoByType('BoardController')(state)
const signer = signerSelector()(state)
const myConnectedBoards = await BoardController.getBoardsForUser(signer.address)

dispatch(selectInitialPropsSuccess({ myConnectedBoards }))
} catch (err) {
dispatch(selectInitialPropsFailure(err))
}
}
3 changes: 3 additions & 0 deletions src/store/createJob/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './actions'
export * from './reducer'
export * from './selectors'
46 changes: 46 additions & 0 deletions src/store/createJob/reducer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// @flow

import {
SELECT_INITIAL_PROPS_REQUEST,
SELECT_INITIAL_PROPS_SUCCESS,
SELECT_INITIAL_PROPS_FAILURE,
} from "./actions"

interface State {
selectInitialPropsLoading: boolean;
myConnectedBoards: Array<Object>;
selectInitialPropsFailure: Error;
}

export const STATE: State = {
selectInitialPropsLoading: true,
myConnectedBoards: [],
selectInitialPropsFailure: true,
}

export default (state: State = STATE, action) => {

switch (action.type) {

case SELECT_INITIAL_PROPS_REQUEST: return ({
...state,
selectInitialPropsLoading: true,
})
case SELECT_INITIAL_PROPS_SUCCESS: return ({
...state,
selectInitialPropsLoading: false,
myConnectedBoards: action.payload.myConnectedBoards,
})
case SELECT_INITIAL_PROPS_FAILURE: return ({
...state,
selectInitialPropsLoading: false,
selectInitialPropsFailure: action.payload,
})

default: return ({
...state,
})

}

}
12 changes: 12 additions & 0 deletions src/store/createJob/selectors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { createSelector } from "reselect"
import moment from 'moment'
import groupBy from 'lodash/groupBy'

export const getState = state => state.createJob

export const getSelectInitialPropsLoading = createSelector(getState, state => state.selectInitialPropsLoading)

export const getMyConnectedBoards = createSelector(
getState,
state => state.myConnectedBoards
)
1 change: 1 addition & 0 deletions src/store/reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ export { default as archiveJobs } from './archiveJobs/reducer'
export { default as completedJobs } from './completedJobs/reducer'
export { default as applicationsAndOffers } from './applicationsAndOffers/reducer'
export { default as auth } from './auth/reducer'
export { default as createJob } from './createJob/reducer'
2 changes: 1 addition & 1 deletion webpack.config.dvlp.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPl

module.exports = merge(common, {
mode: 'development',
// devtool: 'source-map',
devtool: 'source-map',
// plugins: [
// new BundleAnalyzerPlugin()
// ],
Expand Down