示例#1
0
        protected override async void OnIncomingPayload(NotificationPayload payload)
        {
            base.OnIncomingPayload(payload);

            string leagueId;
            string winnerId;
            string challengeId;

            if (payload.Payload.TryGetValue("leagueId", out leagueId))
            {
                if (leagueId == ViewModel.League.Id)
                {
                    var challenge = ViewModel.CurrentMembership?.OngoingChallenge;
                    payload.Payload.TryGetValue("challengeId", out challengeId);

                    if (challenge != null && challengeId == challenge.Id && payload.Payload.TryGetValue("winningAthleteId", out winnerId))
                    {
                        if (!_didPost)
                        {
                            PushChallengeDetailsPage(ViewModel.OngoingChallengeViewModel?.Challenge, true);
                        }
                    }

                    await ViewModel.RefreshLeague(true);

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        rankStrip.Membership = ViewModel.CurrentMembership;
                    });
                }
            }
        }
示例#2
0
        protected override async void OnIncomingPayload(NotificationPayload payload)
        {
            string challengeId;
            string winnerId;

            if (payload.Payload.TryGetValue("challengeId", out challengeId))
            {
                if (challengeId == ViewModel?.Challenge?.Id)
                {
                    await ViewModel.RefreshChallenge();

                    if (ViewModel.Challenge == null)
                    {
                        OnDecline?.Invoke();
                        await Navigation.PopAsync();

                        return;
                    }

                    if (payload.Payload.TryGetValue("winningAthleteId", out winnerId))
                    {
                        OnPostResults?.Invoke();
                    }
                }
            }
        }
示例#3
0
        async protected virtual void OnIncomingPayload(NotificationPayload payload)
        {
            string challengeId;

            if (payload.Payload.TryGetValue("challengeId", out challengeId))
            {
                try
                {
                    var vm   = new BaseViewModel();
                    var task = AzureService.Instance.GetChallengeById(challengeId);
                    await vm.RunSafe(task);

                    if (task.IsCompleted && !task.IsFaulted && task.Result != null)
                    {
                        var details = new ChallengeDetailsPage(task.Result);
                        details.AddDoneButton();

                        await App.Current.MainPage.Navigation.PushModalAsync(details.WithinNavigationPage());
                    }
                }
                catch (Exception e)
                {
                    InsightsManager.Report(e);
                    Console.WriteLine(e);
                }
            }
        }
		public async Task NotifyByTags(string message, List<string> tags, NotificationPayload payload = null, int? badgeCount = null)
		{
			if (WebApiConfig.IsDemoMode)
				return;

			var notification = new Dictionary<string, string> { { "message", message } };

			if(payload != null)
			{
				var json = JsonConvert.SerializeObject(payload);
				notification.Add("payload", json);
			}
			else
			{
				notification.Add("payload", "");
			}

			if (badgeCount == null)
				badgeCount = 0;

			notification.Add("badge", badgeCount.Value.ToString());

			try
			{
				await _hub.SendTemplateNotificationAsync(notification, tags);
			}
			catch(Exception e)
			{
				Console.WriteLine(e);
			}
		}
示例#5
0
        internal async Task OnIncomingPayload(NotificationPayload payload)
        {
            if (payload == null)
            {
                return;
            }

            if (App.CurrentAthlete == null)
            {
                _shelvedPayload = payload;
                return;
            }

            string challengeId;

            if (payload.Payload.TryGetValue("challengeId", out challengeId))
            {
                try
                {
                    var vm   = new BaseViewModel();
                    var task = AzureService.Instance.GetChallengeById(challengeId);
                    await vm.RunSafe(task);

                    var details = new ChallengeDetailsPage(task.Result);
                    details.AddDoneButton();

                    await App.Current.MainPage.Navigation.PushModalAsync(details.GetNavigationPage());
                }
                catch (Exception e)
                {
                    Insights.Report(e);
                    Console.WriteLine(e);
                }
            }
        }
示例#6
0
        protected override async void OnIncomingPayload(NotificationPayload payload)
        {
            base.OnIncomingPayload(payload);

            var    reload           = false;
            string membershipId     = null;
            string winningAthleteId = null;
            string losingAthleteId  = null;

            if (payload.Payload.TryGetValue("membershipId", out membershipId) && membershipId == ViewModel.MembershipId)
            {
                reload = true;
            }

            if (payload.Payload.TryGetValue("winningAthleteId", out winningAthleteId) && payload.Payload.TryGetValue("losingAthleteId", out losingAthleteId))
            {
                reload |= winningAthleteId == ViewModel.Membership.AthleteId || losingAthleteId == ViewModel.Membership.AthleteId;
            }

//			reload |= payload.Payload.TryGetValue("challengeId", out challengeId) && ViewModel.Membership.Athlete.AllChallenges.Any(c => c.Id == challengeId);

            if (reload)
            {
                await ViewModel.RefreshMembership();
            }
        }
示例#7
0
        protected override async void OnIncomingPayload(NotificationPayload payload)
        {
            base.OnIncomingPayload(payload);

            string leagueId;

            if (payload.Payload.TryGetValue("leagueId", out leagueId))
            {
                if (leagueId == ViewModel.League.Id)
                {
                    await ViewModel.GetLeaderboard(true);
                }
            }
        }
示例#8
0
        /// <summary>
        /// This method is here purely to handle shelved push notifications
        /// </summary>
        /// <param name="payload">Payload.</param>
        internal async Task OnIncomingPayload(NotificationPayload payload)
        {
            if (payload == null)
            {
                return;
            }

            if (App.CurrentAthlete == null)
            {
                PendingNotificationPayload = payload;
            }
            else
            {
                MessagingCenter.Send <App, NotificationPayload>(App.Current, Messages.IncomingPayloadReceived, payload);
            }
        }
示例#9
0
        protected override async void OnIncomingPayload(NotificationPayload payload)
        {
            base.OnIncomingPayload(payload);

            string leagueId = null;

            if (payload.Payload.TryGetValue("leagueId", out leagueId))
            {
                //await ViewModel.RemoteRefresh();
                return;
            }

            string challengeId;

            if (payload.Payload.TryGetValue("challengeId", out challengeId))
            {
                await ViewModel.RemoteRefresh();

                return;
            }
        }
示例#10
0
		/// <summary>
		/// This method is here purely to handle shelved push notifications
		/// </summary>
		/// <param name="payload">Payload.</param>
		internal async Task OnIncomingPayload(NotificationPayload payload)
		{
			if(payload == null)
				return;

			if(App.CurrentAthlete == null)
			{
				PendingNotificationPayload = payload;
			}
			else
			{
				MessagingCenter.Send<App, NotificationPayload>(App.Current, Messages.IncomingPayloadReceived, payload);
			}
		}
示例#11
0
		public async Task NotifyByTag(string message, string tag, NotificationPayload payload = null, int? badgeCount = null)
		{
			await NotifyByTags(message, new List<string> { tag }, payload, badgeCount);
		}
示例#12
0
		async void OnAuthenticationComplete()
		{
			await OnIncomingPayload(_shelvedPayload);

			_shelvedPayload = null;
		}
示例#13
0
		internal async Task OnIncomingPayload(NotificationPayload payload)
		{
			if(payload == null)
				return;

			if(App.CurrentAthlete == null)
			{
				_shelvedPayload = payload;
				return;
			}

			string challengeId;
			if(payload.Payload.TryGetValue("challengeId", out challengeId))
			{
				try
				{
					var vm = new BaseViewModel();
					var task = AzureService.Instance.GetChallengeById(challengeId);
					await vm.RunSafe(task);
					var details = new ChallengeDetailsPage(task.Result);
					details.AddDoneButton();
		
					await App.Current.MainPage.Navigation.PushModalAsync(details.GetNavigationPage());
				}
				catch(Exception e)
				{
					Insights.Report(e);
					Console.WriteLine(e);
				}
			}
		}
示例#14
0
 async protected virtual void OnIncomingPayload(NotificationPayload payload)
 {
 }
示例#15
0
        async void OnAuthenticationComplete()
        {
            await OnIncomingPayload(_shelvedPayload);

            _shelvedPayload = null;
        }