Ejemplo n.º 1
0
 /// <summary>
 /// Constructs a query that is the or of the given queries.
 /// </summary>
 /// <typeparam name="T">The type of ParseObject being queried.</typeparam>
 /// <param name="source">An initial query to 'or' with additional queries.</param>
 /// <param name="queries">The list of ParseQueries to 'or' together.</param>
 /// <returns>A query that is the or of the given queries.</returns>
 public static ParseQuery <T> Or <T>(this ParseQuery <T> source, params ParseQuery <T>[] queries)
     where T : ParseObject
 {
     return(ParseQuery <T> .Or(queries.Concat(new[] { source })));
 }
    private IEnumerator queryMessages(ParseUser partner, bool updateUI)
    {
        /*
        Task partnerSearch = ParseUser.Query
        .WhereEqualTo("nick", "Thor")
        .FirstAsync().ContinueWith(t =>
        {
            partner = t.Result;
        });
        while (!partnerSearch.IsCompleted) yield return null;
        */

        IEnumerable<ParseObject> messageList = new List<ParseObject>();
        ParseQuery<ParseObject> queryPartner = new ParseQuery<ParseObject>("Message").WhereEqualTo("sender", partner).WhereEqualTo("receiver", ParseUser.CurrentUser);
        ParseQuery<ParseObject> querySender = new ParseQuery<ParseObject>("Message").WhereEqualTo("sender", ParseUser.CurrentUser).WhereEqualTo("receiver", partner);
        ParseQuery<ParseObject> query = querySender.Or(queryPartner).OrderByDescending("timestamp").Limit(messageLimit);
        query.Include("sender");
        Task task = query.FindAsync().ContinueWith(t =>
        {
            messageList = t.Result;
        });
        while (!task.IsCompleted) yield return null;
            messageList = (from m in messageList
                       orderby (m.Get<long>("timestamp")) ascending
                    select m).ToList();
        userMessages[partner.ObjectId] = messageList;
        if(updateUI)
            showMessages(messageList);
    }