Skip to content
This repository was archived by the owner on Apr 8, 2021. It is now read-only.

Commit eb17b23

Browse files
committed
Pull request #22: As/tradePage
Merge in LB/trading-post from as/tradePage to master * commit '965e042f79a72a29478f7bcb9429f092a78e7531': null check on metrics added status icon to the trade page.
2 parents 5e87b7f + 965e042 commit eb17b23

File tree

4 files changed

+47
-15
lines changed

4 files changed

+47
-15
lines changed

src/components/Metric.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as Vue from "vue";
33
44
interface Props {
55
title: string;
6-
value: string;
6+
value?: string;
77
}
88
99
export default Vue.defineComponent({
@@ -12,7 +12,7 @@ export default Vue.defineComponent({
1212
return (): JSX.Element => (
1313
<div class="Metric-main">
1414
<div class="Metric-title">{ props.title }:</div>
15-
<div class="Metric-value">{ props.value }</div>
15+
<div class="Metric-value">{ props.value ?? "-" }</div>
1616
<div class="Metric-content">{ context.slots["default"]?.() }</div>
1717
</div>
1818
)

src/service/metrics.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,24 @@ export function userWithMostGold(): Metric {
3030
}
3131

3232
// Emoji that has been requested the most times
33-
export function mostRequestedEmoji(): Metric {
33+
export function mostRequestedEmoji(): Metric | null{
3434
const trades = Array.from(state.network.trades.values());
3535
const requestedEmojis = new Map<Emoji, number>();
3636
for (const trade of trades) {
3737
Array.from(trade.requesteeEmoji)
3838
.map((emoji: Emoji) => requestedEmojis.set(emoji, (requestedEmojis.get(emoji) ?? 0) + 1));
3939
}
40-
41-
const emoji = Array.from(requestedEmojis.entries())
40+
if (trades != null){
41+
const emoji = Array.from(requestedEmojis.entries())
4242
.reduce((previous, current) => previous[1] > current[1] ? previous : current);
4343

44-
return { value: emoji[0], count: emoji[1] }
44+
return { value: emoji[0], count: emoji[1] }
45+
}
46+
return null;
4547
}
4648

4749
// Emoji that has been requested and accepted on either side of a trade the most times
48-
export function mostAcceptedEmoji(): Metric {
50+
export function mostAcceptedEmoji(): Metric | null{
4951
const trades = Array.from(state.network.trades.values());
5052
const acceptedTrades: Trade[] = trades.filter((trade) => trade.isAccepted);
5153
const requestedEmojis = new Map<Emoji, number>();
@@ -55,9 +57,11 @@ export function mostAcceptedEmoji(): Metric {
5557
const emojis = requestorEmoji.concat(requesteeEmoji);
5658
emojis.map((emoji: Emoji) => requestedEmojis.set(emoji, (requestedEmojis.get(emoji) ?? 0) + 1));
5759
}
60+
if (trades != null) {
61+
const emoji = Array.from(requestedEmojis.entries())
62+
.reduce((previous, current) => previous[1] > current[1] ? previous : current);
5863

59-
const emoji = Array.from(requestedEmojis.entries())
60-
.reduce((previous, current) => previous[1] > current[1] ? previous : current);
61-
62-
return { value: emoji[0], count: emoji[1] }
64+
return { value: emoji[0], count: emoji[1] }
65+
}
66+
return null;
6367
}

src/service/mirror.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,23 @@ export function startListening(topicId: ConsensusTopicIdLike) {
3030
try {
3131
data = JSON.parse(textDecoder.decode(response.message));
3232
state.network.currentSequenceNumber = response.sequenceNumber;
33-
if (state.network.currentSequenceNumber > state.network.sequenceLength) {
34-
getRunningHash(state.topicId!);
35-
}
33+
3634
} catch (err) {
3735
// Event is unprocessable
3836
// No worries
3937
state.network.currentSequenceNumber += 1;
4038
console.warn(err);
4139
return;
4240
}
41+
42+
try {
43+
if (state.network.currentSequenceNumber > state.network.sequenceLength) {
44+
getRunningHash(state.topicId!);
45+
}
46+
} catch (error) {
47+
console.log(error);
48+
}
49+
4350
const event: Event = {
4451
id: response.sequenceNumber,
4552
timestamp: response.consensusTimestamp.asDate(),

src/views/Trade.vue

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Button from "../components/Button.vue";
1111
import { AllEmoji, Emoji, Gold } from "../domain/tokens";
1212
import * as tradeAccept from "../store/events/trade-accept";
1313
import { Trade } from "../domain/trade";
14+
import StatusIcon, { AcceptStatus } from "../components/StatusIcon.vue";
1415
1516
export default Vue.defineComponent({
1617
name: "Trade",
@@ -36,6 +37,8 @@ export default Vue.defineComponent({
3637
return null;
3738
}
3839
40+
const acceptStatus = trade.isAccepted ? AcceptStatus.accepted : (trade.isValid ? AcceptStatus.pending : AcceptStatus.rejected);
41+
3942
let header;
4043
4144
if (!trade.isAccepted && trade.isValid && trade.requestee.publicKey === getCurrentUser()!.publicKey) {
@@ -69,7 +72,10 @@ export default Vue.defineComponent({
6972
onAddEmoji={()=>{}}
7073
onRemoveEmoji={()=>{}}
7174
/>
72-
<Icon class="Trade-swapIcon" d={ mdiSwapHorizontalVariant } />
75+
<div class="Trade-middle">
76+
<StatusIcon class="TradeRow-accepted" accepted={ acceptStatus } />
77+
<Icon class="Trade-swapIcon" d={ mdiSwapHorizontalVariant } />
78+
</div>
7379
<TradeWindow
7480
readonly
7581
user={ trade.requestee }
@@ -80,6 +86,9 @@ export default Vue.defineComponent({
8086
onRemoveEmoji={()=>{}}
8187
/>
8288
</div>
89+
<div class="Trade-back">
90+
<Button onClick={() => router.history.back()}>Go Back</Button>
91+
</div>
8392
</div>
8493
);
8594
};
@@ -114,6 +123,12 @@ export default Vue.defineComponent({
114123
grid-template-columns: 1fr auto 1fr;
115124
}
116125
126+
.Trade-middle {
127+
display: flex;
128+
flex-direction: column;
129+
justify-content: space-around;
130+
}
131+
117132
.Trade-subTitle {
118133
opacity: 0.6;
119134
margin-block-start: 5px;
@@ -126,4 +141,10 @@ export default Vue.defineComponent({
126141
justify-self: center;
127142
align-self: center;
128143
}
144+
145+
.Trade-back {
146+
display: flex;
147+
justify-content: flex-end;
148+
}
149+
129150
</style>

0 commit comments

Comments
 (0)