Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/data/dto/deploys/CsprTransferDeployDto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export class CsprTransferDeployDto implements INativeCsprDeploy {
this.cep18ActionsResult = [];
this.deployHash = data?.deploy_hash ?? '';
this.id = getUniqueId();
this.iconUrl = null;
}

readonly recipientAccountInfo: Maybe<IAccountInfo>;
Expand Down Expand Up @@ -144,4 +145,5 @@ export class CsprTransferDeployDto implements INativeCsprDeploy {
readonly cep18ActionsResult: ICep18ActionsResult[];
readonly id: string;
readonly deployHash: string;
readonly iconUrl: Maybe<string>;
}
2 changes: 2 additions & 0 deletions src/data/dto/deploys/DeployDto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export class DeployDto implements IDeploy {
);
this.contractHash = data?.contract_hash ?? '';
this.contractPackageHash = data?.contract_package_hash ?? '';
this.iconUrl = data?.contract_package?.icon_url ?? null;
this.entryPoint = getEntryPoint(data) ?? null;
this.contractName = data?.contract_package?.name ?? null;

Expand All @@ -75,6 +76,7 @@ export class DeployDto implements IDeploy {
readonly executionTypeId: number;
readonly contractHash: string;
readonly contractPackageHash: string;
readonly iconUrl: Maybe<string>;
readonly entryPoint: Maybe<string>;
readonly status: DeployStatus;
readonly cost: string;
Expand Down
5 changes: 3 additions & 2 deletions src/data/dto/deploys/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
AccountKeyType,
AssociatedKeysContractHash,
AuctionManagerContractHash,
CEP_18_ACTION_ENTRY_POINTS,
CSPRMarketContractHash,
CSPRStudioCep47ContractHash,
DeployType,
Expand Down Expand Up @@ -41,8 +42,8 @@ export function getDeployType(network: Network, deploy?: Partial<ExtendedCloudDe
) {
return 'CSPR_MARKET';
} else if (
contractTypeId === ContractTypeId.CustomCep18 ||
contractTypeId === ContractTypeId.Cep18
(contractTypeId === ContractTypeId.CustomCep18 || contractTypeId === ContractTypeId.Cep18) &&
CEP_18_ACTION_ENTRY_POINTS.includes(getEntryPoint(deploy) ?? '')
) {
return 'CEP18';
} else if (
Expand Down
15 changes: 11 additions & 4 deletions src/data/dto/txSignatureRequest/TxSignatureRequestDto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
AssociatedKeysContractInfo,
AuctionManagerContractInfo,
CasperNetwork,
CEP_18_ACTION_ENTRY_POINTS,
CSPR_COIN,
CSPRMarketContractInfo,
IAccountInfo,
Expand Down Expand Up @@ -188,10 +189,7 @@ export function getTxSignatureRequestAction(
contractPackage,
collectionContractPackage,
);
} else if (
contractTypeId === ContractTypeId.CustomCep18 ||
contractTypeId === ContractTypeId.Cep18
) {
} else if (isCep18Action(tx, contractTypeId)) {
return getTxSignatureRequestCep18Action(tx, accountInfoMap, contractPackage);
} else if (
contractTypeId === ContractTypeId.CEP78Nft ||
Expand Down Expand Up @@ -263,3 +261,12 @@ function isContractSpecificContractCall(tx: Transaction, contractInfo: IContract
storedTargetId?.byPackageName?.name === contractInfo.contractPackageName
);
}

function isCep18Action(tx: Transaction, contractTypeId?: number): boolean {
const entryPoint = tx.entryPoint.customEntryPoint ?? '';

return (
(contractTypeId === ContractTypeId.CustomCep18 || contractTypeId === ContractTypeId.Cep18) &&
CEP_18_ACTION_ENTRY_POINTS.includes(entryPoint.toLowerCase())
);
}
12 changes: 7 additions & 5 deletions src/data/repositories/accountInfo/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { LRUCache } from 'lru-cache';
import {
CSPR_API_PROXY_HEADERS,
CasperWalletApiUrl,
isAccountInfoError,
AccountInfoError,
IAccountInfoRepository,
Expand All @@ -23,7 +22,10 @@ import { IGetCsprBalanceResponse } from '../tokens';
export * from './types';

export class AccountInfoRepository implements IAccountInfoRepository {
constructor(private _httpProvider: IHttpDataProvider) {}
constructor(
private _httpProvider: IHttpDataProvider,
private _casperWalletApiUrl: Record<CasperNetwork, string>,
) {}

private _accountsInfoMapCache = new LRUCache<string, IAccountInfo>({
max: 100,
Expand All @@ -45,7 +47,7 @@ export class AccountInfoRepository implements IAccountInfoRepository {
);

const resp = await this._httpProvider.post<DataResponse<IGetAccountsInfoResponse[]>>({
url: `${CasperWalletApiUrl[network]}/accounts?includes=account_info,centralized_account_info,cspr_name`,
url: `${this._casperWalletApiUrl[network]}/accounts?includes=account_info,centralized_account_info,cspr_name`,
data: {
account_hashes: accountsHashesForFetch,
},
Expand Down Expand Up @@ -88,7 +90,7 @@ export class AccountInfoRepository implements IAccountInfoRepository {
}: IGetAccountsBalancesParams): Promise<Record<string, ICsprBalance>> {
try {
const resp = await this._httpProvider.post<DataResponse<IGetCsprBalanceResponse[]>>({
url: `${CasperWalletApiUrl[network]}/accounts${withDelegationBalances ? '?includes=delegated_balance,undelegating_balance' : ''}`,
url: `${this._casperWalletApiUrl[network]}/accounts${withDelegationBalances ? '?includes=delegated_balance,undelegating_balance' : ''}`,
data: {
account_hashes: accountHashes,
},
Expand Down Expand Up @@ -119,7 +121,7 @@ export class AccountInfoRepository implements IAccountInfoRepository {
): Promise<Maybe<IAccountInfo>> {
try {
const resp = await this._httpProvider.get<DataResponse<ICloudResolveFromCsprNameResponse>>({
url: `${CasperWalletApiUrl[network]}/cspr-name-resolutions/${csprName}`,
url: `${this._casperWalletApiUrl[network]}/cspr-name-resolutions/${csprName}`,
params: {
includes: 'resolved_public_key,account_info,centralized_account_info',
},
Expand Down
2 changes: 1 addition & 1 deletion src/data/repositories/accountInfo/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Maybe } from '../../../typings';

export interface IGetAccountsInfoResponse {
account_hash: string;
balance: number;
balance: string;
main_purse_uref: string;
public_key: string;
account_info?: ICloudAccountInfoResult;
Expand Down
11 changes: 7 additions & 4 deletions src/data/repositories/appEvents/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {
AppEventsError,
AppEventsErrorType,
CasperWalletApiEndpoints,
CSPR_API_PROXY_HEADERS,
DataResponse,
IAppEventsRepository,
Expand All @@ -17,11 +16,15 @@ import { IMarketingEventApiResponse, IReleaseEventApiResponse } from './types';
import { AppMarketingEventDto, AppReleaseEventDto } from '../../dto';
import { Maybe } from '../../../typings';
import { isAppEventActive } from '../../../utils';
import { IEnv } from '../../../domain/env';

export * from './types';

export class AppEventsRepository implements IAppEventsRepository {
constructor(private _httpProvider: IHttpDataProvider) {}
constructor(
private _httpProvider: IHttpDataProvider,
private _casperWalletApiByEnvUrl: Record<IEnv, string>,
) {}

async getReleaseEvents({
currentVersion,
Expand All @@ -30,7 +33,7 @@ export class AppEventsRepository implements IAppEventsRepository {
}: IGetReleaseUpdatesParams): Promise<IAppReleaseEvent[]> {
try {
const response = await this._httpProvider.get<DataResponse<IReleaseEventApiResponse[]>>({
url: `${CasperWalletApiEndpoints[env]}/mobile-client-versions`,
url: `${this._casperWalletApiByEnvUrl[env]}/mobile-client-versions`,
params: {
after: `v${currentVersion}`,
},
Expand All @@ -50,7 +53,7 @@ export class AppEventsRepository implements IAppEventsRepository {
}: IGetMarketingEventsParams = {}): Promise<IAppMarketingEvent[]> {
try {
const response = await this._httpProvider.get<DataResponse<IMarketingEventApiResponse[]>>({
url: `${CasperWalletApiEndpoints[env]}/marketing-events`,
url: `${this._casperWalletApiByEnvUrl[env]}/marketing-events`,
errorType: 'getMarketingEvents',
...(withProxyHeader ? { headers: CSPR_API_PROXY_HEADERS } : {}),
});
Expand Down
9 changes: 6 additions & 3 deletions src/data/repositories/contractPackage/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {
CasperWalletApiUrl,
CasperNetwork,
ContractPackageError,
ContractPackageErrorType,
CSPR_API_PROXY_HEADERS,
Expand All @@ -15,7 +15,10 @@ import { ContractPackageDto } from '../../dto';
export * from './types';

export class ContractPackageRepository implements IContractPackageRepository {
constructor(private _httpProvider: IHttpDataProvider) {}
constructor(
private _httpProvider: IHttpDataProvider,
private _casperWalletApiUrl: Record<CasperNetwork, string>,
) {}

async getContractPackage({
contractPackageHash,
Expand All @@ -24,7 +27,7 @@ export class ContractPackageRepository implements IContractPackageRepository {
}: IGetContractPackageParams) {
try {
const resp = await this._httpProvider.get<DataResponse<IContractPackageCloudResponse>>({
url: `${CasperWalletApiUrl[network]}/contract-packages/${contractPackageHash}`,
url: `${this._casperWalletApiUrl[network]}/contract-packages/${contractPackageHash}`,
baseURL: '',
errorType: 'getContractPackageRequest',
...(withProxyHeader ? { headers: CSPR_API_PROXY_HEADERS } : {}),
Expand Down
11 changes: 6 additions & 5 deletions src/data/repositories/deploys/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import {
HttpClientNotFoundError,
CSPR_API_PROXY_HEADERS,
EMPTY_PAGINATED_RESPONSE,
CasperWalletApiUrl,
IDeploysRepository,
IGetDeploysParams,
CloudPaginatedResponse,
IGetSingleDeployParams,
DataResponse,
IDeploy,
PaginatedResponse,
CasperNetwork,
} from '../../../domain';
import type { IHttpDataProvider, IAccountInfoRepository } from '../../../domain';
import { getAccountHashFromPublicKey } from '../../../utils';
Expand All @@ -29,6 +29,7 @@ export class DeploysRepository implements IDeploysRepository {
constructor(
private _httpProvider: IHttpDataProvider,
private _accountInfoRepository: IAccountInfoRepository,
private _casperWalletApiUrl: Record<CasperNetwork, string>,
) {}

async getDeploys({
Expand All @@ -41,7 +42,7 @@ export class DeploysRepository implements IDeploysRepository {
}: IGetDeploysParams) {
try {
const resp = await this._httpProvider.get<CloudPaginatedResponse<ExtendedCloudDeploy>>({
url: `${CasperWalletApiUrl[network]}/accounts/${activePublicKey}/deploys`,
url: `${this._casperWalletApiUrl[network]}/accounts/${activePublicKey}/deploys`,
params: {
public_key: activePublicKey,
page,
Expand Down Expand Up @@ -94,7 +95,7 @@ export class DeploysRepository implements IDeploysRepository {
const accountHash = getAccountHashFromPublicKey(activePublicKey);

const resp = await this._httpProvider.get<CloudPaginatedResponse<ICsprTransferResponse>>({
url: `${CasperWalletApiUrl[network]}/accounts/${accountHash}/transfers`,
url: `${this._casperWalletApiUrl[network]}/accounts/${accountHash}/transfers`,
params: {
page,
page_size: limit,
Expand Down Expand Up @@ -142,7 +143,7 @@ export class DeploysRepository implements IDeploysRepository {
}: IGetSingleDeployParams) {
try {
const resp = await this._httpProvider.get<DataResponse<ExtendedCloudDeploy>>({
url: `${CasperWalletApiUrl[network]}/deploys/${deployHash}`,
url: `${this._casperWalletApiUrl[network]}/deploys/${deployHash}`,
params: {
includes:
'rate(1),contract,contract_package,contract_entrypoint,account_info,transfers,nft_token_actions,ft_token_actions',
Expand Down Expand Up @@ -190,7 +191,7 @@ export class DeploysRepository implements IDeploysRepository {
const resp = await this._httpProvider.get<
CloudPaginatedResponse<IErc20TokensTransferResponse>
>({
url: `${CasperWalletApiUrl[network]}/accounts/${accountHash}/ft-token-actions`,
url: `${this._casperWalletApiUrl[network]}/accounts/${accountHash}/ft-token-actions`,
params: {
contract_package_hash: contractPackageHash, // TODO do not worked
account_identifier: accountHash,
Expand Down
9 changes: 6 additions & 3 deletions src/data/repositories/nfts/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {
CasperWalletApiUrl,
DEFAULT_PAGE_LIMIT,
EMPTY_PAGINATED_RESPONSE,
CSPR_API_PROXY_HEADERS,
Expand All @@ -11,6 +10,7 @@ import {
INft,
NftContentType,
PaginatedResponse,
CasperNetwork,
} from '../../../domain';
import type { IHttpDataProvider } from '../../../domain';
import { getAccountHashFromPublicKey } from '../../../utils';
Expand All @@ -20,7 +20,10 @@ import { IApiNft } from './types';
export * from './types';

export class NftsRepository implements INftsRepository {
constructor(private _httpProvider: IHttpDataProvider) {}
constructor(
private _httpProvider: IHttpDataProvider,
private _casperWalletApiUrl: Record<CasperNetwork, string>,
) {}

async getNfts({
network,
Expand All @@ -33,7 +36,7 @@ export class NftsRepository implements INftsRepository {
const accountHash = getAccountHashFromPublicKey(publicKey);

const resp = await this._httpProvider.get<CloudPaginatedResponse<IApiNft>>({
url: `${CasperWalletApiUrl[network]}/accounts/${accountHash}/nft-tokens`,
url: `${this._casperWalletApiUrl[network]}/accounts/${accountHash}/nft-tokens`,
params: {
page,
page_size: limit,
Expand Down
15 changes: 9 additions & 6 deletions src/data/repositories/tokens/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import {
TokensError,
HttpClientNotFoundError,
CSPR_API_PROXY_HEADERS,
CasperWalletApiUrl,
ITokensRepository,
DataResponse,
IGetTokensParams,
IGetCsprBalanceParams,
IToken,
IGetCsprFiatCurrencyRateParams,
ITokenWithFiatBalance,
CasperNetwork,
} from '../../../domain';
import type { IHttpDataProvider } from '../../../domain';
import { CsprBalanceDto, TokenDto, TokenFiatRateDto } from '../../dto';
Expand All @@ -21,7 +21,10 @@ import { Erc20Token, IGetCsprBalanceResponse, IGetCurrencyRateResponse } from '.
export * from './types';

export class TokensRepository implements ITokensRepository {
constructor(private _httpProvider: IHttpDataProvider) {}
constructor(
private _httpProvider: IHttpDataProvider,
private _casperWalletApiUrl: Record<CasperNetwork, string>,
) {}

async getTokens({
network,
Expand All @@ -32,7 +35,7 @@ export class TokensRepository implements ITokensRepository {
const accountHash = getAccountHashFromPublicKey(publicKey);

const tokensList = await this._httpProvider.get<DataResponse<Erc20Token[]>>({
url: `${CasperWalletApiUrl[network]}/accounts/${accountHash}/ft-token-ownership`,
url: `${this._casperWalletApiUrl[network]}/accounts/${accountHash}/ft-token-ownership`,
params: {
page_size: 100, // TODO pagination?
includes: 'contract_package,friendlymarket_data(1),coingecko_data(1)',
Expand All @@ -55,7 +58,7 @@ export class TokensRepository implements ITokensRepository {
async getCsprBalance({ publicKey, network, withProxyHeader = true }: IGetCsprBalanceParams) {
try {
const resp = await this._httpProvider.get<DataResponse<IGetCsprBalanceResponse>>({
url: `${CasperWalletApiUrl[network]}/accounts/${publicKey}`,
url: `${this._casperWalletApiUrl[network]}/accounts/${publicKey}`,
errorType: 'getCsprBalance',
params: {
includes: 'delegated_balance,undelegating_balance',
Expand All @@ -66,7 +69,7 @@ export class TokensRepository implements ITokensRepository {
return new CsprBalanceDto(resp?.data);
} catch (e) {
if (e instanceof HttpClientNotFoundError) {
return new CsprBalanceDto({ balance: 0 });
return new CsprBalanceDto({ balance: '0' });
} else {
this._processError(e, 'getCsprBalance');
}
Expand Down Expand Up @@ -100,7 +103,7 @@ export class TokensRepository implements ITokensRepository {
}: IGetCsprFiatCurrencyRateParams) {
try {
const resp = await this._httpProvider.get<IGetCurrencyRateResponse>({
url: `${CasperWalletApiUrl[network]}/rates/1/amount`,
url: `${this._casperWalletApiUrl[network]}/rates/1/amount`,
...(withProxyHeader ? { headers: CSPR_API_PROXY_HEADERS } : {}),
errorType: 'getCsprFiatCurrencyRate',
});
Expand Down
2 changes: 1 addition & 1 deletion src/data/repositories/tokens/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { DataResponse, Network } from '../../../domain';
import { Maybe } from '../../../typings';

export interface IGetCsprBalanceResponse {
balance: number;
balance: string;
delegated_balance?: number;
undelegating_balance?: number;

Expand Down
Loading
Loading