From ff09fa4e15ac175bcef32e9ed5d145d8b07f3e27 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:12:33 +0700 Subject: [PATCH 1/3] move to new field --- .../create-deposit-dialog.component.html | 5 +++ .../create-deposit-dialog.component.ts | 33 +++++++++++-------- .../create-deposit-dialog.module.ts | 4 +-- .../source-cash-field.component.ts | 29 +++++++++++----- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html index 2ef1debaf..4fb09d6b4 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html @@ -4,6 +4,7 @@ [extensions]="extensions" [formControl]="control" namespace="deposit" + noToolbar type="DepositParams" > @@ -12,3 +13,7 @@ + + + + diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts index da09729f0..c4a4c9dde 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts @@ -1,15 +1,17 @@ import { BehaviorSubject, combineLatest, first, map, of, switchMap } from 'rxjs'; -import { Component, DestroyRef, TemplateRef, ViewChild, inject } from '@angular/core'; +import { Component, DestroyRef, TemplateRef, inject, viewChild } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, Validators } from '@angular/forms'; +import { Cash } from '@vality/domain-proto/domain'; import { DepositParams } from '@vality/fistful-proto/deposit'; import { DialogSuperclass, NotifyLogService, progressTo } from '@vality/matez'; import { ThriftFormExtension, isTypeWithAliases } from '@vality/ng-thrift'; import { DomainObjectsStoreService } from '~/api/domain-config'; import { ThriftDepositManagementService, ThriftRepositoryClientService } from '~/api/services'; +import { SourceCash, SourceCashFieldComponent } from '~/components/source-cash-field'; import { getDomainObjectOption } from '~/components/thrift-api-crud/domain/services/domain-metadata-form-extensions/utils/get-domain-object-option'; import { UserInfoBasedIdGeneratorService } from '~/services'; @@ -27,8 +29,8 @@ export class CreateDepositDialogComponent extends DialogSuperclass; + private sourceCashTemplate = + viewChild>('sourceCashTemplate'); control = new FormControl(this.getDefaultValue(), [Validators.required]); progress$ = new BehaviorSubject(0); @@ -44,18 +46,21 @@ export class CreateDepositDialogComponent extends DialogSuperclass of({ hidden: true }), }, { - determinant: (data) => of(isTypeWithAliases(data, 'CurrencySymbolicCode', 'base')), + determinant: (data) => of(isTypeWithAliases(data, 'Cash', 'base')), extension: () => - this.fetchSourcesService.sources$.pipe( - map((sources) => ({ - options: sources.map((source) => ({ - label: source.name, - value: source.currency_symbolic_code, - details: source, - })), - isIdentifier: true, - })), - ), + of({ + template: this.sourceCashTemplate(), + converter: { + outputToInternal: (outputValue: Cash): Partial => ({ + amount: outputValue.amount, + currencySymbolicCode: outputValue.currency.symbolic_code, + }), + internalToOutput: (inputValue: SourceCash): Cash => ({ + amount: inputValue.amount, + currency: { symbolic_code: inputValue.currencySymbolicCode }, + }), + }, + }), }, { determinant: (data) => of(isTypeWithAliases(data, 'WalletID', 'deposit')), diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts index 35c38c783..b51f74bab 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts @@ -10,8 +10,8 @@ import { MatSelectModule } from '@angular/material/select'; import { DialogModule } from '@vality/matez'; -import { CurrencySourceFieldComponent } from '~/components/currency-source-field'; import { FistfulThriftFormComponent } from '~/components/fistful-thrift-form'; +import { SourceCashFieldComponent } from '~/components/source-cash-field'; import { UserInfoBasedIdGeneratorModule } from '~/services'; import { CreateDepositDialogComponent } from './create-deposit-dialog.component'; @@ -28,8 +28,8 @@ import { CreateDepositDialogComponent } from './create-deposit-dialog.component' MatProgressBarModule, UserInfoBasedIdGeneratorModule, DialogModule, - CurrencySourceFieldComponent, FistfulThriftFormComponent, + SourceCashFieldComponent, ], declarations: [CreateDepositDialogComponent], }) diff --git a/src/components/source-cash-field/source-cash-field.component.ts b/src/components/source-cash-field/source-cash-field.component.ts index 66bf3c448..84f001e76 100644 --- a/src/components/source-cash-field/source-cash-field.component.ts +++ b/src/components/source-cash-field/source-cash-field.component.ts @@ -36,6 +36,7 @@ import { FetchSourcesService } from '../../app/sources'; export interface SourceCash { amount: number; sourceId: StatSource['id']; + currencySymbolicCode: string; } const GROUP_SEPARATOR = ' '; @@ -123,14 +124,17 @@ export class SourceCashFieldComponent }), distinctUntilChanged(), ), - getValueChanges(this.sourceControl).pipe( - map((s) => s?.id), - distinctUntilChanged(), - ), + getValueChanges(this.sourceControl).pipe(distinctUntilChanged()), ]) .pipe( - map(([amount, sourceId]) => - !isNil(amount) && sourceId ? { amount, sourceId } : null, + map(([amount, source]) => + !isNil(amount) && source + ? { + amount, + sourceId: source.id, + currencySymbolicCode: source.currency_symbolic_code, + } + : null, ), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef), @@ -147,14 +151,21 @@ export class SourceCashFieldComponent } handleIncomingValue(value: SourceCash) { - const { sourceId, amount } = value || {}; - if (!sourceId) { + const { sourceId, currencySymbolicCode, amount } = value || {}; + if (!sourceId && !currencySymbolicCode) { this.setValues(amount, null); return; } this.options$ .pipe( - map((options) => options.find((o) => o.value.id === value.sourceId)?.value ?? null), + map( + (options) => + options.find((o) => + sourceId + ? o.value.id === sourceId + : o.value.currency_symbolic_code === currencySymbolicCode, + )?.value ?? null, + ), switchMap((s) => combineLatest([of(s), this.getCurrencyExponent(s?.currency_symbolic_code)]), ), From 5328104088489b0c8bcc1147bb6378171423fdf2 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:15:59 +0700 Subject: [PATCH 2/3] fix --- .../source-cash-field/source-cash-field.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/source-cash-field/source-cash-field.component.ts b/src/components/source-cash-field/source-cash-field.component.ts index 84f001e76..177dcc702 100644 --- a/src/components/source-cash-field/source-cash-field.component.ts +++ b/src/components/source-cash-field/source-cash-field.component.ts @@ -1,6 +1,6 @@ import isNil from 'lodash-es/isNil'; import { combineLatest, of, switchMap } from 'rxjs'; -import { distinctUntilChanged, map, shareReplay, startWith, take } from 'rxjs/operators'; +import { distinctUntilChanged, map, shareReplay, take } from 'rxjs/operators'; import { CommonModule, getCurrencySymbol } from '@angular/common'; import { @@ -72,7 +72,6 @@ export class SourceCashFieldComponent sourceControl = new FormControl(null); options$ = this.fetchSourcesService.sources$.pipe( - startWith([] as StatSource[]), map((sources): Option[] => sources.map((s) => ({ label: s.currency_symbolic_code, From 11bb7f9e03d7ae30ed8b9c2273dd153405813bd6 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:17:26 +0700 Subject: [PATCH 3/3] fix --- .../create-deposit-dialog.component.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts index c4a4c9dde..3e623cefe 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts @@ -52,12 +52,12 @@ export class CreateDepositDialogComponent extends DialogSuperclass => ({ - amount: outputValue.amount, - currencySymbolicCode: outputValue.currency.symbolic_code, + amount: outputValue?.amount, + currencySymbolicCode: outputValue?.currency?.symbolic_code, }), internalToOutput: (inputValue: SourceCash): Cash => ({ - amount: inputValue.amount, - currency: { symbolic_code: inputValue.currencySymbolicCode }, + amount: inputValue?.amount, + currency: { symbolic_code: inputValue?.currencySymbolicCode }, }), }, }),