private Task HandleTask(ToastModel model) { var taskCompletionSource = new TaskCompletionSource <bool>(); Execute.BeginOnUIThread(() => { var toastContainerComponent = default(ToastContainerComponent); var activity = _contextProvider.CurrentActivity; if (activity is ActivityBase activityBase) { toastContainerComponent = activityBase.ViewComponents.FirstOrDefault(x => x.Key == nameof(ToastContainerComponent)) as ToastContainerComponent; } var view = toastContainerComponent == null ? activity.FindViewById <ViewGroup>(Android.Resource.Id.Content).GetChildAt(0) : activity.FindViewById <ViewGroup>(toastContainerComponent.ContainerId); if (view == null) { taskCompletionSource.TrySetResult(false); return; } var snackbar = Snackbar .Make(view, model.Label, Snackbar.LengthLong) .SetAction(model.CommandAction.Title, x => { model.CommandAction.Command.Execute(x); }); var snackbarView = snackbar.View; snackbarView.SetBackgroundResource(_toastSettings.NotificationBgColor); snackbar.SetActionTextColor(snackbarView.GetColor(_toastSettings.NotificationTextColor)); var callback = new SnackbarCallback(taskCompletionSource, model.AltCommandAction); snackbar.AddCallback(callback); snackbar.Show(); }); return(taskCompletionSource.Task); }
public void Enqueue(ToastModel model) { _queue.Enqueue(model); StartHandleImp().FireAndForget(_logger); }