Skip to content

Commit

Permalink
Add imported tokens to icrcCanistersStore
Browse files Browse the repository at this point in the history
  • Loading branch information
mstrasinskis committed Aug 30, 2024
1 parent 638cf81 commit f3e8fae
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions frontend/src/lib/services/imported-tokens.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import type { ImportedTokens } from "$lib/canisters/nns-dapp/nns-dapp.types";
import { MAX_IMPORTED_TOKENS } from "$lib/constants/imported-tokens.constants";
import { FORCE_CALL_STRATEGY } from "$lib/constants/mockable.constants";
import { getAuthenticatedIdentity } from "$lib/services/auth.services";
import { icrcCanistersStore } from "$lib/stores/icrc-canisters.store";
import { importedTokensStore } from "$lib/stores/imported-tokens.store";
import { toastsError, toastsSuccess } from "$lib/stores/toasts.store";
import type { ImportedTokenData } from "$lib/types/imported-tokens";
Expand All @@ -19,6 +20,7 @@ import {
toImportedTokenData,
} from "$lib/utils/imported-tokens.utils";
import { isNullish } from "@dfinity/utils";
import { get } from "svelte/store";
import { queryAndUpdate } from "./utils.services";

/** Load imported tokens from the `nns-dapp` backend and update the `importedTokensStore` store.
Expand All @@ -32,11 +34,26 @@ export const loadImportedTokens = async ({
return queryAndUpdate<ImportedTokens, unknown>({
request: (options) => getImportedTokens(options),
strategy: FORCE_CALL_STRATEGY,
onLoad: ({ response: { imported_tokens: importedTokens }, certified }) =>
onLoad: ({
response: { imported_tokens: rawImportedTokens },
certified,
}) => {
const importedTokens = rawImportedTokens.map(toImportedTokenData);
importedTokensStore.set({
importedTokens: importedTokens.map(toImportedTokenData),
importedTokens,
certified,
}),
});

const icrcCanistersStoreData = get(icrcCanistersStore);
for (const { ledgerCanisterId, indexCanisterId } of importedTokens) {
if (isNullish(icrcCanistersStoreData[ledgerCanisterId.toText()])) {
icrcCanistersStore.setCanisters({
ledgerCanisterId,
indexCanisterId,
});
}
}
},
onError: ({ error: err, certified }) => {
console.error(err);

Expand Down Expand Up @@ -97,8 +114,6 @@ export const addImportedToken = async ({
tokenToAdd: ImportedTokenData;
importedTokens: ImportedTokenData[];
}): Promise<{ success: boolean }> => {
// TODO: validate importedToken (not sns, not ck, is unique, etc.)

const tokens = [...importedTokens, tokenToAdd];
const { err } = await saveImportedToken({ tokens });

Expand Down

0 comments on commit f3e8fae

Please sign in to comment.