@@ -3,43 +3,41 @@ import React, { Component } from "react";
33
44import withAppSearch from "../app-search/withAppSearch" ;
55import Sort from "../components/Sort" ;
6+ import SortOption from "../types/SortOption" ;
67
7- function serialize ( sortObject ) {
8- const keys = Object . keys ( sortObject ) ;
9- if ( keys . length === 0 ) return "" ;
10- return `${ [ keys [ 0 ] ] } |||${ sortObject [ [ keys [ 0 ] ] ] } ` ;
8+ function findSortOption ( sortOptions , sortString ) {
9+ const [ value , direction ] = sortString . split ( "|||" ) ;
10+ return sortOptions . find (
11+ option => option . value === value && option . direction === direction
12+ ) ;
1113}
1214
13- function deSerialize ( sortString ) {
14- if ( ! sortString ) return { } ;
15- const [ sortBy , sortDirection ] = sortString . split ( "|||" ) ;
15+ function formatOption ( sortOption ) {
1616 return {
17- [ sortBy ] : sortDirection
17+ name : sortOption . name ,
18+ value : `${ sortOption . value } |||${ sortOption . direction } `
1819 } ;
1920}
20-
2121class SortContainer extends Component {
2222 static propTypes = {
23+ // Injected
2324 setSort : PropTypes . func . isRequired ,
2425 sort : PropTypes . shape ( { name : PropTypes . string , value : PropTypes . string } )
25- . isRequired
26+ . isRequired ,
27+ // Passed
28+ sortOptions : PropTypes . arrayOf ( SortOption ) . isRequired
2629 } ;
2730
2831 render ( ) {
29- const { setSort, sort } = this . props ;
32+ const { setSort, sort, sortOptions } = this . props ;
3033
3134 return (
3235 < Sort
3336 onChange = { e => {
34- setSort ( deSerialize ( e . currentTarget . value ) ) ;
37+ setSort ( findSortOption ( sortOptions , e . currentTarget . value ) ) ;
3538 } }
36- options = { [
37- { name : "Name ASC" , value : "name|||asc" } ,
38- { name : "Name DESC" , value : "name|||desc" } ,
39- { name : "License ASC" , value : "license|||asc" } ,
40- { name : "License DESC" , value : "license|||desc" }
41- ] }
42- value = { serialize ( sort ) }
39+ options = { sortOptions . map ( formatOption ) }
40+ value = { formatOption ( sort ) . value }
4341 />
4442 ) ;
4543 }
0 commit comments