diff --git a/src/app/core/market/api/bid/bid.model.ts b/src/app/core/market/api/bid/bid.model.ts index 18df75bacd..fbd19aa329 100644 --- a/src/app/core/market/api/bid/bid.model.ts +++ b/src/app/core/market/api/bid/bid.model.ts @@ -69,6 +69,10 @@ export class Bid extends Product { return this.order.listing; } + get BidDatas(): any { + return this.order.BidDatas; + } + setActiveOrders() { this.activeBuySell = ['Accept bid', 'Mark as shipped', 'Mark as delivered', 'Make payment'] .includes(this.messages.action_button); diff --git a/src/app/core/market/api/bid/bid.service.ts b/src/app/core/market/api/bid/bid.service.ts index 5120f4cf49..8f64ca5569 100644 --- a/src/app/core/market/api/bid/bid.service.ts +++ b/src/app/core/market/api/bid/bid.service.ts @@ -77,8 +77,8 @@ export class BidService { }); } - rejectBidCommand(id: number): Observable { - const params = ['reject', id]; + rejectBidCommand(id: number, rejectReason: string): Observable { + const params = ['reject', id, rejectReason]; return this.market.call('bid', params); } diff --git a/src/app/core/util/utils.ts b/src/app/core/util/utils.ts index 9e5ac9e5b3..037cda510d 100644 --- a/src/app/core/util/utils.ts +++ b/src/app/core/util/utils.ts @@ -373,6 +373,10 @@ export const Messages = { } +export const rejectMessages = { + OUT_OF_STOCK: 'Item not currently in stock.' +} + export const isPrerelease = (release?: string): boolean => { let version = release; let found = false; @@ -398,3 +402,4 @@ export const isMainnetRelease = (release?: string): boolean => { return !version.includes('testnet'); } + diff --git a/src/app/market/_order.scss b/src/app/market/_order.scss index 809d3c8b71..8c16227390 100644 --- a/src/app/market/_order.scss +++ b/src/app/market/_order.scss @@ -98,6 +98,25 @@ border-radius: $radius; } } + + .reject-message-info { + margin-top: 8px; + .title { + font-size: 13px; + text-transform: uppercase; + font-weight: 500; + color: $text; + } + .more-info { + @extend %enable-select; + margin-left: 10px; + color: darken($color, 7%); + background: rgba($color-alert, 0.1); + padding: 3px 8px; + border-radius: $radius; + } + } + .action-buttons { .single .mat-icon { margin: 0; diff --git a/src/app/market/shared/orders/order-item/order-item.component.html b/src/app/market/shared/orders/order-item/order-item.component.html index 69c3d044ba..7a6ea91ff2 100644 --- a/src/app/market/shared/orders/order-item/order-item.component.html +++ b/src/app/market/shared/orders/order-item/order-item.component.html @@ -30,6 +30,16 @@ +
+
+

+ Reason for rejection + {{ checkRejectMessage() }} +

+ +
+
+
@@ -72,9 +82,7 @@
- + +
+ +

+ Please indicate a reason for rejecting this bid. +

+ +
+ + + + {{rMsg.viewValue}} + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/src/app/modals/reject-bid/reject-bid.component.scss b/src/app/modals/reject-bid/reject-bid.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/modals/reject-bid/reject-bid.component.spec.ts b/src/app/modals/reject-bid/reject-bid.component.spec.ts new file mode 100644 index 0000000000..62fe65a6cd --- /dev/null +++ b/src/app/modals/reject-bid/reject-bid.component.spec.ts @@ -0,0 +1,39 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { CoreModule } from '../../core/core.module'; +import { SharedModule } from '../../wallet/shared/shared.module'; +import { CoreUiModule } from '../../core-ui/core-ui.module'; +import { RejectBidComponent } from './reject-bid.component'; + +describe('RejectBidComponent', () => { + let component: RejectBidComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RejectBidComponent ], + imports: [ + BrowserAnimationsModule, + SharedModule, + CoreModule.forRoot(), + CoreUiModule.forRoot(), + ], + providers: [ + { provide: MatDialogRef }, + { provide: MAT_DIALOG_DATA } + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RejectBidComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/modals/reject-bid/reject-bid.component.ts b/src/app/modals/reject-bid/reject-bid.component.ts new file mode 100644 index 0000000000..b36bbb2eae --- /dev/null +++ b/src/app/modals/reject-bid/reject-bid.component.ts @@ -0,0 +1,51 @@ +import { Component, Output, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { rejectMessages } from '../../core/util/utils'; + +@Component({ + selector: 'app-reject-bid', + templateUrl: './reject-bid.component.html', + styleUrls: ['./reject-bid.component.scss'] +}) +export class RejectBidComponent implements OnInit { + + rejectMessages: RejectionMessages[] = []; + + constructor( + private dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: DialogData, + ) { + this.createMessages(); + } + + ngOnInit() { + } + + createMessages () { + const keys = Object.keys(rejectMessages); + for (let k = 0; k < keys.length; k++) { + this.rejectMessages.push({ + value: keys[k], + viewValue: rejectMessages[keys[k]] + }) + } + } + + confirm(): void { + this.dialogRef.close(this.data.selectedMessage); + } + + dialogClose(): void { + this.dialogRef.close('CANCEL'); + } +} + +export interface RejectionMessages { + value: string; + viewValue: string; +} + +export interface DialogData { + selectedMessage: string; +} +