private async void ButtonClick(object sender, EventArgs e) { if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet) { Device.BeginInvokeOnMainThread(async() => await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorNoInternet, "OK")); return; } FrameBtnQuest.IsVisible = false; progress.IsVisible = true; if (Settings.Person.Accounts.Count > 0) { IDResult result = await _server.newApp(Settings.Person.Accounts[0].Ident, additionalService.id_RequestType.ToString(), "Ваш заказ принят. В ближайшее время сотрудник свяжется с Вами для уточнения деталей\n" + additionalService.Description); if (result.Error == null) { RequestsUpdate requestsUpdate = await _server.GetRequestsUpdates(Settings.UpdateKey, result.ID.ToString()); if (requestsUpdate.Error == null) { Settings.UpdateKey = requestsUpdate.NewUpdateKey; } await DisplayAlert(AppResources.AlertSuccess, AppResources.OrderSuccess, "OK"); RequestInfo requestInfo = new RequestInfo(); requestInfo.ID = result.ID; if (Navigation.NavigationStack.FirstOrDefault(x => x is AppPage) == null) { await Navigation.PushAsync(new AppPage(requestInfo, true)); } } else { await DisplayAlert(AppResources.ErrorTitle, result.Error, "OK"); } } else { await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorConnectcIdent, "OK"); } FrameBtnQuest.IsVisible = true; progress.IsVisible = false; }
protected async override void OnAppearing() { base.OnAppearing(); TokenSource = new CancellationTokenSource(); Token = TokenSource.Token; RequestsUpdate requestsUpdate = await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString()); if (requestsUpdate.Error == null) { Settings.UpdateKey = requestsUpdate.NewUpdateKey; } var UpdateTask = new Task(async() => { try { var update = await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString()); if (update.Error == null) { Settings.UpdateKey = update.NewUpdateKey; if (update.CurrentRequestUpdates != null) { //Settings.DateUniq = ""; request = update.CurrentRequestUpdates; foreach (var each in update.CurrentRequestUpdates.Messages) { if (!messages.Contains(each)) { //Device.BeginInvokeOnMainThread(() => messages.Add(each)); Device.BeginInvokeOnMainThread(async() => { addAppMessage(each, messages.Count > 1 ? messages[messages.Count - 2].AuthorName : null); //var lastChild = baseForApp.Children.LastOrDefault(); ////Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, true)); //if (lastChild != null) // await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false); ////await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, true); }); } } Device.BeginInvokeOnMainThread(async() => { var lastChild = baseForApp.Children.LastOrDefault(); if (FrameMessage.Height < baseForApp.Height) { if (lastChild != null) { if (baseForApp.Height < lastChild.Y) { await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, false); } else { await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false); } } } }); //Device.BeginInvokeOnMainThread(() => additionalList.ScrollTo(messages[messages.Count - 1], 0, true)); } } } catch (Exception e) { } }); try { UpdateTask.Start(); } catch { } await Task.Delay(TimeSpan.FromSeconds(1)); if (Device.RuntimePlatform == "Android") { return; try { if (!PermissionAsked) { var camera_perm = await Plugin.Permissions.CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera); if (camera_perm != PermissionStatus.Granted) { await CrossPermissions.Current.RequestPermissionsAsync(Permission.Camera, Permission.Storage); } } } catch { } finally { PermissionAsked = true; } } }
private async Task RefreshData() { if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet) { Device.BeginInvokeOnMainThread(async() => await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorNoInternet, "OK")); return; } RequestsUpdate requestsUpdate = await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString()); if (requestsUpdate.Error == null) { Settings.UpdateKey = requestsUpdate.NewUpdateKey; if (requestsUpdate.CurrentRequestUpdates != null) { //Settings.DateUniq = ""; request = requestsUpdate.CurrentRequestUpdates; foreach (var each in requestsUpdate.CurrentRequestUpdates.Messages) { if (!messages.Contains(each)) { Device.BeginInvokeOnMainThread(async() => { addAppMessage(each, messages.Count > 1 ? messages[messages.Count - 2].AuthorName : null); //await Task.Delay(500); var lastChild = baseForApp.Children.LastOrDefault(); //var y = lastChild.Y- scrollFroAppMessages.Y; //var x = lastChild.X; //Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(x, y + 30, true)); //if (lastChild != null) // Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false)); }); messages.Add(each); } } // additionalList.ScrollTo(messages[messages.Count - 1], 0, true); //var y = lastChild.Y- scrollFroAppMessages.Y; //var x = lastChild.X; //Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(x, y + 30, true)); Device.BeginInvokeOnMainThread(async() => { var lastChild = baseForApp.Children.LastOrDefault(); if (FrameMessage.Height < baseForApp.Height) { if (lastChild != null) { if (baseForApp.Height < lastChild.Y) { await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, false); } else { await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false); } } } }); //Device.BeginInvokeOnMainThread(async () => await MethodWithDelayAsync(500)); //await MethodWithDelayAsync(500); //await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, true); } } else { await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorComments, "OK"); } // additionalList.ScrollTo(messages[messages.Count - 1], 0, true); }