private async void Initialize() { instance = this; Log.Register(new InternalSink()); AppDomain.CurrentDomain.UnhandledException += (sender, e) => { if (e.IsTerminating) { Stop().Wait(); } }; TaskScheduler.UnobservedTaskException += (sender, e) => { e.SetObserved(); }; Types.Initialize( typeof(App).Assembly, typeof(Database).Assembly, typeof(FilesProvider).Assembly, typeof(ObjectSerializer).Assembly, typeof(XmppClient).Assembly, typeof(ContractsClient).Assembly, typeof(Expression).Assembly, typeof(Graph).Assembly, typeof(Waher.Things.ThingReference).Assembly, typeof(Waher.Runtime.Settings.RuntimeSettings).Assembly, typeof(Waher.Runtime.Language.Language).Assembly, typeof(Waher.Networking.DNS.DnsResolver).Assembly, typeof(Waher.Networking.XMPP.Sensor.SensorClient).Assembly, typeof(Waher.Networking.XMPP.Control.ControlClient).Assembly, typeof(Waher.Networking.XMPP.Concentrator.ConcentratorClient).Assembly, typeof(Waher.Networking.XMPP.P2P.XmppServerlessMessaging).Assembly, typeof(Waher.Networking.XMPP.Provisioning.ProvisioningClient).Assembly, typeof(Waher.Security.EllipticCurves.EllipticCurve).Assembly); string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string DataFolder = Path.Combine(AppDataFolder, "Data"); FilesProvider Provider = await FilesProvider.CreateAsync(DataFolder, "Default", 8192, 10000, 8192, Encoding.UTF8, 10000, this.GetCustomKey); await Provider.RepairIfInproperShutdown(string.Empty); Database.Register(Provider); configuration = await Database.FindFirstDeleteRest <XmppConfiguration>(); if (configuration is null) { await Task.Delay(1000); configuration = new XmppConfiguration(); await Database.Insert(configuration); } PersonalNumberSchemes.Load(); await ShowPage(); }
private async Task Register() { if (!(await this.ValidateInput(true))) { return; } string countryCode = ISO_3166_1.ToCode(this.SelectedCountry); string pnr = PersonalNumber.Trim(); string pnrBeforeValidation = pnr; bool? personalNumberIsValid = PersonalNumberSchemes.IsValid(countryCode, ref pnr, out string personalNumberFormat); if (personalNumberIsValid.HasValue && !personalNumberIsValid.Value) { if (string.IsNullOrWhiteSpace(personalNumberFormat)) { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.PersonalNumberDoesNotMatchCountry); } else { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.PersonalNumberDoesNotMatchCountry_ExpectedFormat + personalNumberFormat); } return; } if (pnr != pnrBeforeValidation) { this.PersonalNumber = pnr; } if (string.IsNullOrWhiteSpace(this.TagProfile.LegalJid)) { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.OperatorDoesNotSupportLegalIdentitiesAndSmartContracts); return; } if (string.IsNullOrWhiteSpace(this.TagProfile.RegistryJid)) { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.OperatorDoesNotSupportThingRegistries); return; } if (string.IsNullOrWhiteSpace(this.TagProfile.ProvisioningJid)) { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.OperatorDoesNotSupportProvisioningAndDecisionSupportForThings); return; } if (!this.NeuronService.IsOnline) { await this.UiDispatcher.DisplayAlert(AppResources.ErrorTitle, AppResources.NotConnectedToTheOperator); return; } SetIsBusy(RegisterCommand, TakePhotoCommand, PickPhotoCommand); try { RegisterIdentityModel model = CreateRegisterModel(); LegalIdentityAttachment[] photos = { photo }; (bool succeeded, LegalIdentity addedIdentity) = await this.networkService.TryRequest(() => this.NeuronService.Contracts.AddLegalIdentity(model, photos)); if (succeeded) { this.LegalIdentity = addedIdentity; this.TagProfile.SetLegalIdentity(this.LegalIdentity); UiDispatcher.BeginInvokeOnMainThread(() => { SetIsDone(RegisterCommand, TakePhotoCommand, PickPhotoCommand); OnStepCompleted(EventArgs.Empty); }); } } catch (Exception ex) { this.LogService.LogException(ex); await this.UiDispatcher.DisplayAlert(ex); } finally { BeginInvokeSetIsDone(RegisterCommand, TakePhotoCommand, PickPhotoCommand); } }