Skip to content

Commit 75e9dea

Browse files
authored
Merge pull request #23 from quagliero/add-timestamp-to-trades
Implements #16 - add timestamps on create/close trade
2 parents d14a93e + 6243d85 commit 75e9dea

File tree

8 files changed

+49
-7
lines changed

8 files changed

+49
-7
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"dotenv": "^4.0.0",
2121
"firebase": "^3.9.0",
2222
"lodash": "^4.17.4",
23+
"moment": "^2.18.1",
2324
"url-loader": "^0.5.8",
2425
"vue": "^2.3.0",
2526
"vue-async-computed": "^3.0.1",

src/api/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import axios from 'axios';
2+
import { database as fireDb } from 'firebase';
23
import { auth, db } from '../database';
34
import { TradeStatus } from '../constants';
45

@@ -60,16 +61,19 @@ export default {
6061
rejectTrade({ draft, trade }) {
6162
return db.ref(`trades/${draft}/${trade}`).update({
6263
status: TradeStatus.REJECTED,
64+
closedAt: fireDb.ServerValue.TIMESTAMP,
6365
});
6466
},
6567
withdrawTrade({ draft, trade }) {
6668
return db.ref(`trades/${draft}/${trade}`).update({
6769
status: TradeStatus.WITHDRAWN,
70+
closedAt: fireDb.ServerValue.TIMESTAMP,
6871
});
6972
},
7073
acceptTrade({ draft, trade }) {
7174
return db.ref(`trades/${draft}/${trade}`).update({
7275
status: TradeStatus.ACCEPTED,
76+
closedAt: fireDb.ServerValue.TIMESTAMP,
7377
});
7478
},
7579
addTradeToAccepted({ draft, trade }) {

src/components/Trade/Accepted.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
/>
1010
<trade-outcome
1111
status="is-success"
12-
notification="This trade was accepted"
12+
notification="Trade accepted"
13+
:date="trade.closedAt"
1314
/>
1415
<hr/>
1516
<trade-calculators

src/components/Trade/Outcome.vue

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,29 @@
33
<div class="column has-text-centered">
44
<div>
55
<div :class="['notification', status]">
6-
<span class="title is-5">{{ notification }}</span>
6+
<span class="title is-5">{{ notification }} {{ prettyDate }}</span>
77
</div>
88
</div>
99
</div>
1010
</div>
1111
</template>
1212

1313
<script>
14+
import moment from 'moment';
15+
1416
export default {
1517
name: 'trade-outcome',
16-
props: ['status', 'notification'],
18+
props: ['status', 'notification', 'date'],
19+
computed: {
20+
prettyDate() {
21+
if (this.date != null) {
22+
const pretty = moment(this.date).format('MMMM Do YYYY @ h:mma');
23+
return ` on ${pretty}`;
24+
}
25+
26+
return '';
27+
},
28+
},
1729
};
1830
</script>
1931

src/components/Trade/Rejected.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
/>
99
<trade-outcome
1010
status="is-danger"
11-
notification="This offer was rejected"
11+
notification="Trade rejected"
12+
:date="trade.closedAt"
1213
/>
1314
<hr/>
1415
<trade-calculators

src/components/Trade/Withdrawn.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
/>
99
<trade-outcome
1010
status="is-danger"
11-
notification="This offer was withdrawn"
11+
notification="Trade withdrawn"
12+
:date="trade.closedAt"
1213
/>
1314
<hr/>
1415
<trade-calculators

src/store/modules/trade.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { database as fireDb } from 'firebase';
12
import keys from 'lodash/keys';
23
import map from 'lodash/map';
34
import filter from 'lodash/filter';
@@ -133,7 +134,7 @@ const actions = {
133134
givingPicks: trade.givingPicks,
134135
receivingPicks: trade.receivingPicks,
135136
status: TradeStatus.OFFERED,
136-
seen: false,
137+
createdAt: fireDb.ServerValue.TIMESTAMP,
137138
};
138139

139140
if (trade.message != null) {

src/views/TradesView.vue

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<section class="container">
44
<h1 class="title">Accepted Trades</h1>
55
<ul class="panel has-text-centered">
6-
<li v-for="trade in acceptedTrades" style="margin-bottom: 1rem;">
6+
<li v-for="trade in sortedTrades" style="margin-bottom: 1rem;">
77
<div class="panel-heading">
88
<div class="columns is-mobile">
99
<div class="column is-5">
@@ -37,6 +37,12 @@
3737
</div>
3838
</div>
3939
</div>
40+
<div
41+
v-if="trade.closedAt != null"
42+
class="panel-block has-text-centered"
43+
>
44+
<small style="width: 100%;">Trade accepted on {{ prettyDate(trade.closedAt) }}</small>
45+
</div>
4046
</li>
4147
</ul>
4248
</section>
@@ -45,6 +51,8 @@
4551

4652
<script>
4753
import { mapGetters } from 'vuex';
54+
import sortBy from 'lodash/sortBy';
55+
import moment from 'moment';
4856
4957
export default {
5058
name: 'trades-view',
@@ -55,6 +63,19 @@
5563
'getUserById',
5664
'getPickById',
5765
]),
66+
sortedTrades() {
67+
return sortBy(this.acceptedTrades, (a) => a.closedAt).reverse();
68+
},
69+
},
70+
methods: {
71+
prettyDate(date) {
72+
if (date != null) {
73+
const pretty = moment(date).format('MMMM Do YYYY @ h:mma');
74+
return `${pretty}`;
75+
}
76+
77+
return '';
78+
},
5879
},
5980
created() {
6081
this.$store.dispatch('getDrafts').then(() => {

0 commit comments

Comments
 (0)