diff options
author | crupest <crupest@outlook.com> | 2021-02-13 15:57:29 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-02-13 15:57:29 +0800 |
commit | 2d9ca08366d91c22877cee143f43a062d4efda2d (patch) | |
tree | fe1aaea4f34c227b2bcf5fdad77c7e2a85b7923b | |
parent | 57b95cf3c53c0248355ffa46214224cdba4bf79b (diff) | |
download | timeline-2d9ca08366d91c22877cee143f43a062d4efda2d.tar.gz timeline-2d9ca08366d91c22877cee143f43a062d4efda2d.tar.bz2 timeline-2d9ca08366d91c22877cee143f43a062d4efda2d.zip |
feat: Timeline add postable.
-rw-r--r-- | BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs | 4 | ||||
-rw-r--r-- | BackEnd/Timeline/Models/Http/HttpTimeline.cs | 4 | ||||
-rw-r--r-- | BackEnd/Timeline/Models/Mapper/TimelineMapper.cs | 11 |
3 files changed, 17 insertions, 2 deletions
diff --git a/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs index be00b595..e2ce8875 100644 --- a/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs +++ b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs @@ -416,18 +416,20 @@ namespace Timeline.Tests.IntegratedTests [Theory]
[MemberData(nameof(TimelineNameGeneratorTestData))]
- public async Task Get_Manageable(TimelineNameGenerator generator)
+ public async Task Get_Manageable_Postable(TimelineNameGenerator generator)
{
{
using var client = await CreateClientAsUser();
var timeline = await client.TestGetAsync<HttpTimeline>($"timelines/{generator(1)}");
timeline.Manageable.Should().Be(true);
+ timeline.Postable.Should().Be(true);
}
{
using var client = await CreateClientAs(2);
var timeline = await client.TestGetAsync<HttpTimeline>($"timelines/{generator(1)}");
timeline.Manageable.Should().Be(false);
+ timeline.Postable.Should().Be(false);
}
}
}
diff --git a/BackEnd/Timeline/Models/Http/HttpTimeline.cs b/BackEnd/Timeline/Models/Http/HttpTimeline.cs index 8a865f96..e3e46bd5 100644 --- a/BackEnd/Timeline/Models/Http/HttpTimeline.cs +++ b/BackEnd/Timeline/Models/Http/HttpTimeline.cs @@ -10,7 +10,7 @@ namespace Timeline.Models.Http {
public HttpTimeline() { }
- public HttpTimeline(string uniqueId, string title, string name, DateTime nameLastModifed, string description, HttpUser owner, TimelineVisibility visibility, List<HttpUser> members, string? color, DateTime createTime, DateTime lastModified, bool isHighlight, bool isBookmark, bool manageable, HttpTimelineLinks links)
+ public HttpTimeline(string uniqueId, string title, string name, DateTime nameLastModifed, string description, HttpUser owner, TimelineVisibility visibility, List<HttpUser> members, string? color, DateTime createTime, DateTime lastModified, bool isHighlight, bool isBookmark, bool manageable, bool postable, HttpTimelineLinks links)
{
UniqueId = uniqueId;
Title = title;
@@ -26,6 +26,7 @@ namespace Timeline.Models.Http IsHighlight = isHighlight;
IsBookmark = isBookmark;
Manageable = manageable;
+ Postable = postable;
_links = links;
}
@@ -80,6 +81,7 @@ namespace Timeline.Models.Http public bool IsBookmark { get; set; }
public bool Manageable { get; set; }
+ public bool Postable { get; set; }
#pragma warning disable CA1707 // Identifiers should not contain underscores
/// <summary>
diff --git a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs index 8dfd7b8d..e4304311 100644 --- a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs +++ b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs @@ -51,6 +51,16 @@ namespace Timeline.Models.Mapper manageable = await _timelineService.HasManagePermission(entity.Id, userId.Value);
}
+ bool postable;
+ if (userId is null)
+ {
+ postable = false;
+ }
+ else
+ {
+ postable = await _timelineService.IsMemberOf(entity.Id, userId.Value);
+ }
+
return new HttpTimeline(
uniqueId: entity.UniqueId,
title: string.IsNullOrEmpty(entity.Title) ? timelineName : entity.Title,
@@ -66,6 +76,7 @@ namespace Timeline.Models.Mapper isHighlight: await _highlightTimelineService.IsHighlightTimeline(entity.Id),
isBookmark: userId is not null && await _bookmarkTimelineService.IsBookmark(userId.Value, entity.Id, false, false),
manageable: manageable,
+ postable: postable,
links: new HttpTimelineLinks(
self: urlHelper.ActionLink(nameof(TimelineController.TimelineGet), nameof(TimelineController)[0..^nameof(Controller).Length], new { timeline = timelineName }),
posts: urlHelper.ActionLink(nameof(TimelinePostController.List), nameof(TimelinePostController)[0..^nameof(Controller).Length], new { timeline = timelineName })
|