From 9c874edbb35c87448ce91c142b127b450879e6b4 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 10 Apr 2022 21:51:48 +0800 Subject: ... --- .../Services/Api/TimelineBookmarkService1.cs | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs') 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 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(page, pageSize, totalCount, items); } + public async Task 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 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(); + } } } -- cgit v1.2.3