Skip to content

Commit 2968930

Browse files
committed
Implement IFlushable interface in ModifiableProject, ModifiablePublisher, and ModifiableUser classes
1 parent 2443bf4 commit 2968930

3 files changed

Lines changed: 27 additions & 5 deletions

File tree

src/Nomad/ModifiableProject.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace WindowsAppCommunity.Sdk.Nomad;
1515
/// <summary>
1616
/// Represents a project that can be modified.
1717
/// </summary>
18-
public class ModifiableProject : NomadKuboEventStreamHandler<ValueUpdateEvent>, IDelegable<Project>, IModifiableProject
18+
public class ModifiableProject : NomadKuboEventStreamHandler<ValueUpdateEvent>, IDelegable<Project>, IModifiableProject, IFlushable
1919
{
2020
/// <summary>
2121
/// Creates a new instance of <see cref="ModifiableProject"/> from the specified handler configuration.
@@ -504,4 +504,11 @@ public override async Task ResetEventStreamPositionAsync(CancellationToken cance
504504
await InnerUserRoleCollection.ResetEventStreamPositionAsync(cancellationToken);
505505
await ((ModifiableProjectCollection)Dependencies).ResetEventStreamPositionAsync(cancellationToken);
506506
}
507+
508+
/// <inheritdoc/>
509+
public async Task FlushAsync(CancellationToken cancellationToken)
510+
{
511+
await this.PublishLocalAsync<ModifiableProject, ValueUpdateEvent>(cancellationToken);
512+
await this.PublishRoamingAsync<ModifiableProject, ValueUpdateEvent, Project>(cancellationToken);
513+
}
507514
}

src/Nomad/ModifiablePublisher.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/// <summary>
1616
/// A modifiable event stream handler for modifying roaming publisher data.
1717
/// </summary>
18-
public class ModifiablePublisher : NomadKuboEventStreamHandler<ValueUpdateEvent>, IDelegable<Publisher>, IModifiablePublisher
18+
public class ModifiablePublisher : NomadKuboEventStreamHandler<ValueUpdateEvent>, IDelegable<Publisher>, IModifiablePublisher, IFlushable
1919
{
2020
/// <summary>
2121
/// Creates a new instance of <see cref="ModifiablePublisher"/> from the specified handler configuration.
@@ -238,7 +238,7 @@ public static ModifiablePublisher FromHandlerConfig(NomadKuboEventStreamHandlerC
238238
public bool? ForgetMe => InnerEntity.ForgetMe;
239239

240240
/// <inheritdoc/>
241-
public bool IsUnlisted => InnerEntity.IsUnlisted;
241+
public bool IsUnlisted => InnerEntity.IsUnlisted;
242242

243243
/// <inheritdoc/>
244244
public Link[] Links => InnerEntity.Links;
@@ -415,7 +415,8 @@ public override async Task ApplyEntryUpdateAsync(EventStreamEntry<DagCid> stream
415415
break;
416416
default:
417417
throw new NotImplementedException();
418-
};
418+
}
419+
;
419420
}
420421

421422
/// <inheritdoc/>
@@ -430,4 +431,11 @@ public override async Task ResetEventStreamPositionAsync(CancellationToken cance
430431
await ((ModifiablePublisherCollection)ParentPublishers).ResetEventStreamPositionAsync(cancellationToken);
431432
await ((ModifiablePublisherCollection)ChildPublishers).ResetEventStreamPositionAsync(cancellationToken);
432433
}
434+
435+
/// <inheritdoc/>
436+
public async Task FlushAsync(CancellationToken cancellationToken)
437+
{
438+
await this.PublishLocalAsync<ModifiablePublisher, ValueUpdateEvent>(cancellationToken);
439+
await this.PublishRoamingAsync<ModifiablePublisher, ValueUpdateEvent, Publisher>(cancellationToken);
440+
}
433441
}

src/Nomad/ModifiableUser.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace WindowsAppCommunity.Sdk.Nomad;
1414
/// <summary>
1515
/// Represents a user that can be modified.
1616
/// </summary>
17-
public class ModifiableUser : NomadKuboEventStreamHandler<ValueUpdateEvent>, IModifiableUser, IDelegable<User>
17+
public class ModifiableUser : NomadKuboEventStreamHandler<ValueUpdateEvent>, IModifiableUser, IDelegable<User>, IFlushable
1818
{
1919
/// <summary>
2020
/// Creates a new instance of the <see cref="ModifiableUser"/> class from the given handler configuration.
@@ -351,4 +351,11 @@ public override async Task ResetEventStreamPositionAsync(CancellationToken cance
351351
await InnerPublisherRoles.ResetEventStreamPositionAsync(cancellationToken);
352352
await InnerProjectRoles.ResetEventStreamPositionAsync(cancellationToken);
353353
}
354+
355+
/// <inheritdoc/>
356+
public async Task FlushAsync(CancellationToken cancellationToken)
357+
{
358+
await this.PublishLocalAsync<ModifiableUser, ValueUpdateEvent>(cancellationToken);
359+
await this.PublishRoamingAsync<ModifiableUser, ValueUpdateEvent, User>(cancellationToken);
360+
}
354361
}

0 commit comments

Comments
 (0)