예제 #1
0
        public static async Task <int> GetCharacter(Skype4Sharp.User user)
        {
            string             get_data = string.Format("{{\"skypename\":\"{0}\"}}", user.Username);
            string             url      = leancloudAPIDomain + tableName + "?where=" + WebUtility.UrlEncode(get_data);
            HttpRequestMessage request  = App.mainSkype.mainFactory.createWebRequest_GET(url, new string[][] { new string[] { "X-LC-Id", LeanCloudKey.appID }, new string[] { "X-LC-Key", LeanCloudKey.appKey } });
            string             rawJSON  = "";

            using (var handler = new HttpClientHandler())
                using (var client = new HttpClient(handler))
                {
                    client.DefaultRequestHeaders.Add("User-Agent", App.mainSkype.userAgent);
                    var result = await client.SendAsync(request);

                    rawJSON = await result.Content.ReadAsStringAsync();
                }
            dynamic decodedJSON = JsonConvert.DeserializeObject(rawJSON);
            dynamic results     = decodedJSON.results;

            if (results.Count > 0)
            {
                return(results[0].charID);
            }
            else
            {
                return(NotFound);
            }
        }
예제 #2
0
 public static async Task GetCharAvatarUrlsForUsers(List <Skype4Sharp.User> users)
 {
     for (int i = 0; i < users.Count; i++)
     {
         Skype4Sharp.User user = users[i];
         user.CharAvatarUri = await GetCharAvatarForUser(user);
     }
 }
예제 #3
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     showBackButton();
     user           = (Skype4Sharp.User)e.Parameter;
     nameBlock.Text = user.DisplayName;
     if (user.Username != App.mainSkype.selfProfile.Username)
     {
         signOutButton.Visibility = Visibility.Collapsed;
     }
 }
예제 #4
0
        public static async Task <int> GetCharIDForUser(Skype4Sharp.User user)
        {
            int charID = await GetCharacter(user);

            if (charID == NotFound)
            {
                charID = GetHashCharID(user);
            }
            return(charID);
        }
예제 #5
0
        public static int GetHashCharID(Skype4Sharp.User user)
        {
            int hash = 0;

            for (int i = 0; i < user.Username.Length; i++)
            {
                char ch = user.Username[i];
                hash += ch;
            }
            return(hash % MaxCount);
        }
예제 #6
0
 private void peopleListView_ItemClick(object sender, ItemClickEventArgs e)
 {
     Skype4Sharp.User user = (Skype4Sharp.User)e.ClickedItem;
     foreach (Skype4Sharp.Chat chat in recent)
     {
         if (chat.ChatLink.Contains(user.Username))
         {
             enterInChat(chat);
             return;
         }
     }
     Frame.Navigate(typeof(ChatPage), user);
 }
예제 #7
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            senderBubble.Opacity = receiverBubble.Opacity = 0;
            if (e.Parameter is Skype4Sharp.Chat)
            {
                chat = (Skype4Sharp.Chat)e.Parameter;
                chatTopicBlock.Text      = chat.Topic;
                avatarBitmap.UriSource   = chat.CharAvatarUri;
                historyButton.Visibility = Visibility.Visible;
                if (chat.LastMessage.Sender != null && chat.LastMessage.Sender.Username == App.mainSkype.selfProfile.Username)
                {
                    if (chat.LastMessage.Body != null)
                    {
                        sentMessageBlock.Text = chat.LastMessage.Body;
                        senderBubblePop.Begin();
                    }
                }
                else
                {
                    if (chat.LastMessage.Body != null)
                    {
                        receivedMessageBlock.Text = chat.LastMessage.Body;
                    }
                }
                user = null;
            }
            else if (e.Parameter is Skype4Sharp.User)
            {
                user = (Skype4Sharp.User)e.Parameter;
                chatTopicBlock.Text      = user.DisplayName;
                avatarBitmap.UriSource   = user.CharAvatarUri;
                historyButton.Visibility = Visibility.Collapsed;
                comicsButton.Visibility  = Visibility.Collapsed;
                chat = null;
            }
            refreshUnread();
            showBackButton();
            await loadCharacter();

            if (chat != null && chat.LastMessage.Sender != null &&
                chat.LastMessage.Sender.Username != App.mainSkype.selfProfile.Username &&
                chat.LastMessage.Body != null)
            {
                receiverBubblePop.Begin();
            }
        }
예제 #8
0
 public static async Task <Uri> GetCharAvatarForUser(Skype4Sharp.User user)
 {
     return(new Uri("ms-appx:///Assets/CharacterAvatars/" + await GetCharIDForUser(user) + ".png"));
 }