예제 #1
0
        public Task SignUp(string fullname, string email, string password)
        {
            var user = new ApParseUser
            {
                Email    = email,
                Username = email,
                Password = password,
                Fullname = fullname,
            };

            return(user.SignUpAsync()
                   .ContinueWith(async t =>
            {
                if (t.IsCanceled)
                {
                    throw new TaskCanceledException();
                }
                if (t.IsFaulted)
                {
                    var handled = ParseErrorHandler.HandleParseError(t.Exception.InnerException as ParseException);
                    if (!handled)
                    {
                        throw t.Exception.InnerException;
                    }
                }
                _notificationCenter.Send(NotificationKeys.CurrentUserChanged, _currentUser);
                await AssociateInstallationWithUser();
            }).Unwrap());
        }
예제 #2
0
        public async Task <User> LogIn(string email, string password)
        {
            var parseUser = await ParseUser.LogInAsync(email, password)
                            .ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    var handled = ParseErrorHandler.HandleParseError(t.Exception.InnerException as ParseException);
                    if (!handled)
                    {
                        throw t.Exception.InnerException;
                    }
                }
                _notificationCenter.Send(NotificationKeys.CurrentUserChanged, _currentUser);

                return(t.Result);
            });

            await AssociateInstallationWithUser();

            return(new User
            {
                Id = parseUser.ObjectId,
                Fullname = parseUser["fullname"] as string,
                Email = parseUser.Username,
            });
        }
예제 #3
0
        public async Task <IList <Session> > GetSessions()
        {
            var sessions = (await ParseSession.Query
                            .WhereEqualTo("user", ParseUser.CurrentUser)
                            .FindAsync().ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    ParseErrorHandler.HandleParseError(t.Exception.InnerException as ParseException);
                }

                return(t.Result);
            })).ToList();


            var installations = (await ParseCloud.CallFunctionAsync <IList <ApParseInstallation> >("installations", null))
                                .ToDictionary(x => x.InstallationId.ToString());

            var resultSessions = new List <Session>();

            foreach (var parseSession in sessions)
            {
                var expiresAt      = parseSession["expiresAt"] as DateTime?;
                var installationId = parseSession["installationId"] as string;
                var session        = new Session
                {
                    Id        = parseSession.ObjectId,
                    CreatedAt = parseSession.CreatedAt.HasValue ? parseSession.CreatedAt.Value.ToLocalTime() : parseSession.CreatedAt,
                    ExpiresAt = expiresAt.HasValue ? expiresAt.Value.ToLocalTime() : (DateTime?)null,
                };

                if (!string.IsNullOrEmpty(installationId) && installations.ContainsKey(installationId))
                {
                    var installation = installations[installationId];
                    session.DeviceInfo = installation.DeviceInfo;
                }

                resultSessions.Add(session);
            }

            return(resultSessions);
        }