Skip to content

Commit 88d5a08

Browse files
committed
Fixes, added remaining project tests
1 parent c283b6f commit 88d5a08

11 files changed

Lines changed: 698 additions & 178 deletions

src/Nomad/ModifiableEntity.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.Diagnostics;
23
using CommunityToolkit.Diagnostics;
34
using Ipfs;
45
using OwlCore.ComponentModel;

src/Nomad/ModifiableImagesCollection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,15 @@ public async Task ApplyEntryUpdateAsync(EventStreamEntry<DagCid> eventStreamEntr
116116
{
117117
case nameof(AddImageAsync):
118118
{
119-
var imageFile = await Inner.GetAsync(image.Id, cancellationToken);
120119
Inner.Inner.Images = [.. Inner.Inner.Images, image];
120+
var imageFile = await Inner.GetAsync(image.Id, cancellationToken);
121121
ImagesAdded?.Invoke(this, [imageFile]);
122122
break;
123123
}
124124
case nameof(RemoveImageAsync):
125125
{
126-
var imageFile = await Inner.GetAsync(image.Id, cancellationToken);
127126
Inner.Inner.Images = [.. Inner.Inner.Images.Except([image])];
127+
var imageFile = await Inner.GetAsync(image.Id, cancellationToken);
128128
ImagesRemoved?.Invoke(this, [imageFile]);
129129
break;
130130
}

src/Nomad/ModifiableProject.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
116116
{
117117
Id = handlerConfig.RoamingKey.Id,
118118
EventStreamHandlerId = handlerConfig.RoamingKey.Id,
119-
Inner = handlerConfig.RoamingValue,
120119
InnerProject = readOnlyProject,
121120
InnerEntity = modifiableEntity,
122121
InnerAccentColor = modifiableAccentColor,
@@ -158,7 +157,7 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
158157
/// <summary>
159158
/// The roaming project data that this handler modifies.
160159
/// </summary>
161-
public required Project Inner { get; init; }
160+
public Project Inner => InnerProject.Inner;
162161

163162
/// <inheritdoc/>
164163
public required IModifiableProjectCollection<IReadOnlyProject> Dependencies { get; init; }
@@ -175,7 +174,7 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
175174
public string Category => InnerProject.Category;
176175

177176
/// <inheritdoc/>
178-
public string Name => InnerProject.Category;
177+
public string Name => InnerProject.Name;
179178

180179
/// <inheritdoc/>
181180
public string Description => InnerProject.Description;
@@ -201,10 +200,10 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
201200
/// <inheritdoc/>
202201
public string[] Features => InnerProject.Features;
203202

204-
/// <inheritdoc/>
203+
/// <inheritdoc cref="WindowsAppCommunity.Sdk.IReadOnlyProject.CategoryUpdated" />
205204
public event EventHandler<string>? CategoryUpdated;
206205

207-
/// <inheritdoc/>
206+
/// <inheritdoc cref="WindowsAppCommunity.Sdk.IReadOnlyProject.PublisherUpdated" />
208207
public event EventHandler<IReadOnlyPublisher>? PublisherUpdated;
209208

210209
/// <inheritdoc/>
@@ -252,7 +251,7 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
252251
/// <inheritdoc/>
253252
public IAsyncEnumerable<IFile> GetImageFilesAsync(CancellationToken cancellationToken) => InnerEntity.GetImageFilesAsync(cancellationToken);
254253

255-
/// <inheritdoc/>
254+
/// <inheritdoc cref="IReadOnlyProject{TDependencyCollection}.GetPublisherAsync" />
256255
public Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
257256

258257
/// <inheritdoc/>
@@ -267,15 +266,23 @@ public async Task UpdatePublisherAsync(IReadOnlyPublisher publisher, Cancellatio
267266
var updateEvent = new ValueUpdateEvent(null, (DagCid)valueCid, false);
268267

269268
var appendedEntry = await AppendNewEntryAsync(targetId: EventStreamHandlerId, eventId: nameof(UpdatePublisherAsync), updateEvent, DateTime.UtcNow, cancellationToken);
270-
await ApplyPublisherUpdateEntryUpdateAsync(appendedEntry, updateEvent, publisher.Id, cancellationToken);
269+
await ApplyPublisherUpdateEntryUpdateAsync(appendedEntry, updateEvent, publisher.Id, publisher, cancellationToken);
271270

272271
EventStreamPosition = appendedEntry;
273272
}
274273

275274
/// <inheritdoc/>
276-
public Task UpdateCategoryAsync(string category, CancellationToken cancellationToken)
275+
public async Task UpdateCategoryAsync(string category, CancellationToken cancellationToken)
277276
{
278-
throw new NotImplementedException();
277+
cancellationToken.ThrowIfCancellationRequested();
278+
279+
var valueCid = await Client.Dag.PutAsync(category, pin: KuboOptions.ShouldPin, cancel: cancellationToken);
280+
var updateEvent = new ValueUpdateEvent(null, (DagCid)valueCid, false);
281+
282+
var appendedEntry = await AppendNewEntryAsync(targetId: EventStreamHandlerId, eventId: nameof(UpdateCategoryAsync), updateEvent, DateTime.UtcNow, cancellationToken);
283+
await ApplyCategoryEntryUpdateAsync(appendedEntry, updateEvent, category, cancellationToken);
284+
285+
EventStreamPosition = appendedEntry;
279286
}
280287

281288
/// <inheritdoc/>
@@ -415,7 +422,6 @@ public override async Task ApplyEntryUpdateAsync(EventStreamEntry<DagCid> stream
415422
;
416423
}
417424

418-
/// <inheritdoc />
419425
internal Task ApplyFeatureAddEntryUpdateAsync(EventStreamEntry<DagCid> streamEntry, ValueUpdateEvent updateEvent, string addedFeature, CancellationToken cancellationToken)
420426
{
421427
cancellationToken.ThrowIfCancellationRequested();
@@ -425,8 +431,7 @@ internal Task ApplyFeatureAddEntryUpdateAsync(EventStreamEntry<DagCid> streamEnt
425431
FeaturesAdded?.Invoke(this, [addedFeature]);
426432
return Task.CompletedTask;
427433
}
428-
429-
/// <inheritdoc />
434+
430435
internal Task ApplyFeatureRemoveEntryUpdateAsync(EventStreamEntry<DagCid> streamEntry, ValueUpdateEvent updateEvent, string removedFeature, CancellationToken cancellationToken)
431436
{
432437
cancellationToken.ThrowIfCancellationRequested();
@@ -437,7 +442,6 @@ internal Task ApplyFeatureRemoveEntryUpdateAsync(EventStreamEntry<DagCid> stream
437442
return Task.CompletedTask;
438443
}
439444

440-
/// <inheritdoc />
441445
internal async Task ApplyPublisherUpdateEntryUpdateAsync(EventStreamEntry<DagCid> streamEntry, ValueUpdateEvent updateEvent, string publisherId, CancellationToken cancellationToken)
442446
{
443447
cancellationToken.ThrowIfCancellationRequested();
@@ -447,7 +451,6 @@ internal async Task ApplyPublisherUpdateEntryUpdateAsync(EventStreamEntry<DagCid
447451
await ApplyPublisherUpdateEntryUpdateAsync(streamEntry, updateEvent, publisherId, publisher, cancellationToken);
448452
}
449453

450-
/// <inheritdoc />
451454
internal Task ApplyPublisherUpdateEntryUpdateAsync(EventStreamEntry<DagCid> streamEntry, ValueUpdateEvent updateEvent, string publisherId, IReadOnlyPublisher updatedPublisher, CancellationToken cancellationToken)
452455
{
453456
cancellationToken.ThrowIfCancellationRequested();

src/Nomad/ModifiablePublisher.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ public static ModifiablePublisher FromHandlerConfig(NomadKuboEventStreamHandlerC
149149
ChildPublishers = childPublishers,
150150
Client = client,
151151
KuboOptions = kuboOptions,
152-
Inner = handlerConfig.RoamingValue,
153152
RoamingKey = handlerConfig.RoamingKey,
154153
LocalEventStream = handlerConfig.LocalValue,
155154
LocalEventStreamKey = handlerConfig.LocalKey,
@@ -189,7 +188,7 @@ public static ModifiablePublisher FromHandlerConfig(NomadKuboEventStreamHandlerC
189188
/// <summary>
190189
/// The roaming project data that this handler modifies.
191190
/// </summary>
192-
public required Publisher Inner { get; init; }
191+
public Publisher Inner => InnerPublisher.Inner;
193192

194193
/// <inheritdoc/>
195194
public required IModifiablePublisherCollection<IReadOnlyPublisher> ParentPublishers { get; init; }

src/Nomad/ModifiableUser.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using CommunityToolkit.Diagnostics;
33
using Ipfs;
44
using Ipfs.CoreApi;
5+
using OwlCore.ComponentModel;
56
using OwlCore.Nomad;
67
using OwlCore.Nomad.Kubo;
78
using OwlCore.Nomad.Kubo.Events;
@@ -13,7 +14,7 @@ namespace WindowsAppCommunity.Sdk.Nomad;
1314
/// <summary>
1415
/// Represents a user that can be modified.
1516
/// </summary>
16-
public class ModifiableUser : NomadKuboEventStreamHandler<ValueUpdateEvent>, IModifiableUser
17+
public class ModifiableUser : NomadKuboEventStreamHandler<ValueUpdateEvent>, IModifiableUser, IDelegable<User>
1718
{
1819
/// <summary>
1920
/// Creates a new instance of the <see cref="ModifiableUser"/> class from the given handler configuration.
@@ -116,6 +117,11 @@ public static ModifiableUser FromHandlerConfig(NomadKuboEventStreamHandlerConfig
116117
/// <inheritdoc/>
117118
public required string Id { get; init; }
118119

120+
/// <summary>
121+
/// The roaming user data that this handler modifies.
122+
/// </summary>
123+
public User Inner => InnerUser.Inner;
124+
119125
/// <summary>
120126
/// The handler for reading user data.
121127
/// </summary>

src/Nomad/ReadOnlyProject.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ public static ReadOnlyProject FromHandlerConfig(NomadKuboEventStreamHandlerConfi
212212
if (Inner.Publisher is null)
213213
return null;
214214

215-
var publisherId = await Client.Dag.GetAsync<Cid>(Inner.Publisher, cancel: cancellationToken);
216-
return await PublisherRepository.GetAsync(publisherId, cancellationToken);
215+
return await PublisherRepository.GetAsync(Inner.Publisher, cancellationToken);
217216
}
218217

219218
/// <inheritdoc/>

0 commit comments

Comments
 (0)