Skip to content

Commit e89fd4d

Browse files
committed
Publisher property on Project is now optional
1 parent 2fd9814 commit e89fd4d

6 files changed

Lines changed: 11 additions & 8 deletions

File tree

src/IReadOnlyProject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ public interface IReadOnlyProject<out TDependencyCollection> : IReadOnlyEntity,
3939
/// Gets the publisher for this project.
4040
/// </summary>
4141
/// <param name="cancellationToken">A token that can be used to cancel the ongoing operation.</param>
42-
public Task<IReadOnlyPublisher> GetPublisherAsync(CancellationToken cancellationToken);
42+
public Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken);
4343
}

src/Models/Project.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public record Project : IEntity, IUserRoleCollection, IAccentColor, IProjectColl
1212
/// <summary>
1313
/// The canonical publisher for this project.
1414
/// </summary>
15-
public required Cid Publisher { get; set; }
15+
public Cid? Publisher { get; set; }
1616

1717
/// <summary>
1818
/// The name of this project.

src/Nomad/ModifiableProject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public static ModifiableProject FromHandlerConfig(NomadKuboEventStreamHandlerCon
253253
public IAsyncEnumerable<IFile> GetImageFilesAsync(CancellationToken cancellationToken) => InnerEntity.GetImageFilesAsync(cancellationToken);
254254

255255
/// <inheritdoc/>
256-
public Task<IReadOnlyPublisher> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
256+
public Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
257257

258258
/// <inheritdoc/>
259259
public IAsyncEnumerable<IReadOnlyUserRole> GetUsersAsync(CancellationToken cancellationToken) => InnerUserRoleCollection.GetUsersAsync(cancellationToken);

src/Nomad/ModifiableProjectRole.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public class ModifiableProjectRole : IModifiableProjectRole
124124
public IAsyncEnumerable<IFile> GetImageFilesAsync(CancellationToken cancellationToken) => InnerProject.GetImageFilesAsync(cancellationToken);
125125

126126
/// <inheritdoc/>
127-
public Task<IReadOnlyPublisher> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
127+
public Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
128128

129129
/// <inheritdoc/>
130130
public IAsyncEnumerable<IReadOnlyUserRole> GetUsersAsync(CancellationToken cancellationToken) => InnerProject.GetUsersAsync(cancellationToken);

src/Nomad/ReadOnlyProject.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ public static ReadOnlyProject FromHandlerConfig(NomadKuboEventStreamHandlerConfi
8484
PublisherRepository = publisherRepository,
8585
};
8686
}
87-
87+
8888
/// <summary>
8989
/// The client to use for communicating with ipfs.
9090
/// </summary>
9191
public required ICoreApi Client { get; init; }
9292

9393
/// <inheritdoc/>
9494
public required string Id { get; init; }
95-
95+
9696
/// <summary>
9797
/// The roaming project data that this handler reads.
9898
/// </summary>
@@ -205,10 +205,13 @@ public static ReadOnlyProject FromHandlerConfig(NomadKuboEventStreamHandlerConfi
205205
public IAsyncEnumerable<IFile> GetImageFilesAsync(CancellationToken cancellationToken) => InnerEntity.GetImageFilesAsync(cancellationToken);
206206

207207
/// <inheritdoc/>
208-
public async Task<IReadOnlyPublisher> GetPublisherAsync(CancellationToken cancellationToken)
208+
public async Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken)
209209
{
210210
cancellationToken.ThrowIfCancellationRequested();
211211

212+
if (Inner.Publisher is null)
213+
return null;
214+
212215
var publisherId = await Client.Dag.GetAsync<Cid>(Inner.Publisher, cancel: cancellationToken);
213216
return await PublisherRepository.GetAsync(publisherId, cancellationToken);
214217
}

src/Nomad/ReadOnlyProjectRole.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public class ReadOnlyProjectRole : IReadOnlyProjectRole
107107

108108

109109
/// <inheritdoc/>
110-
public Task<IReadOnlyPublisher> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
110+
public Task<IReadOnlyPublisher?> GetPublisherAsync(CancellationToken cancellationToken) => InnerProject.GetPublisherAsync(cancellationToken);
111111

112112

113113
/// <inheritdoc/>

0 commit comments

Comments
 (0)