Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit fb404a2

Browse files
authored
Merge pull request #2033 from rodkeys/master
Fix: Save DisputeAcceptance to the contract no matter what
2 parents 467aecf + 57340cd commit fb404a2

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

net/service/handlers.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,11 +1520,19 @@ func (service *OpenBazaarService) handleDisputeClose(p peer.ID, pmes *pb.Message
15201520
return nil, err
15211521
}
15221522

1523+
// If DisputeAcceptance is already set then move the state directly to RESOLVED
15231524
if isPurchase {
1524-
// Set message state to complete
1525-
err = service.datastore.Purchases().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_DECIDED, false)
1525+
if contract.DisputeAcceptance != nil {
1526+
err = service.datastore.Purchases().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_RESOLVED, false)
1527+
} else {
1528+
err = service.datastore.Purchases().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_DECIDED, false)
1529+
}
15261530
} else {
1527-
err = service.datastore.Sales().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_DECIDED, false)
1531+
if contract.DisputeAcceptance != nil {
1532+
err = service.datastore.Sales().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_RESOLVED, false)
1533+
} else {
1534+
err = service.datastore.Sales().Put(rc.DisputeResolution.OrderId, *contract, pb.OrderState_DECIDED, false)
1535+
}
15281536
}
15291537
if err != nil {
15301538
return nil, err

wallet/listeners/transaction_listener.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func (l *TransactionListener) OnTransactionReceived(cb wallet.TransactionCallbac
129129
log.Errorf("update funding for sale (%s): %s", orderId, err)
130130
}
131131
// This is a dispute payout. We should set the order state.
132-
if state == pb.OrderState_DECIDED && len(records) > 0 && fundsReleased {
132+
if len(records) > 0 && fundsReleased {
133133
if contract.DisputeAcceptance == nil && contract != nil && contract.BuyerOrder != nil && contract.BuyerOrder.BuyerID != nil {
134134
accept := new(pb.DisputeAcceptance)
135135
ts, _ := ptypes.TimestampProto(time.Now())
@@ -154,16 +154,22 @@ func (l *TransactionListener) OnTransactionReceived(cb wallet.TransactionCallbac
154154
log.Errorf("persist dispute acceptance notification for order (%s): %s", orderId, err)
155155
}
156156
}
157-
if err := l.db.Sales().Put(orderId, *contract, pb.OrderState_RESOLVED, false); err != nil {
158-
log.Errorf("failed updating order (%s) to RESOLVED: %s", orderId, err.Error())
157+
if state == pb.OrderState_DECIDED {
158+
if err := l.db.Sales().Put(orderId, *contract, pb.OrderState_RESOLVED, false); err != nil {
159+
log.Errorf("failed updating order (%s) to RESOLVED: %s", orderId, err.Error())
160+
}
161+
} else {
162+
if err := l.db.Sales().Put(orderId, *contract, state, false); err != nil {
163+
log.Errorf("failed updating order (%s) with DisputeAcceptance: %s", orderId, err.Error())
164+
}
159165
}
160166
}
161167
} else {
162168
err = l.db.Purchases().UpdateFunding(orderId, funded, records)
163169
if err != nil {
164170
log.Errorf("update funding for purchase (%s): %s", orderId, err)
165171
}
166-
if state == pb.OrderState_DECIDED && len(records) > 0 && fundsReleased {
172+
if len(records) > 0 && fundsReleased {
167173
if contract.DisputeAcceptance == nil && contract != nil && len(contract.VendorListings) > 0 && contract.VendorListings[0].VendorID != nil {
168174
accept := new(pb.DisputeAcceptance)
169175
ts, _ := ptypes.TimestampProto(time.Now())
@@ -192,8 +198,14 @@ func (l *TransactionListener) OnTransactionReceived(cb wallet.TransactionCallbac
192198
log.Errorf("persist dispute acceptance notification for order (%s): %s", orderId, err)
193199
}
194200
}
195-
if err := l.db.Purchases().Put(orderId, *contract, pb.OrderState_RESOLVED, false); err != nil {
196-
log.Errorf("failed updating order (%s) to RESOLVED: %s", orderId, err.Error())
201+
if state == pb.OrderState_DECIDED {
202+
if err := l.db.Purchases().Put(orderId, *contract, pb.OrderState_RESOLVED, false); err != nil {
203+
log.Errorf("failed updating order (%s) to RESOLVED: %s", orderId, err.Error())
204+
}
205+
} else {
206+
if err := l.db.Purchases().Put(orderId, *contract, state, false); err != nil {
207+
log.Errorf("failed updating order (%s) with DisputeAcceptance: %s", orderId, err.Error())
208+
}
197209
}
198210
}
199211
}

0 commit comments

Comments
 (0)