private async void PromptConnect(string url, bool isConnect) { var newSource = new CancellationTokenSource(15000); var oldSource = Interlocked.Exchange(ref this.clipboardCampaignCancel, newSource); oldSource?.Cancel(); var client = await App.Services.GetServiceAsync <ILiveCampaignClient> (); try { Task <RemoteCampaign> campaignTask = client.GetCampaignDetailsAsync(new Uri(url), newSource.Token); var campaigns = await App.Services.GetServiceAsync <CampaignManager> (); var campaign = await campaignTask; if (campaign == null || campaigns.Elements.Any(c => c.Id == campaign.id.ToString())) { return; } if (!isConnect) { FlyoutService.PushFlyout("CampaignConnectFlyout", new JoinCampaignRequestViewModel(campaign)); } } catch (OperationCanceledException) { } }
private async void OnServiceDiscovered(ServiceDiscoveredMesage msg) { var playspaceManager = await this.serviceProvider.GetServiceAsync <PlaySpaceManager> (); bool isEnabled = await playspaceManager.TryRestoreServiceAsync(msg.Service); if (isEnabled) { return; } await this.rootFrame.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { FlyoutService.PushFlyout("ServiceAvailableFlyout", new EnableServiceRequestViewModel(msg.Service)); }); }
public MainPage() { InitializeComponent(); SetupDataContext(App.Services); SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; Window.Current.CoreWindow.PointerPressed += OnPointerPressed; Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += OnAcceleratorKeyActivated; Messenger.Default.Register <RequestJoinCampaignPromptMessage> (this, async rj => { var join = new JoinCampaignDialog(); await join.ShowAsync(); }); Messenger.Default.Register <RequestCreateCampaignPromptMessage> (this, async rc => { var create = new CreateCampaignDialog(); await create.ShowAsync(); }); Messenger.Default.Register <CampaignDisconnectedMessage> (this, cd => { FlyoutService.PushFlyout("LostConnectionFlyout", null); }); Messenger.Default.Register <CampaignReconnectedMessage> (this, cr => { FlyoutService.SwapFlyout("LostConnectionFlyout", "ReconnectedFlyout", null); }); Messenger.Default.Register <ConnectCampaignMessage> (this, cc => { // If the play page has already been created, this will swap to it, but it will have heard // this message and start connecting to it. if (!TryNavigateToPage(PlayPageName)) { return; } Messenger.Default.Send(cc); }); Messenger.Default.Register <PromptMessage> (this, p => p.Result = OnPromptAsync(p)); Messenger.Default.Register <NavigateToElementMessage> (this, OnNavigateToElement); FlyoutService.RegisterFlyoutTarget(this.contentFrame); Clipboard.ContentChanged += OnClipboardContentChanged; Loaded += MainPage_Loaded; }