Update status of CurrentUser when status or currentgame is changed
This commit is contained in:
@@ -304,6 +304,17 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
private Task SendStatus()
|
private Task SendStatus()
|
||||||
{
|
{
|
||||||
|
PrivateUser.Status = Status;
|
||||||
|
PrivateUser.CurrentGame = CurrentGame;
|
||||||
|
foreach (var server in Servers)
|
||||||
|
{
|
||||||
|
var current = server.CurrentUser;
|
||||||
|
if (current != null)
|
||||||
|
{
|
||||||
|
current.Status = Status;
|
||||||
|
current.CurrentGame = CurrentGame;
|
||||||
|
}
|
||||||
|
}
|
||||||
GatewaySocket.SendUpdateStatus(Status == UserStatus.Idle ? EpochTime.GetMilliseconds() - (10 * 60 * 1000) : (long?)null, CurrentGame);
|
GatewaySocket.SendUpdateStatus(Status == UserStatus.Idle ? EpochTime.GetMilliseconds() - (10 * 60 * 1000) : (long?)null, CurrentGame);
|
||||||
return TaskHelper.CompletedTask;
|
return TaskHelper.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,15 +29,18 @@ namespace Discord
|
|||||||
|
|
||||||
public static bool TryGetOrAdd<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> d,
|
public static bool TryGetOrAdd<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> d,
|
||||||
TKey key, Func<TKey, TValue> factory, out TValue result)
|
TKey key, Func<TKey, TValue> factory, out TValue result)
|
||||||
where TValue : class
|
|
||||||
{
|
{
|
||||||
TValue newValue = null;
|
bool created = false;
|
||||||
|
TValue newValue = default(TValue);
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (d.TryGetValue(key, out result))
|
if (d.TryGetValue(key, out result))
|
||||||
return false;
|
return false;
|
||||||
if (newValue == null)
|
if (!created)
|
||||||
|
{
|
||||||
newValue = factory(key);
|
newValue = factory(key);
|
||||||
|
created = true;
|
||||||
|
}
|
||||||
if (d.TryAdd(key, newValue))
|
if (d.TryAdd(key, newValue))
|
||||||
{
|
{
|
||||||
result = newValue;
|
result = newValue;
|
||||||
|
|||||||
@@ -391,6 +391,11 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
foreach (var channel in AllChannels)
|
foreach (var channel in AllChannels)
|
||||||
channel.AddUser(user.User);
|
channel.AddUser(user.User);
|
||||||
|
if (id == Client.CurrentUser.Id)
|
||||||
|
{
|
||||||
|
user.User.CurrentGame = Client.CurrentGame;
|
||||||
|
user.User.Status = Client.Status;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return user.User;
|
return user.User;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ namespace Discord
|
|||||||
/// <summary> Gets the unique identifier for this user's current avatar. </summary>
|
/// <summary> Gets the unique identifier for this user's current avatar. </summary>
|
||||||
public string AvatarId { get; private set; }
|
public string AvatarId { get; private set; }
|
||||||
/// <summary> Gets the name of the game this user is currently playing. </summary>
|
/// <summary> Gets the name of the game this user is currently playing. </summary>
|
||||||
public string CurrentGame { get; private set; }
|
public string CurrentGame { get; internal set; }
|
||||||
/// <summary> Gets the current status for this user. </summary>
|
/// <summary> Gets the current status for this user. </summary>
|
||||||
public UserStatus Status { get; private set; }
|
public UserStatus Status { get; internal set; }
|
||||||
/// <summary> Gets the datetime that this user joined this server. </summary>
|
/// <summary> Gets the datetime that this user joined this server. </summary>
|
||||||
public DateTime JoinedAt { get; private set; }
|
public DateTime JoinedAt { get; private set; }
|
||||||
/// <summary> Returns the time this user last sent/edited a message, started typing or sent voice data in this server. </summary>
|
/// <summary> Returns the time this user last sent/edited a message, started typing or sent voice data in this server. </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user