@@ -11,17 +11,19 @@ const profit = require('./profit');
11
11
* @param {Number } first index of first trade to be included in results
12
12
* @param {Number } count how many trades to include in results, set to -1 to return all
13
13
* @param {Boolean } descending sort
14
+ * @param {String } search string to search listings for
14
15
*/
15
- exports . get = async function ( first , count , descending ) {
16
+ exports . get = async function ( first , count , descending , search ) {
17
+ search = search . trim ( ) . toLowerCase ( ) ;
16
18
const polldata = await fs . readJSON ( paths . files . polldata ) ;
17
19
const profitData = ( await profit . get ( undefined , undefined , undefined , true ) ) . tradeProfits ;
18
- let tradeList = Object . keys ( polldata . offerData ) . map ( ( key ) => {
20
+ let tradeList = Object . keys ( polldata . offerData ) . map ( ( key ) => {
19
21
const ret = polldata . offerData [ key ] ;
20
22
ret . id = key ;
21
23
return ret ;
22
24
} ) ;
23
25
const tradeCount = tradeList . length ;
24
- tradeList = tradeList . sort ( ( a , b ) => {
26
+ tradeList = tradeList . sort ( ( a , b ) => {
25
27
a = a . finishTimestamp ;
26
28
b = b . finishTimestamp ;
27
29
@@ -30,15 +32,25 @@ exports.get = async function(first, count, descending) {
30
32
if ( ! ( ! a || isNaN ( a ) ) && ( ! b || isNaN ( b ) ) ) return - 1 ;
31
33
if ( ( ! a || isNaN ( a ) ) && ( ! b || isNaN ( b ) ) ) return 0 ;
32
34
33
- if ( descending ) {
34
- b = [ a , a = b ] [ 0 ] ;
35
- }
35
+ if ( descending ) b = [ a , a = b ] [ 0 ] ;
36
36
37
37
return a - b ;
38
38
} ) ;
39
+ tradeList = tradeList . filter ( ( offer ) => {
40
+ let offerSearchResults = false ;
41
+ if ( Object . prototype . hasOwnProperty . call ( offer , 'dict' ) ) {
42
+ offerSearchResults = Object . keys ( offer . dict . our ) . reduce ( ( accumulator , item ) => {
43
+ return accumulator || getName ( item ) . toLowerCase ( ) . indexOf ( search ) > - 1 ;
44
+ } , false ) ;
45
+ offerSearchResults |= Object . keys ( offer . dict . our ) . reduce ( ( accumulator , item ) => {
46
+ return accumulator || getName ( item ) . toLowerCase ( ) . indexOf ( search ) > - 1 ;
47
+ } , false ) ;
48
+ }
49
+ return offer . id . indexOf ( search ) > - 1 || offerSearchResults ;
50
+ } ) ;
39
51
if ( count != - 1 ) tradeList = tradeList . slice ( first , first + count ) ;
40
52
const items = { } ;
41
- const trades = tradeList . map ( ( offer ) => {
53
+ const trades = tradeList . map ( ( offer ) => {
42
54
const ret = {
43
55
id : offer . id ,
44
56
items : {
@@ -53,36 +65,30 @@ exports.get = async function(first, count, descending) {
53
65
value : offer . value ,
54
66
accepted : offer . handledByUs === true && offer . isAccepted === true
55
67
} ;
56
- if ( typeof polldata . sent [ offer . id ] != 'undefined' ) {
57
- ret . lastState = data . ETradeOfferState [ polldata . sent [ offer . id ] ] ;
58
- } else if ( typeof polldata . received [ offer . id ] != 'undefined' ) {
59
- ret . lastState = data . ETradeOfferState [ polldata . received [ offer . id ] ] ;
60
- }
68
+
69
+ if ( typeof polldata . sent [ offer . id ] != 'undefined' ) ret . lastState = data . ETradeOfferState [ polldata . sent [ offer . id ] ] ;
70
+ else if ( typeof polldata . received [ offer . id ] != 'undefined' ) ret . lastState = data . ETradeOfferState [ polldata . received [ offer . id ] ] ;
71
+
61
72
if ( Object . prototype . hasOwnProperty . call ( offer , 'dict' ) ) {
62
- if ( Object . keys ( offer . dict . our ) . length > 0 ) {
63
- Object . keys ( offer . dict . our ) . forEach ( ( k ) => {
64
- if ( ! Object . prototype . hasOwnProperty . call ( items , k ) ) {
65
- items [ k ] = createTradeItem ( k ) ;
66
- }
67
- ret . items . our . push ( {
68
- sku : k ,
69
- amount : offer . dict . our [ k ]
70
- } ) ;
71
- } ) ;
72
- }
73
- if ( Object . keys ( offer . dict . their ) . length > 0 ) {
74
- Object . keys ( offer . dict . their ) . forEach ( ( k ) => {
75
- if ( ! Object . prototype . hasOwnProperty . call ( items , k ) ) {
76
- items [ k ] = createTradeItem ( k ) ;
77
- }
78
- ret . items . their . push ( {
79
- sku : k ,
80
- amount : offer . dict . their [ k ]
81
- } ) ;
82
- } ) ;
83
- }
73
+ if ( Object . keys ( offer . dict . our ) . length > 0 ) tradeSide ( 'our' ) ;
74
+ if ( Object . keys ( offer . dict . their ) . length > 0 ) tradeSide ( 'their' ) ;
84
75
}
76
+
85
77
return ret ;
78
+
79
+ /**
80
+ * Get items from one side of a trade
81
+ * @param {'our'|'their' } side
82
+ */
83
+ function tradeSide ( side ) {
84
+ Object . keys ( offer . dict [ side ] ) . forEach ( ( k ) => {
85
+ if ( ! Object . prototype . hasOwnProperty . call ( items , k ) ) items [ k ] = createTradeItem ( k ) ;
86
+ ret . items [ side ] . push ( {
87
+ sku : k ,
88
+ amount : offer . dict [ side ] [ k ]
89
+ } ) ;
90
+ } ) ;
91
+ }
86
92
} ) ;
87
93
return {
88
94
trades,
0 commit comments