sync updates

This commit is contained in:
Luke Pulverenti
2015-01-30 00:18:32 -05:00
parent a6145e54d9
commit 792e4c4f1b
81 changed files with 505 additions and 147 deletions

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Model.Connect;
using MediaBrowser.Model.Dto;
using System.Collections.Generic;
namespace MediaBrowser.Model.ApiClient
@@ -9,6 +10,7 @@ namespace MediaBrowser.Model.ApiClient
public List<ServerInfo> Servers { get; set; }
public IApiClient ApiClient { get; set; }
public ConnectUser ConnectUser { get; set; }
public UserDto OfflineUser { get; set; }
public ConnectionResult()
{

View File

@@ -6,6 +6,8 @@ namespace MediaBrowser.Model.ApiClient
ServerSignIn = 2,
SignedIn = 3,
ServerSelection = 4,
ConnectSignIn = 5
ConnectSignIn = 5,
OfflineSignIn = 6,
OfflineSignedIn = 7
}
}

View File

@@ -557,6 +557,13 @@ namespace MediaBrowser.Model.ApiClient
/// <exception cref="ArgumentNullException">id</exception>
Task<UserDto> GetUserAsync(string id);
/// <summary>
/// Gets the offline user asynchronous.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>Task&lt;UserDto&gt;.</returns>
Task<UserDto> GetOfflineUserAsync(string id);
/// <summary>
/// Gets the parental ratings async.
/// </summary>

View File

@@ -136,5 +136,14 @@ namespace MediaBrowser.Model.ApiClient
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
Task<List<ServerInfo>> GetAvailableServers(CancellationToken cancellationToken);
/// <summary>
/// Authenticates an offline user with their password
/// </summary>
/// <param name="user">The user.</param>
/// <param name="password">The password.</param>
/// <param name="rememberCredentials">if set to <c>true</c> [remember credentials].</param>
/// <returns>Task.</returns>
Task AuthenticateOffline(UserDto user, string password, bool rememberCredentials);
}
}

View File

@@ -70,6 +70,10 @@ namespace MediaBrowser.Model.ApiClient
{
existing.LastConnectionMode = server.LastConnectionMode;
}
foreach (ServerUserInfo user in server.Users)
{
existing.AddOrUpdate(user);
}
}
else
{

View File

@@ -1,12 +1,16 @@
using MediaBrowser.Model.Connect;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MediaBrowser.Model.ApiClient
{
public class ServerInfo
{
public List<ServerUserInfo> Users { get; set; }
public String Name { get; set; }
public String Id { get; set; }
public String LocalAddress { get; set; }
@@ -23,6 +27,7 @@ namespace MediaBrowser.Model.ApiClient
public ServerInfo()
{
WakeOnLanInfos = new List<WakeOnLanInfo>();
Users = new List<ServerUserInfo>();
}
public void ImportInfo(PublicSystemInfo systemInfo)
@@ -70,5 +75,48 @@ namespace MediaBrowser.Model.ApiClient
throw new ArgumentException("Unexpected ConnectionMode");
}
}
public void AddOrUpdate(ServerUserInfo user)
{
if (user == null)
{
throw new ArgumentNullException("user");
}
var list = Users.ToList();
var index = FindIndex(list, user.Id);
if (index != -1)
{
var existing = list[index];
// Merge the data
existing.IsOffline = user.IsOffline;
}
else
{
list.Add(user);
}
Users = list;
}
private int FindIndex(List<ServerUserInfo> users, string id)
{
var index = 0;
foreach (var user in users)
{
if (StringHelper.Equals(id, user.Id))
{
return index;
}
index++;
}
return -1;
}
}
}

View File

@@ -0,0 +1,9 @@

namespace MediaBrowser.Model.ApiClient
{
public class ServerUserInfo
{
public string Id { get; set; }
public bool IsOffline { get; set; }
}
}