Skip to content

Commit

Permalink
Merge pull request #670 from UnUniFi/develop
Browse files Browse the repository at this point in the history
fix: available tokens
  • Loading branch information
Senna46 authored Oct 10, 2023
2 parents 3ba98b1 + 1147fc9 commit 8798c49
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<view-create
[address]="address$ | async"
[denom]="denom$ | async"
[availableSymbols]="availableSymbols$ | async"
[selectedSymbol]="selectedSymbol$ | async"
[availableTokens]="availableTokens$ | async"
[strategies]="strategies$ | async"
[commissionRate]="commissionRate$ | async"
[deposit]="deposit$ | async"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import cosmosclient from '@cosmos-client/core';
import { BankQueryService } from 'projects/portal/src/app/models/cosmos/bank.query.service';
import { BankService } from 'projects/portal/src/app/models/cosmos/bank.service';
import { StoredWallet } from 'projects/portal/src/app/models/wallets/wallet.model';
import { WalletService } from 'projects/portal/src/app/models/wallets/wallet.service';
import { YieldAggregatorApplicationService } from 'projects/portal/src/app/models/yield-aggregators/yield-aggregator.application.service';
Expand All @@ -20,8 +19,7 @@ import { StrategyAll200ResponseStrategiesInner } from 'ununifi-client/esm/openap
export class CreateComponent implements OnInit {
address$: Observable<string>;
denom$: Observable<string>;
availableSymbols$: Observable<({ symbol: string; display: string } | undefined)[]>;
selectedSymbol$: Observable<string | undefined>;
availableTokens$: Observable<cosmosclient.proto.cosmos.bank.v1beta1.IMetadata[]>;
strategies$: Observable<StrategyAll200ResponseStrategiesInner[]>;
denomBalancesMap$: Observable<{ [symbol: string]: cosmosclient.proto.cosmos.base.v1beta1.ICoin }>;
denomMetadataMap$: Observable<{
Expand All @@ -34,7 +32,6 @@ export class CreateComponent implements OnInit {
constructor(
private router: Router,
private route: ActivatedRoute,
private readonly bank: BankService,
private readonly bankQuery: BankQueryService,
private readonly walletService: WalletService,
private readonly iyaQuery: YieldAggregatorQueryService,
Expand All @@ -51,35 +48,14 @@ export class CreateComponent implements OnInit {
mergeMap((address) => this.bankQuery.getDenomBalanceMap$(address)),
);
this.denomMetadataMap$ = this.bankQuery.getDenomMetadataMap$();
this.availableSymbols$ = combineLatest([allStrategies$, this.denomMetadataMap$]).pipe(
this.availableTokens$ = combineLatest([allStrategies$, this.denomMetadataMap$]).pipe(
map(([allStrategies, denomMetadataMap]) => {
const symbols = allStrategies
.map((strategy) => {
const denomMetadata = denomMetadataMap[strategy.strategy?.denom || ''];
if (denomMetadata) {
return {
symbol: denomMetadata.symbol!,
display: denomMetadata.display!,
};
} else {
return undefined;
}
})
.filter((symbol) => symbol !== undefined);
.map((strategy) => denomMetadataMap[strategy.strategy?.denom || ''])
.filter((metadata) => metadata !== undefined);
return [...new Set(symbols)];
}),
);
this.availableSymbols$.subscribe((symbols) => console.log(symbols));

this.selectedSymbol$ = combineLatest([this.denom$, this.denomMetadataMap$]).pipe(
map(([denom, denomMetadataMap]) => {
if (denom && denomMetadataMap) {
return denomMetadataMap[denom].symbol || undefined;
} else {
return undefined;
}
}),
);
const params$ = this.iyaQuery.getYieldAggregatorParam$();
this.commissionRate$ = params$.pipe(map((params) => Number(params.commission_rate) * 100));
this.deposit$ = params$.pipe(map((params) => params.vault_creation_deposit!));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@
[class]="{
'select-error': assetNgModelRef.errors
}"
[(ngModel)]="selectedSymbol"
[(ngModel)]="denom"
name="symbol"
(change)="onChangeSymbol()"
[disabled]="!availableSymbols?.length"
(change)="onChangeDenom()"
[disabled]="!availableTokens?.length"
>
<option [value]="undefined" disabled>
<span *ngIf="!availableSymbols || !availableSymbols.length"
<span *ngIf="!availableTokens || !availableTokens.length"
>No Strategy on the chain</span
>
<span *ngIf="availableSymbols && availableSymbols.length"
<span *ngIf="availableTokens && availableTokens.length"
>Select an asset's symbol</span
>
</option>
<ng-container *ngFor="let symbol of availableSymbols">
<option [value]="symbol?.symbol">{{ symbol?.display }}</option>
<ng-container *ngFor="let denom of availableTokens">
<option [value]="denom.base">{{ denom.display }}</option>
</ng-container>
</select>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ export class CreateComponent implements OnInit {
@Input()
denom?: string | null;
@Input()
availableSymbols?: ({ symbol: string; display: string } | undefined)[] | null;
@Input()
selectedSymbol?: string | null;
availableTokens?: cosmosclient.proto.cosmos.bank.v1beta1.IMetadata[] | null;
@Input()
strategies?: StrategyAll200ResponseStrategiesInner[] | null;
@Input()
Expand Down Expand Up @@ -73,15 +71,12 @@ export class CreateComponent implements OnInit {
this.selectedStrategies.splice(index, 1);
}

onChangeSymbol() {
onChangeDenom() {
this.selectedStrategies = [];
if (!this.selectedSymbol) {
if (!this.denom) {
return;
}
const denom = this.denomMetadataMap?.[this.selectedSymbol].base;
if (denom) {
this.changeDenom.emit(denom);
}
this.changeDenom.emit(this.denom);
}

onSubmitCreate() {
Expand All @@ -92,10 +87,6 @@ export class CreateComponent implements OnInit {
return;
}
const filteredStrategies = strategies.map((s) => ({ id: s.id!, weight: s.weight }));
if (!this.selectedSymbol) {
alert('Invalid Asset.');
return;
}
if (!this.fee || !this.deposit) {
alert('Invalid Fee or Deposit.');
return;
Expand Down

0 comments on commit 8798c49

Please sign in to comment.