From 40df655a8d9b85a7f08ab221d5f85aaa20d7272e Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 7 Mar 2020 23:58:21 +0800 Subject: ... --- Timeline/Services/TimelineService.cs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'Timeline/Services/TimelineService.cs') diff --git a/Timeline/Services/TimelineService.cs b/Timeline/Services/TimelineService.cs index edd0a0ab..ff2532ea 100644 --- a/Timeline/Services/TimelineService.cs +++ b/Timeline/Services/TimelineService.cs @@ -432,10 +432,20 @@ namespace Timeline.Services if (entity.Content != null) // otherwise it is deleted { var author = Mapper.Map(await UserService.GetUserById(entity.AuthorId)); + + var type = entity.ContentType; + + ITimelinePostContent content = type switch + { + TimelinePostContentTypes.Text => new TextTimelinePostContent(entity.Content), + TimelinePostContentTypes.Image => new ImageTimelinePostContent(entity.Content), + _ => throw new DatabaseCorruptedException(string.Format(CultureInfo.InvariantCulture, ExceptionDatabaseUnknownContentType, type)) + }; + posts.Add(new TimelinePostInfo { Id = entity.LocalId, - Content = entity.Content, + Content = content, Author = author, Time = entity.Time, LastUpdated = entity.LastUpdated @@ -544,10 +554,22 @@ namespace Timeline.Services if (post == null) throw new TimelinePostNotExistException(id); + string? dataTag = null; + + if (post.ContentType == TimelinePostContentTypes.Image) + { + dataTag = post.Content; + } + post.Content = null; post.LastUpdated = Clock.GetCurrentTime(); await Database.SaveChangesAsync(); + + if (dataTag != null) + { + await DataManager.FreeEntry(dataTag); + } } public async Task ChangeProperty(string name, TimelinePatchRequest newProperties) -- cgit v1.2.3