diff --git a/src/app/features/home/transaction/transaction-routing.module.ts b/src/app/features/home/activities/activities-routing.module.ts
similarity index 59%
rename from src/app/features/home/transaction/transaction-routing.module.ts
rename to src/app/features/home/activities/activities-routing.module.ts
index 6d56d80bc..b77463fd8 100644
--- a/src/app/features/home/transaction/transaction-routing.module.ts
+++ b/src/app/features/home/activities/activities-routing.module.ts
@@ -1,6 +1,6 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
-import { TransactionPage } from './transaction.page';
+import { TransactionPage } from './activities.page';
const routes: Routes = [
{
@@ -8,11 +8,11 @@ const routes: Routes = [
component: TransactionPage,
},
{
- path: 'transaction-details',
+ path: 'capture-transaction-details',
loadChildren: () =>
- import('./transaction-details/transaction-details.module').then(
- m => m.TransactionDetailsPageModule
- ),
+ import(
+ './capture-transaction-details/capture-transaction-details.module'
+ ).then(m => m.TransactionDetailsPageModule),
},
];
diff --git a/src/app/features/home/activities/activities.module.ts b/src/app/features/home/activities/activities.module.ts
new file mode 100644
index 000000000..fd2127e22
--- /dev/null
+++ b/src/app/features/home/activities/activities.module.ts
@@ -0,0 +1,16 @@
+import { NgModule } from '@angular/core';
+import { SharedModule } from '../../../shared/shared.module';
+import { TransactionPageRoutingModule } from './activities-routing.module';
+import { TransactionPage } from './activities.page';
+import { CaptureTransactionsComponent } from './capture-transactions/capture-transactions.component';
+import { NetworkActionOrdersComponent } from './network-action-orders/network-action-orders.component';
+
+@NgModule({
+ imports: [SharedModule, TransactionPageRoutingModule],
+ declarations: [
+ TransactionPage,
+ CaptureTransactionsComponent,
+ NetworkActionOrdersComponent,
+ ],
+})
+export class TransactionPageModule {}
diff --git a/src/app/features/home/activities/activities.page.html b/src/app/features/home/activities/activities.page.html
new file mode 100644
index 000000000..e8f8976da
--- /dev/null
+++ b/src/app/features/home/activities/activities.page.html
@@ -0,0 +1,26 @@
+
+
+ {{ t('activity') }}
+
+
+
+
+
+ {{ t('captureTransactions') }}
+
+
+ {{ t('message.moreActions') }}
+
+
+
+
+
diff --git a/src/app/features/home/activities/activities.page.scss b/src/app/features/home/activities/activities.page.scss
new file mode 100644
index 000000000..f9aa9a8dc
--- /dev/null
+++ b/src/app/features/home/activities/activities.page.scss
@@ -0,0 +1,5 @@
+mat-toolbar {
+ span {
+ padding-right: 40px;
+ }
+}
diff --git a/src/app/features/home/transaction/transaction.page.spec.ts b/src/app/features/home/activities/activities.page.spec.ts
similarity index 92%
rename from src/app/features/home/transaction/transaction.page.spec.ts
rename to src/app/features/home/activities/activities.page.spec.ts
index 45b46d4a4..b6659ae67 100644
--- a/src/app/features/home/transaction/transaction.page.spec.ts
+++ b/src/app/features/home/activities/activities.page.spec.ts
@@ -1,6 +1,6 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { SharedTestingModule } from '../../../shared/shared-testing.module';
-import { TransactionPage } from './transaction.page';
+import { TransactionPage } from './activities.page';
describe('TransactionPage', () => {
let component: TransactionPage;
diff --git a/src/app/features/home/activities/activities.page.ts b/src/app/features/home/activities/activities.page.ts
new file mode 100644
index 000000000..caaf4ed4f
--- /dev/null
+++ b/src/app/features/home/activities/activities.page.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+import { UntilDestroy } from '@ngneat/until-destroy';
+
+@UntilDestroy({ checkProperties: true })
+@Component({
+ selector: 'app-activities',
+ templateUrl: './activities.page.html',
+ styleUrls: ['./activities.page.scss'],
+})
+export class TransactionPage {}
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details-routing.module.ts b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details-routing.module.ts
similarity index 80%
rename from src/app/features/home/transaction/transaction-details/transaction-details-routing.module.ts
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details-routing.module.ts
index b662d9605..2dd947340 100644
--- a/src/app/features/home/transaction/transaction-details/transaction-details-routing.module.ts
+++ b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details-routing.module.ts
@@ -1,6 +1,6 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
-import { TransactionDetailsPage } from './transaction-details.page';
+import { TransactionDetailsPage } from './capture-transaction-details.page';
const routes: Routes = [
{
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details.module.ts b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.module.ts
similarity index 60%
rename from src/app/features/home/transaction/transaction-details/transaction-details.module.ts
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details.module.ts
index 4c6812e69..8e56c3e39 100644
--- a/src/app/features/home/transaction/transaction-details/transaction-details.module.ts
+++ b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.module.ts
@@ -1,7 +1,7 @@
import { NgModule } from '@angular/core';
import { SharedModule } from '../../../../shared/shared.module';
-import { TransactionDetailsPageRoutingModule } from './transaction-details-routing.module';
-import { TransactionDetailsPage } from './transaction-details.page';
+import { TransactionDetailsPageRoutingModule } from './capture-transaction-details-routing.module';
+import { TransactionDetailsPage } from './capture-transaction-details.page';
@NgModule({
imports: [SharedModule, TransactionDetailsPageRoutingModule],
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details.page.html b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.html
similarity index 100%
rename from src/app/features/home/transaction/transaction-details/transaction-details.page.html
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.html
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details.page.scss b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.scss
similarity index 100%
rename from src/app/features/home/transaction/transaction-details/transaction-details.page.scss
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.scss
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details.page.spec.ts b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.spec.ts
similarity index 90%
rename from src/app/features/home/transaction/transaction-details/transaction-details.page.spec.ts
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.spec.ts
index dc5d2df63..9468670ff 100644
--- a/src/app/features/home/transaction/transaction-details/transaction-details.page.spec.ts
+++ b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.spec.ts
@@ -1,6 +1,6 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { SharedTestingModule } from '../../../../shared/shared-testing.module';
-import { TransactionDetailsPage } from './transaction-details.page';
+import { TransactionDetailsPage } from './capture-transaction-details.page';
describe('TransactionDetailsPage', () => {
let component: TransactionDetailsPage;
diff --git a/src/app/features/home/transaction/transaction-details/transaction-details.page.ts b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.ts
similarity index 93%
rename from src/app/features/home/transaction/transaction-details/transaction-details.page.ts
rename to src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.ts
index a525da38c..6a225e44d 100644
--- a/src/app/features/home/transaction/transaction-details/transaction-details.page.ts
+++ b/src/app/features/home/activities/capture-transaction-details/capture-transaction-details.page.ts
@@ -11,9 +11,9 @@ import { ErrorService } from '../../../../shared/error/error.service';
import { isNonNullable } from '../../../../utils/rx-operators/rx-operators';
@UntilDestroy({ checkProperties: true })
@Component({
- selector: 'app-transaction-details',
- templateUrl: './transaction-details.page.html',
- styleUrls: ['./transaction-details.page.scss'],
+ selector: 'app-capture-transaction-details',
+ templateUrl: './capture-transaction-details.page.html',
+ styleUrls: ['./capture-transaction-details.page.scss'],
})
export class TransactionDetailsPage {
readonly transaction$ = this.route.paramMap.pipe(
diff --git a/src/app/features/home/transaction/transaction.page.html b/src/app/features/home/activities/capture-transactions/capture-transactions.component.html
similarity index 75%
rename from src/app/features/home/transaction/transaction.page.html
rename to src/app/features/home/activities/capture-transactions/capture-transactions.component.html
index 091166e11..e9dd273bd 100644
--- a/src/app/features/home/transaction/transaction.page.html
+++ b/src/app/features/home/activities/capture-transactions/capture-transactions.component.html
@@ -1,10 +1,3 @@
-
-
- {{ t('transaction') }}
-
-
{
+ let component: CaptureTransactionsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(
+ waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [CaptureTransactionsComponent],
+ imports: [IonicModule.forRoot(), SharedTestingModule],
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(CaptureTransactionsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ })
+ );
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/features/home/transaction/transaction.page.ts b/src/app/features/home/activities/capture-transactions/capture-transactions.component.ts
similarity index 57%
rename from src/app/features/home/transaction/transaction.page.ts
rename to src/app/features/home/activities/capture-transactions/capture-transactions.component.ts
index c59b68fb0..d2ca80c27 100644
--- a/src/app/features/home/transaction/transaction.page.ts
+++ b/src/app/features/home/activities/capture-transactions/capture-transactions.component.ts
@@ -1,18 +1,16 @@
import { Component } from '@angular/core';
-import { UntilDestroy } from '@ngneat/until-destroy';
import { catchError, map, shareReplay } from 'rxjs/operators';
-import { DiaBackendAuthService } from '../../../shared/dia-backend/auth/dia-backend-auth.service';
-import { DiaBackendTransactionRepository } from '../../../shared/dia-backend/transaction/dia-backend-transaction-repository.service';
-import { ErrorService } from '../../../shared/error/error.service';
-import { getStatus } from './transaction-details/transaction-details.page';
+import { DiaBackendAuthService } from '../../../../shared/dia-backend/auth/dia-backend-auth.service';
+import { DiaBackendTransactionRepository } from '../../../../shared/dia-backend/transaction/dia-backend-transaction-repository.service';
+import { ErrorService } from '../../../../shared/error/error.service';
+import { getStatus } from '../capture-transaction-details/capture-transaction-details.page';
-@UntilDestroy({ checkProperties: true })
@Component({
- selector: 'app-transaction',
- templateUrl: './transaction.page.html',
- styleUrls: ['./transaction.page.scss'],
+ selector: 'app-capture-transactions',
+ templateUrl: './capture-transactions.component.html',
+ styleUrls: ['./capture-transactions.component.scss'],
})
-export class TransactionPage {
+export class CaptureTransactionsComponent {
readonly transactionsWithStatus$ =
this.diaBackendTransactionRepository.all$.pipe(
catchError((err: unknown) => this.errorService.toastError$(err)),
diff --git a/src/app/features/home/activities/network-action-orders/network-action-orders.component.html b/src/app/features/home/activities/network-action-orders/network-action-orders.component.html
new file mode 100644
index 000000000..7a32328b9
--- /dev/null
+++ b/src/app/features/home/activities/network-action-orders/network-action-orders.component.html
@@ -0,0 +1,28 @@
+
+
+
+
+ {{ order.network_app_name_text }}
+ {{ order.asset_id_text }}
+ {{ order['Created Date'] | date: 'short' }}
+
+
+
+
+
diff --git a/src/app/features/home/activities/network-action-orders/network-action-orders.component.scss b/src/app/features/home/activities/network-action-orders/network-action-orders.component.scss
new file mode 100644
index 000000000..f8fd79252
--- /dev/null
+++ b/src/app/features/home/activities/network-action-orders/network-action-orders.component.scss
@@ -0,0 +1,42 @@
+mat-list-item {
+ height: initial;
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ img[matListAvatar] {
+ border-radius: 4px;
+ width: calc(100vw / 5);
+ height: calc(100vw / 8);
+ max-width: 150px;
+ max-height: 80px;
+ }
+
+ button {
+ flex-shrink: 0;
+ min-width: 25%;
+ }
+
+ button.completed {
+ color: var(--ion-color-dark-contrast);
+ border-color: var(--noir-simple);
+ background-color: var(--noir-simple);
+ }
+
+ button.paid {
+ color: var(--noir-secondary-dark);
+ border-color: var(--noir-secondary-dark);
+ }
+
+ button.submitted {
+ color: var(--ion-color-dark-contrast);
+ border-color: var(--noir-secondary-dark);
+ background-color: var(--noir-secondary-dark);
+ }
+
+ button.failed,
+ button.payment_failed {
+ color: var(--ion-color-dark-contrast);
+ border-color: var(--noir-warn);
+ background-color: var(--noir-warn);
+ }
+}
diff --git a/src/app/features/home/activities/network-action-orders/network-action-orders.component.spec.ts b/src/app/features/home/activities/network-action-orders/network-action-orders.component.spec.ts
new file mode 100644
index 000000000..82f350ebf
--- /dev/null
+++ b/src/app/features/home/activities/network-action-orders/network-action-orders.component.spec.ts
@@ -0,0 +1,26 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { IonicModule } from '@ionic/angular';
+import { SharedTestingModule } from '../../../../shared/shared-testing.module';
+import { NetworkActionOrdersComponent } from './network-action-orders.component';
+
+describe('NetworkActionOrdersComponent', () => {
+ let component: NetworkActionOrdersComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(
+ waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [NetworkActionOrdersComponent],
+ imports: [IonicModule.forRoot(), SharedTestingModule],
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(NetworkActionOrdersComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ })
+ );
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/features/home/activities/network-action-orders/network-action-orders.component.ts b/src/app/features/home/activities/network-action-orders/network-action-orders.component.ts
new file mode 100644
index 000000000..5028e84b6
--- /dev/null
+++ b/src/app/features/home/activities/network-action-orders/network-action-orders.component.ts
@@ -0,0 +1,77 @@
+import { Component } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
+import { combineLatest, EMPTY } from 'rxjs';
+import { first, map, pluck } from 'rxjs/operators';
+import {
+ ActionsService,
+ BubbleOrderHistoryRecord,
+} from '../../../../shared/actions/service/actions.service';
+import { DiaBackendAssetRepository } from '../../../../shared/dia-backend/asset/dia-backend-asset-repository.service';
+import { DiaBackendTransactionRepository } from '../../../../shared/dia-backend/transaction/dia-backend-transaction-repository.service';
+import { Proof } from '../../../../shared/repositories/proof/proof';
+import { ProofRepository } from '../../../../shared/repositories/proof/proof-repository.service';
+@UntilDestroy({ checkProperties: true })
+@Component({
+ selector: 'app-network-action-orders',
+ templateUrl: './network-action-orders.component.html',
+ styleUrls: ['./network-action-orders.component.scss'],
+})
+export class NetworkActionOrdersComponent {
+ readonly networkActionOrders$ = combineLatest([
+ this.proofRepository.all$,
+ this.actionsService.getOrdersHistory$(),
+ ]).pipe(
+ first(),
+ map(([proofs, orders]) => {
+ orders.map(order => {
+ order.assetThumbnailUrl$ = this.fetchThumbnailUrl$(proofs, order);
+ });
+ return orders;
+ }),
+ untilDestroyed(this)
+ );
+
+ constructor(
+ private readonly proofRepository: ProofRepository,
+ private readonly actionsService: ActionsService,
+ private readonly sanitizer: DomSanitizer,
+ private readonly diaBackendTransactionRepository: DiaBackendTransactionRepository,
+ private readonly diaBackendAssetRepository: DiaBackendAssetRepository
+ ) {}
+
+ fetchThumbnailUrl$(proofs: Proof[], order: BubbleOrderHistoryRecord) {
+ // Since Web 3.0 Archive is actually a Capture transaction, grab the thumbnail from
+ // `/transactions/{id}/` endpoint.
+ if (order.network_app_name_text.includes('Web 3.0 Archive')) {
+ if (order.result_tx_text)
+ return this.diaBackendTransactionRepository
+ .fetchById$(order.result_tx_text)
+ .pipe(pluck('asset'), pluck('asset_file_thumbnail'));
+ return EMPTY;
+ }
+
+ const proof = proofs.find(
+ proof => proof.diaBackendAssetId === order.asset_id_text
+ );
+
+ return proof
+ ? proof.thumbnailUrl$.pipe(
+ map(url => {
+ if (url) return this.sanitizer.bypassSecurityTrustUrl(url);
+ return EMPTY;
+ })
+ )
+ : this.diaBackendAssetRepository
+ .fetchById$(order.asset_id_text)
+ .pipe(pluck('asset_file_thumbnail'));
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ trackNetworkActionOrderHistoryRecords(
+ _: number,
+ item: BubbleOrderHistoryRecord
+ ) {
+ return item._id;
+ }
+}
diff --git a/src/app/features/home/details/actions/actions.page.ts b/src/app/features/home/details/actions/actions.page.ts
index 874d9a798..f55ddad99 100644
--- a/src/app/features/home/details/actions/actions.page.ts
+++ b/src/app/features/home/details/actions/actions.page.ts
@@ -16,7 +16,7 @@ import { BlockingActionService } from '../../../../shared/blocking-action/blocki
import { DiaBackendAuthService } from '../../../../shared/dia-backend/auth/dia-backend-auth.service';
import {
DiaBackendStoreService,
- NetworkAppOrderStatus,
+ NetworkAppOrder,
} from '../../../../shared/dia-backend/store/dia-backend-store.service';
import { ErrorService } from '../../../../shared/error/error.service';
import { OrderDetailDialogComponent } from '../../../../shared/order-detail-dialog/order-detail-dialog.component';
@@ -80,7 +80,7 @@ export class ActionsPage {
);
}
- openOrderDialog$(orderStatus: NetworkAppOrderStatus) {
+ openOrderDialog$(orderStatus: NetworkAppOrder) {
const dialogRef = this.dialog.open(
OrderDetailDialogComponent,
{
@@ -120,7 +120,21 @@ export class ActionsPage {
);
}
+ createOrderHistory$(networkAppOrder: NetworkAppOrder) {
+ return this.id$.pipe(
+ first(),
+ isNonNullable(),
+ concatMap(cid =>
+ this.actionsService.createOrderHistory$(networkAppOrder, cid)
+ ),
+ catchError((err: unknown) => {
+ return this.errorService.toastError$(err);
+ })
+ );
+ }
+
doAction(action: Action) {
+ let networkAppOrder: NetworkAppOrder;
this.openActionDialog$(action)
.pipe(
concatMap(createOrderInput =>
@@ -131,7 +145,11 @@ export class ActionsPage {
)
)
),
- concatMap(orderStatus => this.openOrderDialog$(orderStatus)),
+ concatMap(orderStatus => {
+ networkAppOrder = orderStatus;
+ return this.openOrderDialog$(orderStatus);
+ }),
+ tap(() => this.createOrderHistory$(networkAppOrder).subscribe()),
concatMap(orderId =>
this.blockingActionService.run$(this.confirmOrder$(orderId))
),
diff --git a/src/app/features/home/home-routing.module.ts b/src/app/features/home/home-routing.module.ts
index 185785553..fd87a9764 100644
--- a/src/app/features/home/home-routing.module.ts
+++ b/src/app/features/home/home-routing.module.ts
@@ -13,9 +13,9 @@ const routes: Routes = [
import('./inbox/inbox.module').then(m => m.InboxPageModule),
},
{
- path: 'transaction',
+ path: 'activities',
loadChildren: () =>
- import('./transaction/transaction.module').then(
+ import('./activities/activities.module').then(
m => m.TransactionPageModule
),
},
diff --git a/src/app/features/home/home.page.html b/src/app/features/home/home.page.html
index a7cdee91a..16580d11b 100644
--- a/src/app/features/home/home.page.html
+++ b/src/app/features/home/home.page.html
@@ -46,7 +46,7 @@
menu
-