-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathSharedActionsGroupRepository.cs
More file actions
84 lines (65 loc) · 3.03 KB
/
SharedActionsGroupRepository.cs
File metadata and controls
84 lines (65 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System.Threading.Tasks;
using ByteSync.Business.Actions.Shared;
using ByteSync.Common.Business.Actions;
using ByteSync.Common.Business.Synchronizations;
using ByteSync.Interfaces.Repositories;
using DynamicData;
namespace ByteSync.Repositories;
public class SharedActionsGroupRepository : BaseSourceCacheRepository<SharedActionsGroup, string>, ISharedActionsGroupRepository
{
private readonly ISessionInvalidationCachePolicy<SharedActionsGroup, string> _sessionInvalidationCachePolicy;
public SharedActionsGroupRepository(ISessionInvalidationCachePolicy<SharedActionsGroup, string> sessionInvalidationCachePolicy)
{
OrganizedSharedActionsGroups = new List<SharedActionsGroup>();
_sessionInvalidationCachePolicy = sessionInvalidationCachePolicy;
_sessionInvalidationCachePolicy.Initialize(SourceCache, true, true);
}
protected override string KeySelector(SharedActionsGroup sharedAtomicAction) => sharedAtomicAction.ActionsGroupId;
public IObservableCache<SharedActionsGroup, string> SharedActionsGroups => ObservableCache;
public IEnumerable<SharedActionsGroup> SharedActionsGroupsList => SourceCache.Items;
public List<SharedActionsGroup> OrganizedSharedActionsGroups { get; private set; }
public List<ActionsGroupDefinition> GetActionsGroupsDefinitions()
{
List<ActionsGroupDefinition> result = new List<ActionsGroupDefinition>();
foreach (var sharedActionsGroup in SharedActionsGroupsList)
{
result.Add(sharedActionsGroup.GetDefinition());
}
return result;
}
public void SetSharedActionsGroups(List<SharedActionsGroup> sharedActionsGroups)
{
Clear();
AddOrUpdate(sharedActionsGroups);
}
public void SetOrganizedSharedActionsGroups(List<SharedActionsGroup> organizedSharedActionGroups)
{
OrganizedSharedActionsGroups = organizedSharedActionGroups.ToList();
}
public SharedActionsGroup GetSharedActionsGroup(string actionsGroupId)
{
var result = SourceCache.Items.Single(i => i.ActionsGroupId == actionsGroupId);
return result;
}
public Task OnSynchronizationProgressChanged(SynchronizationProgressPush synchronizationProgressPush)
{
if (synchronizationProgressPush.TrackingActionSummaries == null)
{
return Task.CompletedTask;
}
foreach (var trackingActionSummary in synchronizationProgressPush.TrackingActionSummaries)
{
var sharedActionsGroup = GetSharedActionsGroup(trackingActionSummary.ActionsGroupId);
if (trackingActionSummary.IsSuccess)
{
sharedActionsGroup.SynchronizationStatus = SynchronizationStatus.Success;
}
else if (trackingActionSummary.IsError)
{
sharedActionsGroup.SynchronizationStatus = SynchronizationStatus.Error;
}
SourceCache.AddOrUpdate(sharedActionsGroup);
}
return Task.CompletedTask;
}
}