예제 #1
0
파일: MainPage.xaml.cs 프로젝트: ermau/Aura
        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) {
            }
        }
예제 #2
0
        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));
            });
        }
예제 #3
0
파일: MainPage.xaml.cs 프로젝트: ermau/Aura
        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;
        }