From a90bf54eb092c007365987b80b2c24ca17ed1750 Mon Sep 17 00:00:00 2001 From: Bran <52735957+brancoder@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:47:42 +0200 Subject: [PATCH 01/10] fix: association endpoints returning empty array (#1429) --- api/src/utils/stardust/associatedOutputsHelper.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/api/src/utils/stardust/associatedOutputsHelper.ts b/api/src/utils/stardust/associatedOutputsHelper.ts index fd2936fab..f0560cf78 100644 --- a/api/src/utils/stardust/associatedOutputsHelper.ts +++ b/api/src/utils/stardust/associatedOutputsHelper.ts @@ -214,7 +214,9 @@ export class AssociatedOutputsHelper { // remove expired basic outputs from basic address associations if they exist const expiredIds = this.associationToOutputIds.get(AssociationType.BASIC_ADDRESS_EXPIRED); const filteredOutputIds = outputIds.filter((id) => !expiredIds?.includes(id)); - associations.push({ type, outputIds: filteredOutputIds.reverse() }); + if (filteredOutputIds.length > 0) { + associations.push({ type, outputIds: filteredOutputIds.reverse() }); + } } else if ( type === AssociationType.NFT_ADDRESS && this.associationToOutputIds.get(AssociationType.NFT_ADDRESS_EXPIRED)?.length > 0 @@ -222,7 +224,9 @@ export class AssociatedOutputsHelper { // remove expired nft outputs from nft address associations if they exist const expiredIds = this.associationToOutputIds.get(AssociationType.NFT_ADDRESS_EXPIRED); const filteredOutputIds = outputIds.filter((id) => !expiredIds?.includes(id)); - associations.push({ type, outputIds: filteredOutputIds.reverse() }); + if (filteredOutputIds.length > 0) { + associations.push({ type, outputIds: filteredOutputIds.reverse() }); + } } else { associations.push({ type, outputIds: outputIds.reverse() }); } From 0dcf1f321a2145e4fead0058b39ae08e8c47ca99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20=C3=81lvarez=20de=20la=20Cruz?= Date: Tue, 23 Apr 2024 14:42:23 +0200 Subject: [PATCH 02/10] fix: use output amount if there is no other balance for an output address (#1187) * fix: use output amount if there is no other balance for an output address * fix: balance conditions * fix: remove min storage deposit from available balance * chore: improve naming --------- Co-authored-by: Bran <52735957+brancoder@users.noreply.github.com> --- client/src/helpers/hooks/useAddressBalance.ts | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/client/src/helpers/hooks/useAddressBalance.ts b/client/src/helpers/hooks/useAddressBalance.ts index 4581f8db9..59e50fe1b 100644 --- a/client/src/helpers/hooks/useAddressBalance.ts +++ b/client/src/helpers/hooks/useAddressBalance.ts @@ -1,9 +1,11 @@ import { AddressType, AliasOutput, NftOutput } from "@iota/sdk-wasm/web"; -import { useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; +import NetworkContext from "~/app/context/NetworkContext"; import { IBech32AddressDetails } from "~/models/api/IBech32AddressDetails"; import { ServiceFactory } from "~factories/serviceFactory"; import { STARDUST } from "~models/config/protocolVersion"; import { StardustApiClient } from "~services/stardust/stardustApiClient"; +import { TransactionsHelper } from "../stardust/transactionsHelper"; import { useIsMounted } from "./useIsMounted"; /** @@ -23,6 +25,7 @@ export function useAddressBalance( const [balance, setBalance] = useState(null); const [availableBalance, setAvailableBalance] = useState(null); const [isLoading, setIsLoading] = useState(true); + const { rentStructure } = useContext(NetworkContext); useEffect(() => { setIsLoading(true); @@ -33,28 +36,27 @@ export function useAddressBalance( // eslint-disable-next-line no-void void (async () => { const response = await apiClient.addressBalanceChronicle({ network, address }); - - if (response?.totalBalance !== undefined && isMounted) { - let totalBalance = response.totalBalance; - let availableBalance = response.availableBalance ?? 0; + if (isMounted) { + let totalBalance = 0; + let availableBalance = null; + if (response?.totalBalance !== undefined) { + totalBalance = response.totalBalance; + availableBalance = response.availableBalance ?? 0; + } else { + // Fallback balance from iotajs (node) + const addressDetailsWithBalance = await apiClient.addressBalance({ network, address }); + if (addressDetailsWithBalance && isMounted) { + totalBalance = Number(addressDetailsWithBalance.balance); + } + } if (output) { - totalBalance = Number(totalBalance) + Number(output.amount); - availableBalance = Number(availableBalance) + Number(output.amount); + const outputBalance = Number(output.amount); + const outputStorageDeposit = TransactionsHelper.computeStorageDeposit([output], rentStructure); + totalBalance = Number(totalBalance ?? 0) + outputBalance; + availableBalance = Number(availableBalance ?? 0) + outputBalance - outputStorageDeposit; } setBalance(totalBalance); - setAvailableBalance(availableBalance > 0 ? availableBalance : null); - } else if (isMounted) { - // Fallback balance from iotajs (node) - const addressDetailsWithBalance = await apiClient.addressBalance({ network, address }); - - if (addressDetailsWithBalance && isMounted) { - let totalBalance = Number(addressDetailsWithBalance.balance); - if (output) { - totalBalance = Number(totalBalance) + Number(output.amount); - } - setBalance(totalBalance); - setAvailableBalance(null); - } + setAvailableBalance(availableBalance); } })(); } else { From c716a8cbe4c6163a3d095a9fa187eaa50f6f4fb0 Mon Sep 17 00:00:00 2001 From: Rajiv Shah Date: Tue, 23 Apr 2024 08:54:06 -0400 Subject: [PATCH 03/10] fix: WASM MIME type in Nginx config (#1426) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix WASM MIME type in Nginx config * Add comment --------- Co-authored-by: Begoña Álvarez de la Cruz --- client/Dockerfile | 3 +++ client/nginx/wasm.conf | 4 ++++ 2 files changed, 7 insertions(+) create mode 100644 client/nginx/wasm.conf diff --git a/client/Dockerfile b/client/Dockerfile index 76e53ed49..0c5b0f999 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -24,6 +24,9 @@ RUN echo 'server {\ }\ }' > /etc/nginx/sites-available/default +# Set Content-Type so streaming compilation works +RUN mv ./nginx/wasm.conf /etc/nginx/conf.d/wasm.conf + # Running required steps to prepare the web app prod build RUN npm install RUN npm run build diff --git a/client/nginx/wasm.conf b/client/nginx/wasm.conf new file mode 100644 index 000000000..b5f4f5e4c --- /dev/null +++ b/client/nginx/wasm.conf @@ -0,0 +1,4 @@ +types { + # Set Content-Type so streaming compilation works + application/wasm wasm; +} From 6dafe3ebc806a67e78b9d3a30b8b7f5d224a9c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20Alvarez?= Date: Tue, 23 Apr 2024 15:50:35 +0200 Subject: [PATCH 04/10] chore: bump version to v3.3.8-rc.3 --- api/package-lock.json | 4 ++-- api/package.json | 2 +- client/package-lock.json | 4 ++-- client/package.json | 2 +- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index de2a1e9e7..c9d1b9a93 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer-api", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-api", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "license": "Apache-2.0", "dependencies": { "@google-cloud/logging-winston": "^6.0.0", diff --git a/api/package.json b/api/package.json index af92a638b..d566862eb 100644 --- a/api/package.json +++ b/api/package.json @@ -1,7 +1,7 @@ { "name": "explorer-api", "description": "API for Tangle Explorer", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "author": "Martyn Janes ", "repository": { "type": "git", diff --git a/client/package-lock.json b/client/package-lock.json index 3f9b2afcf..eedc136a0 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer-client", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-client", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/client/package.json b/client/package.json index bb006a67e..fb6b215ec 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "explorer-client", "description": "Tangle Explorer UI", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "author": "Martyn Janes ", "type": "module", "repository": { diff --git a/package.json b/package.json index 74a2b96a4..558e26967 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "explorer", "description": "Tangle Explorer", - "version": "3.3.8-rc.2", + "version": "3.3.8-rc.3", "scripts": { "setup:client": "cd client && npm install && npm run postinstall", "setup:api": "cd api && npm install && npm run build-compile && npm run build-config", From fb9b6b5833654ea6736260cad7344c9a61f8cebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20Alvarez?= Date: Tue, 23 Apr 2024 17:02:37 +0200 Subject: [PATCH 05/10] chore: bump version to v3.3.8 --- api/package-lock.json | 4 ++-- api/package.json | 2 +- client/package-lock.json | 4 ++-- client/package.json | 2 +- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index c9d1b9a93..433841760 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer-api", - "version": "3.3.8-rc.3", + "version": "3.3.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-api", - "version": "3.3.8-rc.3", + "version": "3.3.8", "license": "Apache-2.0", "dependencies": { "@google-cloud/logging-winston": "^6.0.0", diff --git a/api/package.json b/api/package.json index d566862eb..395a79300 100644 --- a/api/package.json +++ b/api/package.json @@ -1,7 +1,7 @@ { "name": "explorer-api", "description": "API for Tangle Explorer", - "version": "3.3.8-rc.3", + "version": "3.3.8", "author": "Martyn Janes ", "repository": { "type": "git", diff --git a/client/package-lock.json b/client/package-lock.json index eedc136a0..83e0518f9 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer-client", - "version": "3.3.8-rc.3", + "version": "3.3.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-client", - "version": "3.3.8-rc.3", + "version": "3.3.8", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/client/package.json b/client/package.json index fb6b215ec..2684cc7c6 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "explorer-client", "description": "Tangle Explorer UI", - "version": "3.3.8-rc.3", + "version": "3.3.8", "author": "Martyn Janes ", "type": "module", "repository": { diff --git a/package.json b/package.json index 558e26967..0233d1b41 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "explorer", "description": "Tangle Explorer", - "version": "3.3.8-rc.3", + "version": "3.3.8", "scripts": { "setup:client": "cd client && npm install && npm run postinstall", "setup:api": "cd api && npm install && npm run build-compile && npm run build-config", From 73453fab419d44f0b49faa089673f5d671a34f80 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 24 Apr 2024 17:16:34 +0200 Subject: [PATCH 06/10] fix: Remove tx inputs sorting by index (#1444) --- client/src/helpers/stardust/transactionsHelper.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/helpers/stardust/transactionsHelper.ts b/client/src/helpers/stardust/transactionsHelper.ts index 2419c8bdf..aa8ec1ec3 100644 --- a/client/src/helpers/stardust/transactionsHelper.ts +++ b/client/src/helpers/stardust/transactionsHelper.ts @@ -178,8 +178,7 @@ export class TransactionsHelper { } sortedOutputs = [...outputs, ...remainderOutputs]; - this.sortInputsAndOuputsByIndex(sortedOutputs); - this.sortInputsAndOuputsByIndex(inputs); + this.sortOuputsByIndex(sortedOutputs); } return { inputs, unlocks, outputs: sortedOutputs, unlockAddresses, transferTotal }; @@ -189,7 +188,7 @@ export class TransactionsHelper { * Sort inputs and outputs in assending order by index. * @param items Inputs or Outputs. */ - public static sortInputsAndOuputsByIndex(items: IInput[] | IOutput[]) { + public static sortOuputsByIndex(items: IOutput[]) { // eslint-disable-next-line @typescript-eslint/no-explicit-any items.sort((a: any, b: any) => { const firstIndex: string = a.id ? a.id.slice(-4) : a.outputId.slice(-4); From 16e32a38b7a4fd74c71d39f0b739e7779e4d72ac Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 24 Apr 2024 17:52:28 +0200 Subject: [PATCH 07/10] fix: Prevent omni-search to (sometimes) return wrong results (#1445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Begoña Álvarez de la Cruz --- api/src/utils/stardust/searchExecutor.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/src/utils/stardust/searchExecutor.ts b/api/src/utils/stardust/searchExecutor.ts index 9b142557e..b61d16220 100644 --- a/api/src/utils/stardust/searchExecutor.ts +++ b/api/src/utils/stardust/searchExecutor.ts @@ -53,7 +53,7 @@ export class SearchExecutor { this.apiService .milestoneDetailsById(searchQuery.milestoneId) .then((milestoneDetails) => { - if (milestoneDetails) { + if (milestoneDetails.blockId) { promisesResult = { milestone: milestoneDetails, }; @@ -139,7 +139,7 @@ export class SearchExecutor { this.apiService .aliasDetails(searchQuery.aliasId) .then((aliasOutputs) => { - if (aliasOutputs) { + if (aliasOutputs.aliasDetails) { promisesResult = { aliasId: searchQuery.aliasId, did: searchQuery.did, @@ -162,7 +162,7 @@ export class SearchExecutor { this.apiService .nftDetails(searchQuery.nftId) .then((nftOutputs) => { - if (nftOutputs) { + if (nftOutputs.nftDetails) { promisesResult = { nftId: searchQuery.nftId, }; From 7a9b815f98057515ca2754d111d07b7affb21da3 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 24 Apr 2024 18:00:08 +0200 Subject: [PATCH 08/10] feat: Add Nft redirect route (Nova) (#1441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Add Nft redirect route (Nova) * empty-commit --------- Co-authored-by: Begoña Alvarez --- client/src/app/routes.tsx | 6 ++-- .../src/app/routes/nova/NftRedirectRoute.tsx | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 client/src/app/routes/nova/NftRedirectRoute.tsx diff --git a/client/src/app/routes.tsx b/client/src/app/routes.tsx index 4c9a80667..763f898db 100644 --- a/client/src/app/routes.tsx +++ b/client/src/app/routes.tsx @@ -31,7 +31,8 @@ import StardustBlock from "./routes/stardust/Block"; import StardustFoundry from "./routes/stardust/Foundry"; import { Landing as StardustLanding } from "./routes/stardust/landing/Landing"; import NovaLanding from "./routes/nova/landing/Landing"; -import NftRedirectRoute from "./routes/stardust/NftRedirectRoute"; +import NftRedirectRouteStardust from "./routes/stardust/NftRedirectRoute"; +import NftRedirectRouteNova from "./routes/nova/NftRedirectRoute"; import StardustOutputList from "./routes/stardust/OutputList"; import StardustOutputPage from "./routes/stardust/OutputPage"; import NovaBlockPage from "./routes/nova/Block"; @@ -169,7 +170,7 @@ const buildAppRoutes = (protocolVersion: string, withNetworkContext: (wrappedCom , , , - , + , , , , @@ -189,6 +190,7 @@ const buildAppRoutes = (protocolVersion: string, withNetworkContext: (wrappedCom , , , + , , , , diff --git a/client/src/app/routes/nova/NftRedirectRoute.tsx b/client/src/app/routes/nova/NftRedirectRoute.tsx new file mode 100644 index 000000000..1d3778d73 --- /dev/null +++ b/client/src/app/routes/nova/NftRedirectRoute.tsx @@ -0,0 +1,36 @@ +import { AddressType } from "@iota/sdk-wasm-nova/web"; +import React from "react"; +import { Redirect, RouteComponentProps } from "react-router-dom"; +import { AddressHelper } from "~helpers/nova/addressHelper"; +import { useNetworkInfoNova } from "~/helpers/nova/networkInfo"; + +interface NftRedirectRouteProps { + /** + * The network. + */ + network: string; + + /** + * The nftId to redirect. + */ + nftId: string; +} + +const ADDRESS_ROUTE = "addr"; + +const NftRedirectRoute: React.FC> = ({ + match: { + params: { network, nftId }, + }, +}) => { + const { bech32Hrp } = useNetworkInfoNova((s) => s.networkInfo); + const nftAddress = AddressHelper.buildAddress(bech32Hrp, nftId, AddressType.Nft); + const redirectState = { + addressDetails: nftAddress, + }; + const routeParam = nftAddress.bech32; + const redirect = `/${network}/${ADDRESS_ROUTE}/${routeParam}`; + return ; +}; + +export default NftRedirectRoute; From 711932ca6277a8e2fe376ea28edb82e92bcfb274 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 25 Apr 2024 12:48:37 +0200 Subject: [PATCH 09/10] fix: Apply fix for alias reference unlock not pre expanding to NOVA (#1418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Apply fix for alias reference unlock not pre expanding (issues #1121) to NOVA * feat: Remove preExpandConfig logic around StateController for Nova * feat: Rename function to singular * chore: Apply #1444 fix to Nova (Remove tx inputs sorting by index) --------- Co-authored-by: Begoña Álvarez de la Cruz --- client/src/helpers/nova/preExpandedConfig.ts | 34 ++++++++++++++----- client/src/helpers/nova/transactionsHelper.ts | 5 ++- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/client/src/helpers/nova/preExpandedConfig.ts b/client/src/helpers/nova/preExpandedConfig.ts index aca9de22f..036db45a8 100644 --- a/client/src/helpers/nova/preExpandedConfig.ts +++ b/client/src/helpers/nova/preExpandedConfig.ts @@ -1,4 +1,7 @@ import { + AccountOutput, + AccountUnlock, + AddressType, AddressUnlockCondition, CommonOutput, ExpirationUnlockCondition, @@ -7,12 +10,11 @@ import { StateControllerAddressUnlockCondition, Unlock, UnlockConditionType, - Utils, + UnlockType, } from "@iota/sdk-wasm-nova/web"; import { AddressHelper } from "~/helpers/nova/addressHelper"; import { IInput } from "~models/api/nova/IInput"; import { IPreExpandedConfig } from "~models/components"; -import { resolveTransitiveUnlock } from "./resolveTransiviteUnlock"; const OUTPUT_EXPAND_CONDITIONS: UnlockConditionType[] = [ UnlockConditionType.Address, @@ -37,25 +39,28 @@ export function getInputsPreExpandedConfig(inputs: IInput[], unlocks: Unlock[], const matchExpandCondition = commonOutput.unlockConditions?.find((unlockCondition) => INPUT_EXPAND_CONDITIONS.includes(unlockCondition.type), ); + preExpandedConfig = { isPreExpanded: !!matchExpandCondition, }; - if (input?.output?.output && "unlockConditions" in input.output.output) { - const commmonOutput = input.output.output as unknown as CommonOutput; - const signatureUnlock = resolveTransitiveUnlock(unlocks, idx); - const unlockSignatureAddress = Utils.addressToBech32(Utils.publicKeyHash(signatureUnlock.signature.publicKey), bech32Hrp); + if (commonOutput.unlockConditions.length > 0) { + const unlockSignatureAddress = input.address.bech32; preExpandedConfig = { ...preExpandedConfig, - unlockConditions: commmonOutput.unlockConditions?.map((unlockCondition) => { + unlockConditions: commonOutput.unlockConditions.map((unlockCondition) => { switch (unlockCondition.type) { case UnlockConditionType.Address: { const unlockAddress = AddressHelper.buildAddress( bech32Hrp, (unlockCondition as AddressUnlockCondition).address, )?.bech32; - return unlockAddress === unlockSignatureAddress; + + // special case for account unlock + const referencedAccountAddress = getReferencedAddress(inputs, unlocks[idx], bech32Hrp); + + return unlockAddress === unlockSignatureAddress || unlockAddress === referencedAccountAddress; } case UnlockConditionType.Expiration: { const unlockAddress = AddressHelper.buildAddress( @@ -90,6 +95,19 @@ export function getInputsPreExpandedConfig(inputs: IInput[], unlocks: Unlock[], return inputsPreExpandedConfig; } +function getReferencedAddress(inputs: IInput[], unlock: Unlock, bech32Hrp: string): string { + let referencedAccountAddress = ""; + if (unlock.type === UnlockType.Account) { + const referencedAccountInput = inputs[(unlock as AccountUnlock).reference]; + const referencedAccountOutput = referencedAccountInput?.output?.output as unknown as AccountOutput; + if (referencedAccountOutput?.accountId) { + referencedAccountAddress = + AddressHelper.buildAddress(bech32Hrp, referencedAccountOutput.accountId, AddressType.Account)?.bech32 || ""; + } + } + return referencedAccountAddress; +} + /** * Get the preExpandedConfig for the outputs. * Expand the output and its relevant receiver address related unlock conditions. diff --git a/client/src/helpers/nova/transactionsHelper.ts b/client/src/helpers/nova/transactionsHelper.ts index ba0e78f39..760fc60b2 100644 --- a/client/src/helpers/nova/transactionsHelper.ts +++ b/client/src/helpers/nova/transactionsHelper.ts @@ -180,8 +180,7 @@ export class TransactionsHelper { } sortedOutputs = [...outputs, ...remainderOutputs]; - this.sortInputsAndOuputsByIndex(sortedOutputs); - this.sortInputsAndOuputsByIndex(inputs); + this.sortOuputsByIndex(sortedOutputs); } return { inputs, outputs: sortedOutputs, unlockAddresses, transferTotal }; @@ -191,7 +190,7 @@ export class TransactionsHelper { * Sort inputs and outputs in assending order by index. * @param items Inputs or Outputs. */ - public static sortInputsAndOuputsByIndex(items: IInput[] | IOutput[]) { + public static sortOuputsByIndex(items: IOutput[]) { // eslint-disable-next-line @typescript-eslint/no-explicit-any items.sort((a: any, b: any) => { const firstIndex: string = a.id ? a.id.slice(-4) : a.outputId.slice(-4); From 3addd46132b10659c1e1a6eccfce5deedd107a73 Mon Sep 17 00:00:00 2001 From: Bran <52735957+brancoder@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:50:48 +0200 Subject: [PATCH 10/10] fix: change account link to addr (#1451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Begoña Álvarez de la Cruz --- client/src/app/components/nova/ContextInputView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/components/nova/ContextInputView.tsx b/client/src/app/components/nova/ContextInputView.tsx index c4e94c553..3a2b199aa 100644 --- a/client/src/app/components/nova/ContextInputView.tsx +++ b/client/src/app/components/nova/ContextInputView.tsx @@ -35,7 +35,7 @@ const ContextInputView: React.FC = ({ contextInput }) =>
Account
- +
);