private static void SaveSubscription(SubscribeModel subscription)
        {
            if (Tracker.Current == null)
            {
                Tracker.StartTracking();
            }

            var facetSubscription = new SF.Foundation.PushNotifications.Facets.PushSubscription()
            {
                Endpoint = subscription.Subscription.Endpoint,
                Keys     = new Dictionary <string, string>()
            };

            foreach (var key in subscription.Subscription.Keys.Keys)
            {
                facetSubscription.Keys.Add(key, subscription.Subscription.Keys[key]);
            }

            var result = Guid.Empty;

            if (Guid.TryParse(subscription.ConfigurationId, out result))
            {
                var configItem = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(result));
                var config     = PushNotificationConfigurationService.GetConfiguration(configItem);
                facetSubscription.VapidPrivateKey = config.PrivateKey;
                facetSubscription.VapidPublicKey  = config.PublicKey;
            }

            PushSubscriptionManager.Current[Tracker.Current.Interaction.DeviceId] = facetSubscription;
        }
        public override IRenderingModelBase GetModel()
        {
            var model = new SubscribeButtonModel();

            FillBaseProperties(model);


            var result = Guid.Empty;

            Guid.TryParse(model.Item.Fields[new Sitecore.Data.ID(Fields.Goal)].Value, out result);

            model.GoalId = result;

            //Need Public Key to subscribe.
            model.PublicKey = PushNotificationConfigurationService.GetConfiguration().PublicKey;

            model.ConfigId = PushNotificationConfigurationService.GetConfigurationId();

            return(model);
        }