Skip to content

Commit 78d70c5

Browse files
Fix session member lettering (#38)
1 parent affd904 commit 78d70c5

File tree

14 files changed

+235
-57
lines changed

14 files changed

+235
-57
lines changed

src/ByteSync.Client/App.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<converters:ExecutionModeConverter x:Key="ExecutionModeConverter" />
1212
<converters:LocalInventoryPartStatusToIconConverter x:Key="InventoryProcessStatusToIconConverter" />
1313
<converters:LocalInventoryPartStatusToTextConverter x:Key="InventoryProcessStatusToTextConverter" />
14+
<converters:IntToLetterConverter x:Key="IntToLetterConverter" />
1415
</Application.Resources>
1516
<Application.DataTemplates>
1617
<byteSync:ViewLocator/>

src/ByteSync.Client/Business/PathItems/PathItemProxy.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,17 @@ public PathItemProxy(PathItem pathItem, ILocalizationService localizationService
2525
_logger = logger;
2626

2727
PathItem = pathItem;
28-
// Code = PathItem.Code;
2928
Path = PathItem.Path;
3029
FileSystemType = PathItem.Type;
3130

3231
UpdateElementType(localizationService);
3332

3433
OpenPathCommand = ReactiveCommand.Create(OpenPath);
35-
36-
// this.WhenAnyValue(x => x.Code)
37-
// .Skip(1)
38-
// .Subscribe(code => PathItem.Code = code);
3934
}
4035

4136
public PathItem PathItem { get; } = null!;
4237

4338
public string ElementType { get; set; } = null!;
44-
45-
// [Reactive]
46-
// public string Code { get; set; }
4739

4840
public string Path { get; set; }
4941

@@ -88,15 +80,4 @@ private void OpenPath()
8880
}
8981

9082
}
91-
92-
// public static void RecodePathItems(ObservableCollection<PathItemViewModel> pathItemViewModels, string letter)
93-
// {
94-
// int cpt = 1;
95-
// foreach (var pathItem in pathItemViewModels)
96-
// {
97-
// pathItem.Code = letter + cpt;
98-
//
99-
// cpt += 1;
100-
// }
101-
// }
10283
}

src/ByteSync.Client/Business/SessionMembers/SessionMemberInfo.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,10 @@ public class SessionMemberInfo
1111
public SessionMemberPrivateData PrivateData { get; set; }
1212

1313
public string SessionId { get; set; }
14-
1514

1615
public DateTimeOffset JoinedSessionOn { get; set; }
1716

1817
public int PositionInList { get; set; }
19-
20-
public string Letter
21-
{
22-
get
23-
{
24-
return ((char) ('A' + PositionInList)).ToString();
25-
}
26-
}
2718

2819
public DateTimeOffset? LastLocalInventoryGlobalStatusUpdate { get; set; }
2920

@@ -33,8 +24,6 @@ public string Letter
3324

3425
public string? ProfileClientId { get; set; }
3526

36-
public string ClientId => Endpoint.ClientId;
37-
3827
public string ClientInstanceId => Endpoint.ClientInstanceId;
3928

4029
public string IpAddress => Endpoint.IpAddress;

src/ByteSync.Client/Interfaces/ITranslationSource.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/ByteSync.Client/Services/Communications/PushReceivers/SessionMemberPushReceiver.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ByteSync.Interfaces.Repositories;
44
using System.Reactive.Linq;
55
using ByteSync.Business.Inventories;
6+
using ByteSync.Business.SessionMembers;
67
using ByteSync.Common.Business.Sessions;
78
using ByteSync.Common.Helpers;
89
using ByteSync.Interfaces.Controls.Encryptions;
@@ -43,14 +44,18 @@ public SessionMemberPushReceiver(IHubPushHandler2 hubPushHandler2, ISessionMembe
4344
.Where(csr => _sessionService.CheckSession(csr.SessionId))
4445
.Subscribe(smi =>
4546
{
47+
var elementsToUpdate = new List<SessionMemberInfo>();
48+
4649
foreach (var anySessionMemberInfo in _sessionMemberRepository.Elements)
4750
{
4851
if (anySessionMemberInfo.JoinedSessionOn > smi.JoinedSessionOn)
4952
{
5053
anySessionMemberInfo.PositionInList -= 1;
54+
elementsToUpdate.Add(anySessionMemberInfo);
5155
}
5256
}
5357

58+
_sessionMemberRepository.AddOrUpdate(elementsToUpdate);
5459
_sessionMemberRepository.Remove(smi);
5560
});
5661

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.Globalization;
2+
using Avalonia.Data.Converters;
3+
4+
namespace ByteSync.Services.Converters;
5+
6+
public class IntToLetterConverter : IValueConverter
7+
{
8+
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
9+
{
10+
int iValue = System.Convert.ToInt32(value);
11+
12+
return ((char) ('A' + iValue)).ToString();
13+
}
14+
15+
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
16+
{
17+
if (value is string strValue && strValue.Length == 1)
18+
{
19+
char letter = strValue[0];
20+
if (char.IsLetter(letter))
21+
{
22+
return char.ToUpper(letter) - 'A';
23+
}
24+
}
25+
26+
throw new ArgumentOutOfRangeException();
27+
}
28+
}

src/ByteSync.Client/Services/Inventories/DataInventoryRunner.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using ByteSync.Models.Inventories;
2121
using ByteSync.Services.Comparisons;
2222
using ByteSync.Services.Misc;
23+
using ByteSync.Services.Sessions;
2324

2425
namespace ByteSync.Services.Inventories;
2526

@@ -398,7 +399,7 @@ private InventoryBuilder BuildInventoryBuilder(SessionMemberInfo sessionMemberIn
398399
{
399400
var cloudSessionSettings = _sessionService.CurrentSessionSettings!;
400401

401-
var inventoryBuilder = new InventoryBuilder(sessionMemberInfo.Letter, cloudSessionSettings, InventoryProcessData,
402+
var inventoryBuilder = new InventoryBuilder(sessionMemberInfo.GetLetter(), cloudSessionSettings, InventoryProcessData,
402403
endpoint, sessionMemberInfo.MachineName, FingerprintModes.Rsync);
403404
foreach (var pathItem in pathItems)
404405
{

src/ByteSync.Client/Services/Inventories/PathItemsService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using ByteSync.Interfaces.Repositories;
1212
using ByteSync.Interfaces.Services.Communications;
1313
using ByteSync.Interfaces.Services.Sessions;
14+
using ByteSync.Services.Sessions;
1415
using DynamicData;
1516

1617
namespace ByteSync.Services.Inventories;
@@ -94,7 +95,7 @@ public Task CreateAndAddPathItem(string path, FileSystemTypes fileSystemType)
9495
pathItem.ClientInstanceId = _connectionService.ClientInstanceId!;
9596

9697
var sessionMemberInfo = _sessionMemberRepository.GetCurrentSessionMember();
97-
pathItem.Code = sessionMemberInfo.Letter +
98+
pathItem.Code = sessionMemberInfo.GetLetter() +
9899
(_pathItemRepository.Elements.Count(pi => pi.BelongsTo(sessionMemberInfo)) + 1);
99100

100101
return AddPathItem(pathItem);
@@ -131,7 +132,7 @@ private void UpdateCodesForMember(SessionMemberInfo sessionMemberInfo)
131132
var i = 1;
132133
foreach (var remainingPathItem in pathItems)
133134
{
134-
remainingPathItem.Code = sessionMemberInfo.Letter + i;
135+
remainingPathItem.Code = sessionMemberInfo.GetLetter() + i;
135136
i += 1;
136137
}
137138
}

src/ByteSync.Client/Services/Profiles/SessionProfileManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using ByteSync.Interfaces.Repositories;
2121
using ByteSync.Interfaces.Services.Communications;
2222
using ByteSync.Services.Misc;
23+
using ByteSync.Services.Sessions;
2324
using Serilog;
2425

2526
namespace ByteSync.Services.Profiles;
@@ -362,7 +363,7 @@ private CloudSessionProfileDetails BuildCloudSessionProfileDetails(CloudSessionP
362363
var cloudSessionProfileMember = new CloudSessionProfileMember();
363364

364365
cloudSessionProfileMember.MachineName = sessionMemberInfo.MachineName;
365-
cloudSessionProfileMember.Letter = sessionMemberInfo.Letter;
366+
cloudSessionProfileMember.Letter = sessionMemberInfo.GetLetter();
366367
cloudSessionProfileMember.IpAddress = sessionMemberInfo.IpAddress;
367368
cloudSessionProfileMember.ProfileClientId =
368369
data.Slots
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using ByteSync.Business.SessionMembers;
2+
3+
namespace ByteSync.Services.Sessions;
4+
5+
public static class SessionMemberLetterHelper
6+
{
7+
public static string GetLetter(this SessionMemberInfo sessionMemberInfo)
8+
{
9+
return ((char) ('A' + sessionMemberInfo.PositionInList)).ToString();
10+
}
11+
}

0 commit comments

Comments
 (0)