public Task <InviteExternalMemberToTeamResponse> InviteExternalMemberToTeamAsync(ExternalMemberTeamIntive externalInvite, CancellationTokenSource cancellationTokenSource) => Task <InviteExternalMemberToTeamResponse> .Run(async() => { if (!CrossConnectivity.Current.IsConnected) { throw new InvalidOperationException(AppConsts.ERROR_INTERNET_CONNECTION); } InviteExternalMemberToTeamRequest inviteExternalMemberToTeamRequest = new InviteExternalMemberToTeamRequest { AccessToken = GlobalSettings.Instance.UserProfile.AccesToken, Url = GlobalSettings.Instance.Endpoints.TeamEndPoints.InviteExternalMemberToTheTeam, Data = externalInvite }; InviteExternalMemberToTeamResponse inviteExternalResponse = null; try { inviteExternalResponse = await _requestProvider.PostAsync <InviteExternalMemberToTeamRequest, InviteExternalMemberToTeamResponse>(inviteExternalMemberToTeamRequest); } catch (ServiceAuthenticationException exc) { _identityUtilService.RefreshToken(); throw exc; } catch (HttpRequestExceptionEx exc) { try { inviteExternalResponse = JsonConvert.DeserializeObject <InviteExternalMemberToTeamResponse>(exc.Message); } catch { Debugger.Break(); throw new InvalidOperationException(INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE); } string output = string.Format("{0} {1} {2}", inviteExternalResponse.Errors?.FirstOrDefault(), inviteExternalResponse.Model?.FirstOrDefault(), inviteExternalResponse.Email?.FirstOrDefault()); output = (string.IsNullOrWhiteSpace(output) || string.IsNullOrEmpty(output)) ? INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE : output; throw new InvalidOperationException(output.Trim()); } catch (Exception exc) { Crashes.TrackError(exc); throw; } return(inviteExternalResponse); }, cancellationTokenSource.Token);
protected async override void OnExecuteCommand() { base.OnExecuteCommand(); if (NavigationService.LastPageViewModel is IInputForm inputForm) { if (inputForm.ValidateForm()) { if (inputForm is IBuildFormModel buildFormModel) { Guid busyKey = Guid.NewGuid(); UpdateBusyVisualState(busyKey, true); ResetCancellationTokenSource(ref _inviteExternalMemberToTeamAsyncCancellationTokenSource); CancellationTokenSource cancellationTokenSource = _inviteExternalMemberToTeamAsyncCancellationTokenSource; try { object formModel = buildFormModel.BuildFormModel(); InviteExternalMemberToTeamResponse inviteExternalMemberToTeamResponse = await _teamService.InviteExternalMemberToTeamAsync(formModel as ExternalMemberTeamIntive, cancellationTokenSource); if (inviteExternalMemberToTeamResponse != null) { await DialogService.ToastAsync(EXTERNAL_INVITE_WAS_SENT); await NavigationService.GoBackAsync(new IntentViewModelArgs()); } else { await DialogService.ToastAsync(TeamService.INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE); } } catch (OperationCanceledException) { } catch (ObjectDisposedException) { } catch (ServiceAuthenticationException) { } catch (Exception exc) { Crashes.TrackError(exc); await DialogService.ToastAsync(exc.Message); } UpdateBusyVisualState(busyKey, false); } } } }