public void Update(VerifyFileJson verifyItem) { if (verifyItem == null) { Reset(); return; } _filename.Text = verifyItem.name; _hash.Text = verifyItem.hash; _hashtype.Text = Tr.Get($"HashTypes.{verifyItem.hashtype}"); _size.Text = Tr.Get("VerifyFileView.SizeInfo", verifyItem.length); if (_link != null) { if (string.IsNullOrEmpty(verifyItem.link)) { _link.Text = "-"; } else { _link.Text = verifyItem.link; } } }
protected override async Task Run() { (var hash, var length, _) = VerifyFileJson.GenerateHash(file); var verify = await VerifyApp.Current.DownloadVerificationResult(ServiceNode, id); if (verify != null) { try { foreach (var f in verify.Verify.files) { if (f.length == length && f.GetHash() == hash) { SetSuccess(f.hash); return; } } } catch (Exception ex) { Log.HandleException(ex); } SetError("File is not valid"); } else { SetError($"Verification {id} not found"); } }
public void AddUpdateFile(VerifyFileJson verifyItem) { var buttons = GetHeaderSectionRows("Files"); foreach (var button in buttons) { if (button.Tag == verifyItem) { var v = (button as ButtonRow).RowLayout.Children.Last() as VerifyFileView; v.Update(verifyItem); Status.ReValidate(); return; } } AddIndex = _addButton; AddIndexBefore = true; var view = new VerifyFileView(true); view.Update(verifyItem); var newButton = AddButtonViewRow(view, EditFile); newButton.Tag = verifyItem; Status.AddBusyView(newButton); Status.ReValidate(); }
VerificationFilePage(AddVerificationPage verificationPage, VerifyFileJson verifyItem, OpenFile file = null) : base("VerificationFilePage") { _verificationPage = verificationPage; _item = verifyItem ?? new VerifyFileJson(); AddTitleRow("Title"); AddHeaderRow("File"); Status.AddBusyView(AddButtonRow("Select", Select)); _link = AddEntryRow(null, "Link"); _link.SetDetailViewIcon(Icons.RowLink); _verifyView = new VerifyFileView(false); AddViewRow(_verifyView); if (verifyItem != null) { _link.Edit.Text = verifyItem.link; _fileName = verifyItem.name; _fileHash = verifyItem.GetHash(); _length = verifyItem.length; _verifyView.Update(verifyItem); } Status.Add(_link.Edit, T("LinkStatus"), (view, entry, newText, oldText) => { if (string.IsNullOrEmpty(newText)) { return(true); } return(newText.IsValdiUrl(true)); }); Status.Add(T("FileStatus"), (sv) => { return(!string.IsNullOrEmpty(_fileName) && _fileHash != null && _length > 0); }); AddFooterRow(); AddSubmitRow("Submit", Submit); if (file != null) { UIApp.Run(() => HashFile(file)); } }
async Task Verify(VerifyFileJson verifyFile) { using (var file = await UIApp.OpenFilePicker2()) { if (file.Valid) { IsBusy = true; Toast(".VerificationFilePage.Wait"); var valid = await Task.Run(() => VerifyFileJson.CheckHash(file.Stream, verifyFile.GetHash(), verifyFile.length)); IsBusy = false; await MessageAsync(valid? ".VerifyPage.Success" : ".VerifyPage.Failure"); } } }
public static async Task Open(AddVerificationPage verificationPage, VerifyFileJson verifyItem) { if (verifyItem != null) { await verificationPage.Navigation.PushAsync(new VerificationFilePage(verificationPage, verifyItem)); } else { var file = await UIApp.OpenFilePicker2(null); if (file.Valid) { await verificationPage.Navigation.PushAsync(new VerificationFilePage(verificationPage, null, file)); } } }
protected override async Task Run() { var submitAccount = ServiceNode.GetSubmitAccounts <SubmitAccount>().First(); var files = new List <VerifyFileJson>(); for (var i = 0; i < this.files.Length; i++) { var file = this.files[i]; try { using (var stream = File.OpenRead(file)) { var(hash, length) = VerifyFileJson.GenerateHash(stream); var fileJson = new VerifyFileJson { name = Path.GetFileName(file), hashtype = hash.HashType.ToString().ToLower(), hash = Hex.ToString(hash.RawData), length = length, link = GetLink(i) }; files.Add(fileJson); } } catch (Exception ex) { Log.IgnoreException(ex); return; } } var verifyJson = new VerifyJson { description = description, link = link, files = files }; var result = await VerifyApp.Current.UploadVerification(submitAccount, verifyJson); if (result.TransactionResult == TransactionResultTypes.Ok) { SetSuccess(VerifyApp.Current.GetRequestCode(ServiceNode, VerifyServiceInfo.ChainIndex, ViewVerificationSchemeAction.ActionName, result.Transaction.OperationId)); } else { SetError(result.GetErrorMessage()); } }
async Task VerifyFile(ButtonRow button) { var verify = button.Tag as VerifyJson; using (var file = await UIApp.OpenFilePicker2(null)) { if (file.Valid) { IsBusy = true; Toast(".VerificationFilePage.Wait"); var valid = await Task.Run(() => { try { (var hash, var length) = VerifyFileJson.GenerateHash(file.Stream); if (hash != null) { foreach (var f in verify.files) { var filehash = f.GetHash(); if (hash == filehash && f.length == file.Stream.Length) { return(true); } } } } catch (Exception ex) { Log.IgnoreException(ex); } return(false); }); IsBusy = false; await MessageAsync(valid? "Success" : "Failure"); } } }
async Task HashFile(OpenFile file) { IsBusy = true; Toast("Wait"); _fileHash = null; _fileName = null; _length = 0; await Task.Run(() => { try { (var hash, var length) = VerifyFileJson.GenerateHash(file.Stream); if (hash != null) { _fileName = file.Name; _fileHash = hash; _length = length; } } catch (Exception ex) { Log.IgnoreException(ex); } }); if (_fileHash != null) { _verifyView.Update(new VerifyFileJson { name = _fileName, hashtype = _fileHash.HashType.ToString().ToLower(), hash = Hex.ToString(_fileHash.RawData), length = _length, link = _link.Edit.Text }); } IsBusy = false; }