1+ import { set } from 'vue' ;
12import { database as fireDb } from 'firebase' ;
23import keys from 'lodash/keys' ;
34import map from 'lodash/map' ;
45import filter from 'lodash/filter' ;
5- import reduce from 'lodash/reduce' ;
66import some from 'lodash/some' ;
77import * as types from '../mutations' ;
88import api from '../../api' ;
@@ -25,15 +25,13 @@ const Trade = (tradeProps) => {
2525const state = {
2626 current : { } ,
2727 userTrades : { } ,
28- userTradesReceived : false ,
2928 acceptedTrades : { } ,
3029} ;
3130
3231// getters
3332const getters = {
3433 currentTrade : stateObj => stateObj . current ,
3534 userTrades : stateObj => stateObj . userTrades ,
36- userTradesReceived : stateObj => stateObj . userTradesReceived ,
3735 acceptedTrades : stateObj => stateObj . acceptedTrades ,
3836 getTradeById : stateObj => tradeId => stateObj . userTrades [ tradeId ] ,
3937} ;
@@ -102,27 +100,17 @@ const actions = {
102100 } ) ;
103101 } ,
104102 getUserTrades ( { commit } , { draft, user } ) {
105- // @TODO figure out why every trade gets looped after proposing
106- // guess maybe something to do with snapshotting inside the map
107- api . listenForValueEvents ( `tradesUsersPivot/${ draft } /${ user } ` , ( userTrades ) => {
108- const tradeIds = keys ( userTrades ) ;
109- const ref = db . ref ( `trades/${ draft } ` ) ;
110-
111- Promise . all (
112- tradeIds . map ( ( id ) => new Promise ( ( resolve ) => {
113- ref . child ( id ) . on ( 'value' , ( trade ) => {
114- const snapshot = trade . val ( ) ;
115- commit ( types . RECEIVE_USER_TRADE , snapshot ) ;
116- resolve ( snapshot ) ;
117- } ) ;
118- } ) ) ,
119- ) . then ( ( trades ) => {
120- commit ( types . RECEIVE_USER_TRADES , reduce ( trades , ( all , t ) => {
121- all [ t . id ] = t ;
122- return all ;
123- } , { } ) ) ;
103+ const url = `tradesUsersPivot/${ draft } /${ user } ` ;
104+ const ref = db . ref ( `trades/${ draft } ` ) ;
105+ const getUserTrade = ( key ) => {
106+ ref . child ( key ) . on ( 'value' , ( childSnapshot ) => {
107+ const trade = childSnapshot . val ( ) ;
108+ commit ( types . RECEIVE_USER_TRADE , trade ) ;
124109 } ) ;
125- } ) ;
110+ } ;
111+
112+ api . listenForAddedEvents ( url , ( snapshot ) => getUserTrade ( snapshot . key ) ) ;
113+ api . listenForChangeEvents ( url , ( snapshot ) => getUserTrade ( snapshot . key ) ) ;
126114 } ,
127115 proposeTrade ( { commit } , { trade, draft } ) {
128116 const tradeKey = db . ref ( 'trades' ) . push ( ) . key ;
@@ -269,13 +257,8 @@ const mutations = {
269257 [ types . RECEIVE_ACCEPTED_TRADES ] ( stateObj , acceptedTrades ) {
270258 stateObj . acceptedTrades = acceptedTrades ;
271259 } ,
272- [ types . RECEIVE_USER_TRADES ] ( stateObj , trades ) {
273- stateObj . userTrades = trades ;
274- stateObj . userTradesReceived = true ;
275- } ,
276260 [ types . RECEIVE_USER_TRADE ] ( stateObj , trade ) {
277- console . log ( trade . id ) ;
278- stateObj . userTrades [ trade . id ] = trade ;
261+ set ( stateObj . userTrades , trade . id , trade ) ;
279262 } ,
280263 [ types . SAVE_TRADE ] ( stateObj , { trade } ) {
281264 stateObj . savedTrades . push ( trade ) ;
@@ -294,7 +277,6 @@ const mutations = {
294277 } ,
295278 [ types . DESTROY_SESSION ] ( stateObj ) {
296279 stateObj . userTrades = { } ;
297- stateObj . userTradesReceived = false ;
298280 stateObj . current = { } ;
299281 } ,
300282} ;
0 commit comments