From 4baaeec8d033ff8047ef469eb1327d2f9336f1b1 Mon Sep 17 00:00:00 2001 From: Georges KABBOUCHI Date: Sun, 22 Aug 2021 22:34:59 +0300 Subject: [PATCH] wip --- .../sidebar/context/strategy/SidebarStrategy.vue | 15 ++++++++------- composables/useStrategy.ts | 10 ++++++++++ core/strategies/helpers/strategy.ts | 6 +++--- .../protocols/aave-v2/deposit-and-borrow.ts | 9 +++------ 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/components/sidebar/context/strategy/SidebarStrategy.vue b/components/sidebar/context/strategy/SidebarStrategy.vue index d56e9e0..a6ff42c 100644 --- a/components/sidebar/context/strategy/SidebarStrategy.vue +++ b/components/sidebar/context/strategy/SidebarStrategy.vue @@ -10,17 +10,14 @@ :key="index" :value="input.value" :token-key="input.token ? input.token.key : 'eth'" - :token-keys="input.tokenKeys ? input.tokenKeys : []" + :token-keys="input.tokenKeys ? input.tokenKeys : activeStrategy.getContext()['tokenKeys']" :placeholder="input.placeholder()" :error="input.error" @input="$event => input.onInput($event)" @tokenKeyChanged=" tokenKey => { input.onCustomInput({ - token: { - key: tokenKey, - symbol: tokenKey.toUpperCase(), - } + token: getTokenByKey(tokenKey) }); } " @@ -42,6 +39,7 @@ import { useSidebar } from "~/composables/useSidebar"; import { protocolStrategies, DefineStrategy } from "~/core/strategies"; import { useStrategy } from "~/composables/useStrategy"; import InputAmount from "~/components/common/input/InputAmount.vue"; +import { useToken } from "~/composables/useToken"; export default defineComponent({ components: { InputAmount }, @@ -57,18 +55,21 @@ export default defineComponent({ }, setup(props) { const { close } = useSidebar(); + const { getTokenByKey } = useToken(); const strategies: DefineStrategy[] = protocolStrategies[props.protocol] || []; - const { inputs, submit, error } = useStrategy( + const { inputs, submit, error, strategy : activeStrategy} = useStrategy( strategies.find(strategy => strategy.id === props.strategy) ); return { inputs, error, - submit + submit, + activeStrategy, + getTokenByKey, }; } }); diff --git a/composables/useStrategy.ts b/composables/useStrategy.ts index f67c235..692647d 100644 --- a/composables/useStrategy.ts +++ b/composables/useStrategy.ts @@ -1,4 +1,5 @@ import { nextTick, onMounted, ref, watch } from "@nuxtjs/composition-api"; +import tokens from "~/constant/tokens"; import { buildStrategy, DefineStrategy, IStrategy } from "~/core/strategies"; import { useBalances } from "./useBalances"; import { useDSA } from "./useDSA"; @@ -62,6 +63,15 @@ export function useStrategy(defineStrategy: DefineStrategy) { }, { immediate: true } ); + watch( + networkName, + () => + strategy.setProps({ + tokens: tokens[networkName.value].allTokens, + tokenKeys: tokens[networkName.value].tokenKeys + }), + { immediate: true } + ); // testing onMounted(() => { diff --git a/core/strategies/helpers/strategy.ts b/core/strategies/helpers/strategy.ts index 8e77f14..ed20e6f 100644 --- a/core/strategies/helpers/strategy.ts +++ b/core/strategies/helpers/strategy.ts @@ -34,6 +34,8 @@ export class Strategy { setProps(props: object) { Object.assign(this.props, props); + + this.notifyListeners() } getInputs() { @@ -68,7 +70,7 @@ export class Strategy { this.notifyListeners(); }, onCustomInput: (values: object) => { - // input = Object.assign(input, values); + input = Object.assign(input, values); input.error = input.validate({ ...this.getContext(), @@ -86,8 +88,6 @@ export class Strategy { const spells = this.context.dsa.Spell(); - console.log(allSpells); - for (const spell of allSpells) { spells.add(spell); } diff --git a/core/strategies/protocols/aave-v2/deposit-and-borrow.ts b/core/strategies/protocols/aave-v2/deposit-and-borrow.ts index 425e0f9..a29c3df 100644 --- a/core/strategies/protocols/aave-v2/deposit-and-borrow.ts +++ b/core/strategies/protocols/aave-v2/deposit-and-borrow.ts @@ -1,3 +1,4 @@ +import tokens from "~/constant/tokens"; import { defineStrategy, defineInput, StrategyInputType } from "../../helpers"; export default defineStrategy({ @@ -19,17 +20,13 @@ export default defineStrategy({ return "Your amount exceeds your maximum limit."; } }, - tokenKeys: ["eth", "dai"], - tokens: [{ key: "eth", symbol: "ETH" }], - token: { key: "eth", symbol: "ETH", address : "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" } + token: tokens.mainnet.getTokenByKey("eth") }), defineInput({ type: StrategyInputType.INPUT_WITH_TOKEN, name: "Collateral", placeholder: ({ input }) => `${input.token.symbol} to Withdraw`, - tokenKeys: ["eth", "dai"], - tokens: [{ key: "eth", symbol: "ETH" }], - token: { key: "dai", symbol: "DAI", address : "0x6B175474E89094C44Da98b954EedeAC495271d0F" } + token: tokens.mainnet.getTokenByKey("dai") }) ],