예제 #1
0
 //Every time the user switches to another DM or to another guild, the current activity is disposed and a new one is created
 public static void SwitchSession(string NewGuildId)
 {
     if (_currentActivity != null)
     {
         //Dispose of any current UserActivitySession
         _currentActivity?.Dispose();
     }
     //userActivity = await channel.GetOrCreateUserActivityAsync(NewGuildId);
 }
예제 #2
0
        public async void OnGetActivityClick(object sender, RoutedEventArgs e)
        {
            ActivityId = Guid.NewGuid().ToString();

            // Get or Create a activity
            var activity = await UserActivityChannel.GetDefault().GetOrCreateUserActivityAsync(ActivityId);

            // if you want to use Adaptive card, reference: https://docs.microsoft.com/en-us/adaptive-cards/create/gettingstarted
            activity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(@"{
                                              ""$schema"": ""http://adaptivecards.io/schemas/adaptive-card.json"",
                                              ""type"": ""AdaptiveCard"",
                                              ""backgroundImage"": ""https://cdn2.ettoday.net/images/1376/d1376700.jpg"",
                                              ""version"": ""1.0"",
                                              ""body"" : [ {
                                                ""type"": ""Container"", 
                                                ""items"": [
                                                    {
                                                        ""type"": ""TextBlock"",
                                                        ""text"": ""from adaptive card"",
                                                        ""size"": ""large"",
                                                        ""wrap"": ""true"",
                                                        ""maxLines"": ""3""
                                                    }    
                                                ]
                                              } ]
                                              }");

            if (activity.State == UserActivityState.New)
            {
                // this is a new activity
                activity.VisualElements.DisplayText = "new activity";
                activity.ActivationUri = new Uri($"testapp://mainPage?state=new&id={ActivityId}");
            }
            else
            {
                // this is published activity
                activity.VisualElements.DisplayText = "published activity";
                activity.ActivationUri = new Uri($"testapp://mainPage?state=published&id={ActivityId}");
            }

            // set activity content info
            activity.ContentInfo = UserActivityContentInfo.FromJson(@"{
                ""user_id"": ""pou"",
                ""email"": ""*****@*****.**""
            }");

            // FallbackUri is handled when System invoke ActivationUri failed.
            //activity.FallbackUri = new Uri("https://dotblogs.com.tw/pou");

            activity.VisualElements.BackgroundColor = Color.FromArgb(0xFF, 0x88, 0x88, 0x88);

            await activity.SaveAsync();

            // a activity match an session, need close other sessions.
            activitySesion?.Dispose();
            activitySesion = activity.CreateSession();
        }
예제 #3
0
        public async Task StopActivityAsync(TimeSpan?currentPosition = null)
        {
            // Don't enable if windows timeline support is disabled
            if (!SettingsService.Instance.WindowsTimelineEnabled)
            {
                return;
            }

            try
            {
                // If no track is playing, don't run this logic
                if (SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack() == null)
                {
                    return;
                }

                var track    = SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack();
                var playlist = SimpleIoc.Default.GetInstance <IPlaybackService>().GetMediaPlaybackList().Items.Select(x => new BaseSoundByteItem(x.Source.AsBaseTrack()));
                var token    = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistToken();
                var source   = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistSource();

                await UpdateActivityAsync(source, track, playlist, token, currentPosition, SimpleIoc.Default.GetInstance <IPlaybackService>().IsPlaylistShuffled());

                _currentUserActivitySession?.Dispose();
            }
            catch (Exception ex)
            {
                SimpleIoc.Default.GetInstance <ITelemetryService>().TrackException(ex);
            }
        }
예제 #4
0
        private async Task GenerateActivityAsync(VolItem volItem)
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel = UserActivityChannel.GetDefault();

            // The text here should be treated as a title for this activity and should be unique to this app.
            UserActivity userActivity = await channel.GetOrCreateUserActivityAsync("LuoVol." + volItem.Vol.VolNum);

            // Populate required properties: DisplayText and ActivationUri are required.
            userActivity.VisualElements.DisplayText = "Luoo-UWP Timeline activities";

            // The name in the ActivationUri must match the name in the protocol setting in the manifest file (except for the "://" part).
            userActivity.ActivationUri = new Uri("luoo://?volnum=" + volItem.Vol.VolNum);

            // Build the adaptive card from a JSON string.
            userActivity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(apodTimelineCard.ToJson());

            // Set the mime type of the user activity, in this case, an application.
            userActivity.ContentType = "application/octet-stream";

            // Save the new metadata.
            await userActivity.SaveAsync();

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #5
0
        private async Task AddTimelineItem(T newItem)
        {
            UserActivityChannel _userActivityChannel = UserActivityChannel.GetDefault();
            UserActivity        _userActivity        = await _userActivityChannel.GetOrCreateUserActivityAsync("TDN");

            // Fetch the adaptive card JSON
            var adaptiveCard = AdaptiveCards.AdaptiveHeaderDescription;

            // Replace the content.
            adaptiveCard = adaptiveCard.Replace("{backgroundImage}", "");
            adaptiveCard = adaptiveCard.Replace("{name}", newItem.Name);
            adaptiveCard = adaptiveCard.Replace("{description}", newItem.Description);

            // Create the protocol, so when the clicks the Adaptive Card on the Timeline, it will directly launch to the correct image.
            //_userActivity.ActivationUri = new Uri($"my-timeline://details?{_galleryItem.ImageSource.Replace("ms-appx:///Assets/Images/", "")}");

            // Set the display text to the User Activity(e.g. Pike Place market.)
            _userActivity.VisualElements.DisplayText = newItem.Name;

            // Assign the Adaptive Card to the user activity.
            _userActivity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(adaptiveCard);

            // Save the details user activity.
            await _userActivity.SaveAsync();

            // Dispose of the session and create a new one ready for the next user activity.
            _userActivitySession?.Dispose();
            _userActivitySession = _userActivity.CreateSession();
        }
예제 #6
0
        public async Task UpdateActivityAsync(ISource source, Media media, IEnumerable <Media> queue, string token, TimeSpan?timeSpan, bool isShuffled)
        {
            if (media.MediaType != MediaType.Track)
            {
                return;
            }
            var track = (Track)media;

            var activity = await _channel.GetOrCreateUserActivityAsync("last-playback");

            activity.FallbackUri = new Uri("https://soundbytemedia.com/pages/remote-subsystem");

            var continueText = @"Continue listening to " + track.Title.Replace('"', ' ') + " and " + queue.Count() + " other songs.";

            activity.VisualElements.DisplayText = track.Title.Replace('"', ' ');
            activity.VisualElements.Description = continueText;

            var json = @"{""$schema"":""http://adaptivecards.io/schemas/adaptive-card.json"",""type"":""AdaptiveCard"",""backgroundImage"":""" + track.ArtworkUrl + @""",""version"": ""1.0"",""body"":[{""type"":""Container"",""items"":[{""type"":""TextBlock"",""text"":""" + track.Title.Replace('"', ' ') + @""",""weight"":""bolder"",""size"":""large"",""wrap"":true,""maxLines"":3},{""type"":""TextBlock"",""text"":""" + continueText + @""",""size"":""default"",""wrap"":true,""maxLines"":3}]}]}";

            activity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(json);

            activity.ActivationUri = new Uri("https://soundbytemedia.com/pages/remote-subsystem");

            await activity.SaveAsync();

            // Session
            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                _currentUserActivitySession?.Dispose();
                _currentUserActivitySession = null;

                _currentUserActivitySession = activity.CreateSession();
            });
        }
예제 #7
0
 /// <summary>
 /// Finishes the activity session asynchronous.
 /// </summary>
 /// <param name="theActivitySession">
 /// The activity session.
 /// </param>
 public static void FinishActivitySessionAsync(UserActivitySession theActivitySession)
 {
     if (!(theActivitySession is null))
     {
         theActivitySession.Dispose();
     }
 }
예제 #8
0
        public async void GenerateActivityAsync(string websitePage, string title, string content, string backgroundPath)
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");

            var uri = new Uri("moepicture://" + title + "?action=view");

            // Populate required properties
            userActivity.VisualElements.DisplayText = "MoePicture";
            userActivity.ActivationUri = uri;

            var    folder       = Package.Current.InstalledLocation;
            var    file         = await(await folder.GetFolderAsync("JskyUwpLibs")).GetFileAsync("Activities.json");
            string cardJsonText = await FileIO.ReadTextAsync(file);

            dynamic card = JObject.Parse(cardJsonText);

            card.backgroundImage       = backgroundPath;
            card.body[0].items[0].text = title;
            card.body[0].items[1].text = content;
            cardJsonText = JsonConvert.SerializeObject(card);
            // where jsonCardText is a JSON string that represents the card
            userActivity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(cardJsonText);

            //Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            currentActivity?.Dispose();
            currentActivity = userActivity.CreateSession();
        }
 private void Window_Closed(object sender, object e)
 {
     if (userActivityRequestManager != null)
     {
         userActivityRequestManager.UserActivityRequested -= OnUserActivityRequested;
     }
     Session?.Dispose();
 }
        private static async Task SaveAsync(UserActivity activity)
        {
            await activity.SaveAsync();

            // Dispose of any current UserActivitySession, and create a new one.
            _currentUserActivitySession?.Dispose();
            _currentUserActivitySession = activity.CreateSession();
        }
        async Task CreateUserActivityAsync()
        {
            // Get channel and create activity.
            UserActivityChannel channel  = UserActivityChannel.GetDefault();
            UserActivity        activity = await channel.GetOrCreateUserActivityAsync("SentEmail");

            // Set deep-link and properties.
            activity.VisualElements.DisplayText = "Graph Demo - Email Sent!";
            activity.ActivationUri = new Uri("ignitedemo://page?MainPage");

            // Save to activity feed.
            await activity.SaveAsync();

            // Create a session, which indicates that the user is engaged in the activity.
            _currentSession?.Dispose();
            _currentSession = activity.CreateSession();
        }
예제 #12
0
        public async Task GenerateCharActivityAsync(CharHolder Char)
        {
            if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.ApplicationModel.UserActivities.UserActivityChannel"))
            {
                return;
            }
            UserActivityChannel channel = UserActivityChannel.GetDefault();
            var          name           = Char.MakeName(false);
            UserActivity userActivity   = await channel.GetOrCreateUserActivityAsync(name);

            userActivity.VisualElements.DisplayText = AppResources.PlayedWith + " " + name.Remove(name.Length - Constants.DATEIENDUNG_CHAR.Length);
            userActivity.ActivationUri = new Uri(Constants.PROTOCOL_CHAR + Char.FileInfo?.FullName);

            await userActivity.SaveAsync();

            CurrentCharActivity?.Dispose();
            ShadowRunHelper.Helper.PlatformHelper.ExecuteOnUIThreadAsync(() => CurrentCharActivity = userActivity.CreateSession());
        }
예제 #13
0
        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            base.OnNavigatedFrom(e);

            _timerSave.Stop();

            if (_editProjectSession != null)
            {
                _editProjectSession.Dispose();
            }
        }
예제 #14
0
        private static async Task SaveAsync(UserActivity activity)
        {
            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal, async() =>
            {
                await activity.SaveAsync();

                // Dispose of any current UserActivitySession, and create a new one.
                _currentUserActivitySession?.Dispose();
                _currentUserActivitySession = activity.CreateSession();
            });
        }
예제 #15
0
        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            // Disconnect from the UserActivityRequested event if applicable.
            if (activityRequestManager != null)
            {
                activityRequestManager.UserActivityRequested -= OnUserActivityRequested;
            }

            // Disposing the session tells the system that the user is no longer engaged in the activity.
            activitySession?.Dispose();

            systemNavigationManager.BackRequested -= OnBackRequested;
        }
예제 #16
0
        //时间线支持
        public static async Task GenerateActivityAsync(string DisplayText, AdaptiveCard Card, Uri ActivationUri, string ActivityID)
        {
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync(ActivityID);

            userActivity.VisualElements.DisplayText = DisplayText;
            userActivity.VisualElements.Content     = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(Card.ToJson());
            userActivity.ActivationUri = ActivationUri;
            await userActivity.SaveAsync();

            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #17
0
    public async void Create(string json, string text)
    {
        string       id       = random.Next(1, 100000000).ToString();
        UserActivity activity = await channel.GetOrCreateUserActivityAsync(id);

        activity.VisualElements.DisplayText = text;
        activity.VisualElements.Content     =
            AdaptiveCardBuilder.CreateAdaptiveCardFromJson(json);
        activity.ActivationUri = new Uri(uri);
        activity.FallbackUri   = new Uri(uri);
        await activity.SaveAsync();

        UserActivitySession session = activity.CreateSession();

        session?.Dispose();
    }
예제 #18
0
        public async Task AddCardToTimeline(FileViewModel card)
        {
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync(Guid.NewGuid().ToString());

            userActivity.VisualElements.DisplayText            = "Card error: " + card.Name;
            userActivity.VisualElements.AttributionDisplayText = card.Name;
            userActivity.ActivationUri = new Uri("https://github.com/Microsoft/AdaptiveCards/blob/master/samples/" + card.Name + ".json");

            userActivity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(card.Contents);

            await userActivity.SaveAsync();

            _currentSession?.Dispose();
            _currentSession = userActivity.CreateSession();
        }
예제 #19
0
        private async void RenderResult_OnAction(RenderedAdaptiveCard sender, AdaptiveActionEventArgs e)
        {
            if (e.Action.ActionType == ActionType.OpenUrl)
            {
                _userActivity.ActivationUri = new Uri("adaptivecards://openLastPost");
                _userActivity.VisualElements.DisplayText = "Windows AppConsult blog";
                _userActivity.VisualElements.Content     = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(json);

                await _userActivity.SaveAsync();

                _userActivitySession?.Dispose();
                _userActivitySession = _userActivity.CreateSession();

                var action = e.Action as AdaptiveOpenUrlAction;
                await Launcher.LaunchUriAsync(action.Url);
            }
        }
예제 #20
0
    private async Task <string> Create(string title, string body, Color background)
    {
        string       id       = random.Next(1, 100000000).ToString();
        UserActivity activity = await _channel.GetOrCreateUserActivityAsync(id);

        activity.VisualElements.DisplayText = title;
        activity.ActivationUri = new Uri(timeline_uri);
        activity.FallbackUri   = new Uri(timeline_uri);
        activity.VisualElements.BackgroundColor = background;
        activity.VisualElements.Description     = body;
        await activity.SaveAsync();

        UserActivitySession session = activity.CreateSession();

        session?.Dispose();
        return(id);
    }
예제 #21
0
        async Task CreateUserActivityAsync()
        {
            // Get channel and create activity.
            UserActivityChannel channel  = UserActivityChannel.GetDefault();
            UserActivity        activity = await channel.GetOrCreateUserActivityAsync("Coupon Reader");

            // Set deep-link and properties.
            activity.VisualElements.DisplayText = "DevIntersection Demo - Coupon Scanned!";
            activity.ActivationUri = new Uri("DevIntersectionDemo://page?MainPage");

            // Save to activity feed.
            await activity.SaveAsync();

            // Dispose prevsion session, Create a new session which indicates that the user is engaged in the activity.
            _currentSession?.Dispose();
            _currentSession = activity.CreateSession();
        }
예제 #22
0
        private async Task CreateActivityAsync(AppContent target)
        {
            var channel  = UserActivityChannel.TryGetForWebAccount(Account);
            var activity = await channel.GetOrCreateUserActivityAsync(target.Id);

            activity.ActivationUri = new Uri($"decodedemo:?id={target.Id}");

            var card = target.ToAdaptiveCard();

            activity.VisualElements.Content     = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(card.ToJson());
            activity.VisualElements.DisplayText = target.Title;

            await activity.SaveAsync();

            _currentActivity?.Dispose();
            _currentActivity = activity.CreateSession();
        }
        public async Task AddToTimeline(Expense expense)
        {
            _userActivityChannel = UserActivityChannel.GetDefault();
            _userActivity        = await _userActivityChannel.GetOrCreateUserActivityAsync($"Expense-{expense.ExpenseId}");

            _userActivity.ActivationUri = new Uri($"contosoexpenses://expense/{expense.ExpenseId}");
            _userActivity.VisualElements.DisplayText = "Contoso Expenses";

            string json = BuildAdaptiveCard(expense);

            _userActivity.VisualElements.Content = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(json);

            await _userActivity.SaveAsync();

            _userActivitySession?.Dispose();
            _userActivitySession = _userActivity.CreateSession();
        }
예제 #24
0
        public async Task StopActivityAsync(TimeSpan?currentPosition = null)
        {
            // Set the current position (in case of app close)
            if (currentPosition.HasValue)
            {
                var activity = await _channel.GetOrCreateUserActivityAsync("SoundByte.Playback");

                activity.ActivationUri = new Uri(activity.ActivationUri + "&timespan=" + currentPosition.Value.TotalMilliseconds);

                await activity.SaveAsync();
            }

            if (_currentUserActivitySession != null)
            {
                _currentUserActivitySession.Dispose();
            }
        }
예제 #25
0
        private async Task GenerateActivityAsync()
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");

            // Populate required properties
            userActivity.VisualElements.DisplayText = "ProjectCityAppUWP Activity";
            userActivity.VisualElements.Description = "You downloaded a discount PDF!";
            userActivity.ActivationUri = new Uri("my-app://MainPage?action=edit");

            //Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #26
0
        private async void GenerateActivityAsync()
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync("ShowMerchants");

            // Populate required properties
            userActivity.VisualElements.DisplayText = "Handelaars";
            userActivity.VisualElements.Description = "Bekijk de handelaars";
            userActivity.ActivationUri = new Uri("stapp://ShowMerchants");

            //Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #27
0
        private async void setMicrosoftTimeline(Status tw)
        {
            CreateAdaptiveCardForTimeline(tw);
            var programId = findProgramId(tw.Text);
            //タイムラインに追加する
            var userChannel  = UserActivityChannel.GetDefault();
            var userActivity = await userChannel.GetOrCreateUserActivityAsync($"NicoLiveAlert_TwitterCS_{programId}");

            //設定
            userActivity.VisualElements.DisplayText = $"番組が開始しました。\n{tw.Text}";
            userActivity.VisualElements.Content     = AdaptiveCardBuilder.CreateAdaptiveCardFromJson(card.ToJson());
            userActivity.ActivationUri = new Uri("https://live2.nicovideo.jp/watch/" + programId);

            //保存
            await userActivity.SaveAsync();

            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #28
0
        private async Task GenerateActivityAsync()
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");

            // Populate required properties
            userActivity.VisualElements.DisplayText = "First Activity";
            userActivity.ActivationUri = new Uri("JCSample:navigate?page=MainPage");

            //Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();

            Debug.WriteLine("activity generated?");
        }
예제 #29
0
        private async Task GenerateActivityAsync()
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync(AppName);

            // Populate required properties
            userActivity.VisualElements.DisplayText            = AppName;
            userActivity.VisualElements.AttributionDisplayText = AppName;
            userActivity.VisualElements.Description            = AppInfo.Length > 3 ? AppInfo : AppReview;
            userActivity.ActivationUri = new Uri("coolapk://" + AppLink);

            //Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();
        }
예제 #30
0
        private async Task GenerateActivityAsync()
        {
            // Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
            UserActivityChannel channel      = UserActivityChannel.GetDefault();
            UserActivity        userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");

            // Populate required properties
            userActivity.VisualElements.DisplayText = "Symbol Icon Finder";
            userActivity.ActivationUri = new Uri("symboliconfinder://");
            userActivity.VisualElements.Description = "View and search Segoe MDL2 icons";

            // Save
            await userActivity.SaveAsync(); //save the new metadata

            // Dispose of any current UserActivitySession, and create a new one.
            _currentActivity?.Dispose();
            _currentActivity = userActivity.CreateSession();

            Debug.WriteLine("Created user session");
        }