Skip to content

Commit 7aa0aa8

Browse files
committed
[Issue-4078] feat: find process (temp)
1 parent 2d4d197 commit 7aa0aa8

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

packages/extension-base/src/koni/background/handlers/Extension.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/reques
4848
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
4949
import { DEFAULT_AUTO_LOCK_TIME } from '@subwallet/extension-base/services/setting-service/constants';
5050
import { checkLiquidityForPool, estimateTokensForPool, getReserveForPool } from '@subwallet/extension-base/services/swap-service/handler/asset-hub/utils';
51-
import { SWPermitTransaction, SWTransaction, SWTransactionInput, SWTransactionResponse, SWTransactionResult, TransactionEmitter, TransactionEventResponse, ValidateTransactionResponseInput } from '@subwallet/extension-base/services/transaction-service/types';
5251
import { generateSwapPairs } from '@subwallet/extension-base/services/swap-service/utils';
52+
import { SWPermitTransaction, SWTransaction, SWTransactionInput, SWTransactionResponse, SWTransactionResult, TransactionEmitter, TransactionEventResponse, ValidateTransactionResponseInput } from '@subwallet/extension-base/services/transaction-service/types';
5353
import { isProposalExpired, isSupportWalletConnectChain, isSupportWalletConnectNamespace } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
5454
import { ResultApproveWalletConnectSession, WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
5555
import { SWStorage } from '@subwallet/extension-base/storage';
@@ -1345,6 +1345,7 @@ export default class KoniExtension {
13451345
const warnings: TransactionWarning[] = [];
13461346
const chainInfo = this.#koniState.getChainInfo(chain);
13471347

1348+
// todo: remove test:
13481349
const test = generateSwapPairs(this.#koniState.getSubstrateApi(chain), this.#koniState.chainService, transferTokenInfo, 3).map((asset) => asset.slug);
13491350

13501351
console.log('test', test);
@@ -4069,6 +4070,16 @@ export default class KoniExtension {
40694070
}
40704071

40714072
private async handleSwapRequest (request: SwapRequest): Promise<SwapRequestResult> {
4073+
// todo: remove test:
4074+
const testSwapRequest = this.#koniState.swapService.handleSwapRequestV2({
4075+
address: '1BzDB5n2rfSJwvuCW9deKY9XnUyys8Gy44SoX8tRNDCFBhx',
4076+
fromAmount: '1',
4077+
fromToken: 'polkadot-NATIVE-DOT',
4078+
toToken: 'hydration-NATIVE-DOT'
4079+
});
4080+
4081+
console.log('testSwapRequest', testSwapRequest);
4082+
40724083
return this.#koniState.swapService.handleSwapRequest(request);
40734084
}
40744085

packages/extension-base/src/services/swap-service/index.ts

+29-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import { AssetHubSwapHandler } from '@subwallet/extension-base/services/swap-ser
1111
import { SwapBaseInterface } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
1212
import { ChainflipSwapHandler } from '@subwallet/extension-base/services/swap-service/handler/chainflip-handler';
1313
import { HydradxHandler } from '@subwallet/extension-base/services/swap-service/handler/hydradx-handler';
14-
import { _PROVIDER_TO_SUPPORTED_PAIR_MAP, getSwapAltToken, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
15-
import { BasicTxErrorType } from '@subwallet/extension-base/types';
14+
import { _PROVIDER_TO_SUPPORTED_PAIR_MAP, generateSwapPairs, getSwapAltToken, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
15+
import { BasicTxErrorType, SwapRequestV2 } from '@subwallet/extension-base/types';
1616
import { CommonOptimalPath, DEFAULT_FIRST_STEP, MOCK_STEP_FEE } from '@subwallet/extension-base/types/service-base';
1717
import { _SUPPORTED_SWAP_PROVIDERS, OptimalSwapPathParams, QuoteAskResponse, SwapErrorType, SwapPair, SwapProviderId, SwapQuote, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapStepType, SwapSubmitParams, SwapSubmitStepData, ValidateSwapProcessParams } from '@subwallet/extension-base/types/swap';
1818
import { createPromiseHandler, PromiseHandler } from '@subwallet/extension-base/utils';
@@ -125,12 +125,39 @@ export class SwapService implements ServiceWithProcessInterface, StoppableServic
125125
selectedQuote: swapQuoteResponse.optimalQuote
126126
});
127127

128+
console.log('optimalProcess', optimalProcess);
129+
console.log('swapQuoteResponse', swapQuoteResponse);
130+
128131
return {
129132
process: optimalProcess,
130133
quote: swapQuoteResponse
131134
} as SwapRequestResult;
132135
}
133136

137+
public handleSwapRequestV2 (request: SwapRequestV2) {
138+
const { fromToken, toToken } = request;
139+
const fromTokenInfo = this.chainService.getAssetBySlug(fromToken);
140+
const toTokenInfo = this.chainService.getAssetBySlug(toToken);
141+
const substrateApi = this.chainService.getSubstrateApi(fromTokenInfo.originChain);
142+
const steps = [];
143+
144+
const destinations = generateSwapPairs(substrateApi, this.chainService, fromTokenInfo, 1);
145+
146+
if (destinations.length > 0 && destinations.includes(toTokenInfo)) {
147+
steps.push({
148+
action: 'SWAP', // todo: check XCM / SWAP
149+
toToken
150+
});
151+
}
152+
153+
if (steps.length) {
154+
return steps;
155+
}
156+
157+
// todo: try find process
158+
return steps;
159+
}
160+
134161
public async getLatestQuotes (request: SwapRequest): Promise<SwapQuoteResponse> {
135162
request.pair.metadata = this.getSwapPairMetadata(request.pair.slug); // todo: improve this
136163
const quoteAskResponses = await this.askProvidersForQuote(request);

packages/extension-base/src/types/swap/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ export interface SwapRequest {
169169
currentQuote?: SwapProvider
170170
}
171171

172+
export interface SwapRequestV2 {
173+
address: string;
174+
fromAmount: string;
175+
fromToken: string;
176+
toToken: string;
177+
}
178+
172179
export interface SwapRequestResult {
173180
process: CommonOptimalPath;
174181
quote: SwapQuoteResponse;

0 commit comments

Comments
 (0)