This commit is contained in:
Georges KABBOUCHI 2021-08-22 22:34:59 +03:00
parent 6c3e80b291
commit 4baaeec8d0
4 changed files with 24 additions and 16 deletions

View File

@ -10,17 +10,14 @@
:key="index" :key="index"
:value="input.value" :value="input.value"
:token-key="input.token ? input.token.key : 'eth'" :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()" :placeholder="input.placeholder()"
:error="input.error" :error="input.error"
@input="$event => input.onInput($event)" @input="$event => input.onInput($event)"
@tokenKeyChanged=" @tokenKeyChanged="
tokenKey => { tokenKey => {
input.onCustomInput({ input.onCustomInput({
token: { token: getTokenByKey(tokenKey)
key: tokenKey,
symbol: tokenKey.toUpperCase(),
}
}); });
} }
" "
@ -42,6 +39,7 @@ import { useSidebar } from "~/composables/useSidebar";
import { protocolStrategies, DefineStrategy } from "~/core/strategies"; import { protocolStrategies, DefineStrategy } from "~/core/strategies";
import { useStrategy } from "~/composables/useStrategy"; import { useStrategy } from "~/composables/useStrategy";
import InputAmount from "~/components/common/input/InputAmount.vue"; import InputAmount from "~/components/common/input/InputAmount.vue";
import { useToken } from "~/composables/useToken";
export default defineComponent({ export default defineComponent({
components: { InputAmount }, components: { InputAmount },
@ -57,18 +55,21 @@ export default defineComponent({
}, },
setup(props) { setup(props) {
const { close } = useSidebar(); const { close } = useSidebar();
const { getTokenByKey } = useToken();
const strategies: DefineStrategy[] = const strategies: DefineStrategy[] =
protocolStrategies[props.protocol] || []; protocolStrategies[props.protocol] || [];
const { inputs, submit, error } = useStrategy( const { inputs, submit, error, strategy : activeStrategy} = useStrategy(
strategies.find(strategy => strategy.id === props.strategy) strategies.find(strategy => strategy.id === props.strategy)
); );
return { return {
inputs, inputs,
error, error,
submit submit,
activeStrategy,
getTokenByKey,
}; };
} }
}); });

View File

@ -1,4 +1,5 @@
import { nextTick, onMounted, ref, watch } from "@nuxtjs/composition-api"; import { nextTick, onMounted, ref, watch } from "@nuxtjs/composition-api";
import tokens from "~/constant/tokens";
import { buildStrategy, DefineStrategy, IStrategy } from "~/core/strategies"; import { buildStrategy, DefineStrategy, IStrategy } from "~/core/strategies";
import { useBalances } from "./useBalances"; import { useBalances } from "./useBalances";
import { useDSA } from "./useDSA"; import { useDSA } from "./useDSA";
@ -62,6 +63,15 @@ export function useStrategy(defineStrategy: DefineStrategy) {
}, },
{ immediate: true } { immediate: true }
); );
watch(
networkName,
() =>
strategy.setProps({
tokens: tokens[networkName.value].allTokens,
tokenKeys: tokens[networkName.value].tokenKeys
}),
{ immediate: true }
);
// testing // testing
onMounted(() => { onMounted(() => {

View File

@ -34,6 +34,8 @@ export class Strategy {
setProps(props: object) { setProps(props: object) {
Object.assign(this.props, props); Object.assign(this.props, props);
this.notifyListeners()
} }
getInputs() { getInputs() {
@ -68,7 +70,7 @@ export class Strategy {
this.notifyListeners(); this.notifyListeners();
}, },
onCustomInput: (values: object) => { onCustomInput: (values: object) => {
// input = Object.assign(input, values); input = Object.assign(input, values);
input.error = input.validate({ input.error = input.validate({
...this.getContext(), ...this.getContext(),
@ -86,8 +88,6 @@ export class Strategy {
const spells = this.context.dsa.Spell(); const spells = this.context.dsa.Spell();
console.log(allSpells);
for (const spell of allSpells) { for (const spell of allSpells) {
spells.add(spell); spells.add(spell);
} }

View File

@ -1,3 +1,4 @@
import tokens from "~/constant/tokens";
import { defineStrategy, defineInput, StrategyInputType } from "../../helpers"; import { defineStrategy, defineInput, StrategyInputType } from "../../helpers";
export default defineStrategy({ export default defineStrategy({
@ -19,17 +20,13 @@ export default defineStrategy({
return "Your amount exceeds your maximum limit."; return "Your amount exceeds your maximum limit.";
} }
}, },
tokenKeys: ["eth", "dai"], token: tokens.mainnet.getTokenByKey("eth")
tokens: [{ key: "eth", symbol: "ETH" }],
token: { key: "eth", symbol: "ETH", address : "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }
}), }),
defineInput({ defineInput({
type: StrategyInputType.INPUT_WITH_TOKEN, type: StrategyInputType.INPUT_WITH_TOKEN,
name: "Collateral", name: "Collateral",
placeholder: ({ input }) => `${input.token.symbol} to Withdraw`, placeholder: ({ input }) => `${input.token.symbol} to Withdraw`,
tokenKeys: ["eth", "dai"], token: tokens.mainnet.getTokenByKey("dai")
tokens: [{ key: "eth", symbol: "ETH" }],
token: { key: "dai", symbol: "DAI", address : "0x6B175474E89094C44Da98b954EedeAC495271d0F" }
}) })
], ],