From 87e84ae90d0de38675df522dc1599f134b9c52eb Mon Sep 17 00:00:00 2001 From: benbierens Date: Mon, 18 Dec 2023 13:32:58 +0100 Subject: [PATCH] Adds method for checking of codex contracts are deployed --- .../CodexContractsAccess.cs | 7 +++++++ .../ContractInteractions.cs | 21 +++++++++++++++++++ Tools/BiblioTech/BaseGethCommand.cs | 14 ++++++++----- Tools/BiblioTech/RandomBusyMessage.cs | 2 +- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs index 1d2a699..be22f3e 100644 --- a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs +++ b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs @@ -7,6 +7,7 @@ namespace CodexContractsPlugin { CodexContractsDeployment Deployment { get; } + bool IsDeployed(); string MintTestTokens(IHasEthAddress owner, TestToken testTokens); string MintTestTokens(EthAddress ethAddress, TestToken testTokens); TestToken GetTestTokenBalance(IHasEthAddress owner); @@ -27,6 +28,12 @@ namespace CodexContractsPlugin public CodexContractsDeployment Deployment { get; } + public bool IsDeployed() + { + var interaction = new ContractInteractions(log, gethNode); + return !string.IsNullOrEmpty(interaction.GetTokenName(Deployment.TokenAddress)); + } + public string MintTestTokens(IHasEthAddress owner, TestToken testTokens) { return MintTestTokens(owner.EthAddress, testTokens); diff --git a/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs b/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs index a1c7ef6..4af2ac6 100644 --- a/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs +++ b/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs @@ -26,6 +26,22 @@ namespace CodexContractsPlugin return gethNode.Call(marketplaceAddress, function); } + public string GetTokenName(string tokenAddress) + { + try + { + log.Debug(tokenAddress); + var function = new GetTokenNameFunction(); + + return gethNode.Call(tokenAddress, function); + } + catch (Exception ex) + { + log.Log("Failed to get token name: " + ex); + return string.Empty; + } + } + public string MintTestTokens(EthAddress address, decimal amount, string tokenAddress) { log.Debug($"{amount} -> {address} (token: {tokenAddress})"); @@ -87,6 +103,11 @@ namespace CodexContractsPlugin { } + [Function("name", "string")] + public class GetTokenNameFunction : FunctionMessage + { + } + [Function("mint")] public class MintTokensFunction : FunctionMessage { diff --git a/Tools/BiblioTech/BaseGethCommand.cs b/Tools/BiblioTech/BaseGethCommand.cs index 52bdb45..ecbdfec 100644 --- a/Tools/BiblioTech/BaseGethCommand.cs +++ b/Tools/BiblioTech/BaseGethCommand.cs @@ -59,12 +59,10 @@ namespace BiblioTech { protected override async Task Invoke(CommandContext context) { - var log = new ConsoleLog(); - if (!string.IsNullOrEmpty(GethInput.LoadError)) { var msg = "Geth input incorrect: " + GethInput.LoadError; - log.Error(msg); + Program.Log.Error(msg); if (IsInAdminChannel(context.Command)) { await context.Followup(msg); @@ -82,8 +80,14 @@ namespace BiblioTech tokenAddress: GethInput.TokenAddress ); - var gethNode = new CustomGethNode(log, GethInput.GethHost, GethInput.GethPort, GethInput.PrivateKey); - var contracts = new CodexContractsAccess(log, gethNode, contractsDeployment); + var gethNode = new CustomGethNode(Program.Log, GethInput.GethHost, GethInput.GethPort, GethInput.PrivateKey); + var contracts = new CodexContractsAccess(Program.Log, gethNode, contractsDeployment); + + if (!contracts.IsDeployed()) + { + await context.Followup("I'm sorry, the Codex SmartContracts are not currently deployed."); + return; + } await Execute(context, gethNode, contracts); } diff --git a/Tools/BiblioTech/RandomBusyMessage.cs b/Tools/BiblioTech/RandomBusyMessage.cs index baa370e..290c927 100644 --- a/Tools/BiblioTech/RandomBusyMessage.cs +++ b/Tools/BiblioTech/RandomBusyMessage.cs @@ -19,7 +19,7 @@ public static string Get() { - return "Hold on: " + messages[random.Next(messages.Length)]; + return "(⏳): " + messages[random.Next(messages.Length)]; } } }