aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-04-10 21:51:48 +0800
committercrupest <crupest@outlook.com>2022-04-10 21:51:48 +0800
commit9c874edbb35c87448ce91c142b127b450879e6b4 (patch)
treed712704a72fa2647b86e96321c890037603d645b /BackEnd/Timeline/Services
parent9d2056786a38558c2ecba4406e2ba172eb0c5597 (diff)
downloadtimeline-9c874edbb35c87448ce91c142b127b450879e6b4.tar.gz
timeline-9c874edbb35c87448ce91c142b127b450879e6b4.tar.bz2
timeline-9c874edbb35c87448ce91c142b127b450879e6b4.zip
...
Diffstat (limited to 'BackEnd/Timeline/Services')
-rw-r--r--BackEnd/Timeline/Services/Api/ITimelineBookmarkService1.cs6
-rw-r--r--BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs37
2 files changed, 43 insertions, 0 deletions
diff --git a/BackEnd/Timeline/Services/Api/ITimelineBookmarkService1.cs b/BackEnd/Timeline/Services/Api/ITimelineBookmarkService1.cs
index 82e4dc48..f9ee4c15 100644
--- a/BackEnd/Timeline/Services/Api/ITimelineBookmarkService1.cs
+++ b/BackEnd/Timeline/Services/Api/ITimelineBookmarkService1.cs
@@ -15,6 +15,12 @@ namespace Timeline.Services.Api
Task DeleteBookmarkAsync(long userId, long timelineId);
Task<TimelineBookmark> MoveBookmarkAsync(long userId, long timelineId, int position);
+
+ Task<TimelineVisibility> GetBookmarkVisibilityAsync(long userId);
+
+ Task SetBookmarkVisibilityAsync(long userId, TimelineVisibility visibility);
+
+ Task<bool> CanReadBookmarksAsync(long userId, long? visitorId);
}
}
diff --git a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
index 9dd3c0d7..f047a12d 100644
--- a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
+++ b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs
@@ -69,6 +69,14 @@ namespace Timeline.Services.Api
return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, position.Value);
}
+ public async Task<bool> CanReadBookmarksAsync(long userId, long? visitorId)
+ {
+ var visibility = await GetBookmarkVisibilityAsync(userId);
+ if (visibility == TimelineVisibility.Public) return true;
+ else if (visibility == TimelineVisibility.Register) return visitorId is not null;
+ else return userId == visitorId;
+ }
+
public async Task DeleteBookmarkAsync(long userId, long timelineId)
{
var entity = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId && b.TimelineId == timelineId).SingleOrDefaultAsync();
@@ -118,6 +126,14 @@ namespace Timeline.Services.Api
return new Page<TimelineBookmark>(page, pageSize, totalCount, items);
}
+ public async Task<TimelineVisibility> GetBookmarkVisibilityAsync(long userId)
+ {
+ await _userService.CheckUserExistenceAsync(userId);
+ var configEntity = await _databaseContext.UserConfigurations.Where(c => c.UserId == userId).SingleOrDefaultAsync();
+ if (configEntity is null) return TimelineVisibility.Private;
+ return configEntity.BookmarkVisibility;
+ }
+
public async Task<TimelineBookmark> MoveBookmarkAsync(long userId, long timelineId, int position)
{
var user = await _userService.GetUserAsync(userId);
@@ -162,5 +178,26 @@ namespace Timeline.Services.Api
return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, (int)entity.Rank);
}
+
+ public async Task SetBookmarkVisibilityAsync(long userId, TimelineVisibility visibility)
+ {
+ await _userService.CheckUserExistenceAsync(userId);
+ var configEntity = await _databaseContext.UserConfigurations.Where(c => c.UserId == userId).SingleOrDefaultAsync();
+ if (configEntity is null)
+ {
+ configEntity = new UserConfigurationEntity
+ {
+ UserId = userId,
+ BookmarkVisibility = visibility
+ };
+ _databaseContext.UserConfigurations.Add(configEntity);
+ }
+ else
+ {
+ configEntity.BookmarkVisibility = visibility;
+ }
+
+ await _databaseContext.SaveChangesAsync();
+ }
}
}