private async Task Login() { await DialogService.OpenAsync <LoginModal>("Log in to SkyDocs", options : new DialogOptions() { ShowClose = false, Width = "450px" }); DialogService.Open <LoadingModal>("Loading...", new Dictionary <string, object>() { { "Msg", $"Loading files from {skyDocsService.CurrentNetwork}..." } }, options: new DialogOptions() { ShowClose = false, ShowTitle = false, Width = "200px" }); await skyDocsService.LoadDocumentList(); DialogService.Close(); StateHasChanged(); if (skyDocsService.IsMetaMaskLogin) { var address = await MetaMaskService.GetSelectedAddress(); var shares = await ShareService.GetSharedDocuments(address); var myshares = await ShareService.GetDocumentsIShared(address); shares = shares.Union(myshares).ToList(); var shareData = skyDocsService.SetShares(shares); Layout.SetNewShares(shareData.total, shareData.newShares); } }
private async Task MetaMaskLogin() { ShowMetaMaskMessage = false; Error = null; bool hasMetaMask = await MetaMaskService.HasMetaMask(); if (!hasMetaMask) { ShowMetaMaskMessage = true; } else { try { bool isSiteConnected = await MetaMaskService.IsSiteConnected(); MetaMaskLogin?storedLogin = null; if (!isSiteConnected) { storedLogin = await GetAndStoreHash(); } else { string address = await MetaMaskService.GetSelectedAddress(); storedLogin = await MetaMaskStorageService.GetStoredhash(address); if (storedLogin == null) { storedLogin = await GetAndStoreHash(); } } SkyDocsService.Login(storedLogin.address, storedLogin.hash, isMetaMaskLogin: true); DialogService.Close(); } catch (NoMetaMaskException) { ShowMetaMaskMessage = true; } catch (UserDeniedException) { Error = "MetaMask not allowed to connect to SkyDocs. Please try again."; } catch (Exception ex) { Error = "Failed to sign message. Please try again."; Console.WriteLine(ex); } } }
private async Task <MetaMaskLogin> GetAndStoreHash() { string signHash = await MetaMaskService.SignTypedData(SignLabel, SignValue); string address = await MetaMaskService.GetSelectedAddress(); MetaMaskLogin storedLogin = new MetaMaskLogin(address, signHash); //Store hash in cookie await MetaMaskStorageService.SaveStoredHash(storedLogin); return(storedLogin); }
protected override async Task OnInitializedAsync() { //Subscribe to events MetaMaskService.AccountChangedEvent += MetaMaskService_AccountChangedEvent; MetaMaskService.NetworkChangedEvent += MetaMaskService_NetworkChangedEvent; HasMetaMask = await MetaMaskService.HasMetaMask(); if (HasMetaMask) { await MetaMaskService.ListenToEvents(); } bool isSiteConnected = await MetaMaskService.IsSiteConnected(); if (isSiteConnected) { await GetSelectedAddress(); await GetSelectedNetwork(); } }
private async Task OnMetaMaskShare() { Error = null; var chain = await MetaMaskService.GetSelectedChain(); if (chain.chain != MetaMask.Blazor.Enums.Chain.Kovan) { Error = "Please select the Kovan network in MetaMask. Sharing currently only works on the Kovan testnet."; Progress = null; return; } if (SkyDocsService.CurrentSum == null) { Progress = null; return; } //Store data to share and get URL Progress = "Saving sharing secrets to Skynet..."; StateHasChanged(); try { var existing = SkyDocsService.CurrentSum; DocumentSummary shareSum = new DocumentSummary() { ContentSeed = existing.ContentSeed, CreatedDate = existing.CreatedDate, Id = existing.Id, ShareOrigin = existing.ShareOrigin, Title = existing.Title, PublicKey = existing.PublicKey, ModifiedDate = existing.ModifiedDate, PreviewImage = existing.PreviewImage, PrivateKey = ShareReadOnly ? null : existing.PrivateKey, StorageSource = SkyDocsService.IsDfinityLogin ? StorageSource.Dfinity : StorageSource.Skynet }; string?url = await ShareService.StoreShareMessage(ShareFormModel.EthAddress, shareSum); if (string.IsNullOrEmpty(url)) { Error = "Error storing shared data. Please try again"; } else { Console.WriteLine(url); } //Smart contract has a function called "share" FunctionABI function = new FunctionABI("share", false); //With 4 inputs var inputsParameters = new[] { new Parameter("address", "receiver"), new Parameter("string", "appId"), new Parameter("string", "shareType"), new Parameter("string", "data") }; function.InputParameters = inputsParameters; var functionCallEncoder = new FunctionCallEncoder(); var data = functionCallEncoder.EncodeRequest(function.Sha3Signature, inputsParameters, ShareFormModel.EthAddress, "SkyDocs", string.Empty, url); //Using The Share It Network: https://github.com/michielpost/TheShareItNetwork string address = "0x6E8c5AFd3CFf5f6Ec85c032B68eF2997323a00FD"; BigInteger weiValue = 0; data = data[2..]; //Remove the 0x from the generated string