#pragma warning restore 649 public async UniTask <string> Open() { using (UniRxUtils.Toggle(SetVisible)) // open the panel, and close when done using (CompositeDisposable e = new CompositeDisposable()) { _field.OnValueChangedAsObservable() .Select(t => CheckValidId(t)) .Subscribe(v => _confirmButton.interactable = v) .AddTo(e); while (!CheckValidId(_field.text)) { bool confirmed = await UniRxUtils.First( _confirmButton.OnClickAsObservable().Select(_ => true), _cancelButton.OnClickAsObservable().Select(_ => false)); if (!confirmed) { return(null); } } return(_field.text); } }
public async UniTask <string> Open() { using (UniRxUtils.Toggle(SetVisible)) // open the list, and close when finished { Prepare(); // Return null when cancelled IObservable <string> cancel = _cancellation.Select(_ => (string)null); string input = await _selection.Merge(cancel).ToUniTask(useFirstValue: true); Initialize(); return(input); } }