@@ -233,10 +233,12 @@ const saveUserReview = async (targetUser, rating) => {
233
233
const cancelAddInvoice = async ( ctx , order , job ) => {
234
234
try {
235
235
let userAction = false ;
236
+ let userTgId = false ;
236
237
if ( ! job ) {
237
238
ctx . deleteMessage ( ) ;
238
239
ctx . scene . leave ( ) ;
239
240
userAction = true ;
241
+ userTgId = ctx . from . id ;
240
242
if ( ! order ) {
241
243
const orderId = ! ! ctx && ctx . update . callback_query . message . text ;
242
244
if ( ! orderId ) return ;
@@ -258,6 +260,9 @@ const cancelAddInvoice = async (ctx, order, job) => {
258
260
return await messages . genericErrorMessage ( ctx , user , i18nCtx ) ;
259
261
260
262
const sellerUser = await User . findOne ( { _id : order . seller_id } ) ;
263
+ const buyerUser = await User . findOne ( { _id : order . buyer_id } ) ;
264
+ const sellerTgId = sellerUser . tg_id ;
265
+ // If order creator cancels it, it will not be republished
261
266
if ( order . creator_id === order . buyer_id ) {
262
267
order . status = 'CLOSED' ;
263
268
await order . save ( ) ;
@@ -269,6 +274,21 @@ const cancelAddInvoice = async (ctx, order, job) => {
269
274
order ,
270
275
i18nCtxSeller
271
276
) ;
277
+ } else if ( order . creator_id === order . seller_id && userTgId == sellerTgId ) {
278
+ order . status = 'CLOSED' ;
279
+ await order . save ( ) ;
280
+ await messages . successCancelOrderMessage (
281
+ ctx ,
282
+ sellerUser ,
283
+ order ,
284
+ i18nCtx
285
+ ) ;
286
+ await messages . counterPartyCancelOrderMessage (
287
+ ctx ,
288
+ buyerUser ,
289
+ order ,
290
+ i18nCtx
291
+ ) ;
272
292
} else {
273
293
// Re-publish order
274
294
if ( userAction ) {
@@ -315,20 +335,7 @@ const cancelAddInvoice = async (ctx, order, job) => {
315
335
order ,
316
336
i18nCtx
317
337
) ;
318
- } else {
319
- await messages . successCancelOrderMessage (
320
- ctx ,
321
- sellerUser ,
322
- order ,
323
- i18nCtx
324
- ) ;
325
- await messages . counterPartyCancelOrderMessage (
326
- ctx ,
327
- user ,
328
- order ,
329
- i18nCtx
330
- ) ;
331
- }
338
+ }
332
339
} else {
333
340
await messages . successCancelOrderMessage ( ctx , user , order , i18nCtx ) ;
334
341
}
@@ -408,10 +415,12 @@ const showHoldInvoice = async (ctx, bot, order) => {
408
415
const cancelShowHoldInvoice = async ( ctx , order , job ) => {
409
416
try {
410
417
let userAction = false ;
418
+ let userTgId = false ;
411
419
if ( ! job ) {
412
420
ctx . deleteMessage ( ) ;
413
421
ctx . scene . leave ( ) ;
414
422
userAction = true ;
423
+ userTgId = ctx . from . id ;
415
424
if ( ! order ) {
416
425
const orderId = ! ! ctx && ctx . update . callback_query . message . text ;
417
426
if ( ! orderId ) return ;
@@ -431,6 +440,9 @@ const cancelShowHoldInvoice = async (ctx, order, job) => {
431
440
return await messages . genericErrorMessage ( ctx , user , i18nCtx ) ;
432
441
433
442
const buyerUser = await User . findOne ( { _id : order . buyer_id } ) ;
443
+ const sellerUser = await User . findOne ( { _id : order . seller_id } ) ;
444
+ const buyerTgId = buyerUser . tg_id ;
445
+ // If order creator cancels it, it will not be republished
434
446
if ( order . creator_id === order . seller_id ) {
435
447
order . status = 'CLOSED' ;
436
448
await order . save ( ) ;
@@ -441,6 +453,22 @@ const cancelShowHoldInvoice = async (ctx, order, job) => {
441
453
order ,
442
454
i18nCtx
443
455
) ;
456
+ } else if ( order . creator_id === order . buyer_id && userTgId == buyerTgId ) {
457
+ order . status = 'CLOSED' ;
458
+ await order . save ( ) ;
459
+ await messages . successCancelOrderMessage (
460
+ ctx ,
461
+ buyerUser ,
462
+ order ,
463
+ i18nCtx
464
+ ) ;
465
+ await messages . counterPartyCancelOrderMessage (
466
+ ctx ,
467
+ sellerUser ,
468
+ order ,
469
+ i18nCtx
470
+ ) ;
471
+
444
472
} else {
445
473
// Re-publish order
446
474
if ( userAction ) {
@@ -488,20 +516,7 @@ const cancelShowHoldInvoice = async (ctx, order, job) => {
488
516
order ,
489
517
i18nCtx
490
518
) ;
491
- } else {
492
- await messages . successCancelOrderMessage (
493
- ctx ,
494
- buyerUser ,
495
- order ,
496
- i18nCtx
497
- ) ;
498
- await messages . counterPartyCancelOrderMessage (
499
- ctx ,
500
- user ,
501
- order ,
502
- i18nCtx
503
- ) ;
504
- }
519
+ }
505
520
} else {
506
521
await messages . successCancelOrderMessage ( ctx , user , order , i18nCtx ) ;
507
522
}
0 commit comments