using System; using System.IO.IsolatedStorage; using System.Net; using System.Windows; using System.Windows.Controls; using RestSharp; using System.Diagnostics; namespace Juick.Classes { public class AccountManager { private string _userName; private string _password; public string UserName { get { if (_userName == null) { IsolatedStorageSettings.ApplicationSettings.TryGetValue("user", out _userName); } return _userName; } set { _userName = value; IsolatedStorageSettings.ApplicationSettings["user"] = _userName; } } public string Password { get { if (_password == null) { IsolatedStorageSettings.ApplicationSettings.TryGetValue("password", out _password); } return _password; } set { _password = value; IsolatedStorageSettings.ApplicationSettings["password"] = value; } } public bool IsAuthenticated { get { bool authenticated; IsolatedStorageSettings.ApplicationSettings.TryGetValue("authenticated", out authenticated); return authenticated; } set { IsolatedStorageSettings.ApplicationSettings["authenticated"] = value; } } public string NotificationUri { get { string _notificationUri; IsolatedStorageSettings.ApplicationSettings.TryGetValue("notification_uri", out _notificationUri); return _notificationUri; } set { var oldValue = NotificationUri; if (!string.IsNullOrEmpty(oldValue)) UnregisterNotificationUrl(oldValue); IsolatedStorageSettings.ApplicationSettings["notification_uri"] = value; if (!string.IsNullOrEmpty(value)) RegisterNotificationUrl(value); } } public void SignOut(Page page) { IsAuthenticated = false; App.AppContext.DisableNotifications(); page.NavigationService.Navigate(new Uri("/LoginView.xaml", UriKind.Relative)); page.Dispatcher.BeginInvoke(() => page.NavigationService.RemoveBackEntry()); } void RegisterNotificationUrl(string newUrl) { App.AppContext.Client.ExecuteAsync(new RestRequest("/winphone/register?url=" + Uri.EscapeDataString(newUrl)), response => Debug.WriteLine("Registering push url, status {0}: {1}", response.Request.Resource, response.StatusCode)); } void UnregisterNotificationUrl(string oldUrl) { App.AppContext.Client.ExecuteAsync(new RestRequest("/winphone/unregister?url=" + Uri.EscapeDataString(oldUrl)), response => Debug.WriteLine("Unregistered push url, status {0}: {1}", response.Request.Resource, response.StatusCode)); } } }