Skip to content

Commit 0ef4696

Browse files
committed
fix: don't try to comment on locked posts
Fixes A-CENTRALIZED-MIRROR-1D
1 parent 5a05e13 commit 0ef4696

1 file changed

Lines changed: 32 additions & 3 deletions

File tree

BackgroundProcessor/Processors/LinkProcessor.cs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class LinkProcessor : IBackgroundProcessor
2222
private readonly TemplateCache _templateCache;
2323
private readonly IDbConnectionFactory _dbConnectionFactory;
2424
private readonly ResourceAccessManager _resourceAccessManager;
25+
private readonly SubmissionBrowser _submissionBrowser;
2526

2627
public LinkProcessor(ILogger<LinkProcessor> logger,
2728
LinkProvider linkProvider,
@@ -30,7 +31,8 @@ public LinkProcessor(ILogger<LinkProcessor> logger,
3031
UserProvider userProvider,
3132
TemplateCache templateCache,
3233
IDbConnectionFactory dbConnectionFactory,
33-
ResourceAccessManager resourceAccessManager
34+
ResourceAccessManager resourceAccessManager,
35+
SubmissionBrowser submissionBrowser
3436
)
3537
{
3638
_logger = logger;
@@ -41,6 +43,7 @@ ResourceAccessManager resourceAccessManager
4143
_templateCache = templateCache;
4244
_dbConnectionFactory = dbConnectionFactory;
4345
_resourceAccessManager = resourceAccessManager;
46+
_submissionBrowser = submissionBrowser;
4447
}
4548

4649
/// <inheritdoc />
@@ -82,6 +85,30 @@ private async Task WithLogging(string redditPostId, int queuedItemId, Func<Cance
8285
}
8386
}
8487

88+
private async Task<bool> IsCommentAbleToBePosted(LinkThing redditPostId, CancellationToken cancellationToken)
89+
{
90+
var maybeSubmission = await _submissionBrowser.GetSubmission(redditPostId);
91+
92+
if (!maybeSubmission.Try(out var submission))
93+
{
94+
_logger.LogDebug("Submission {RedditPostId} not found, skipping processing", redditPostId);
95+
return false;
96+
}
97+
98+
if (submission.IsLocked)
99+
{
100+
_logger.LogDebug("Submission {RedditPostId} is locked, skipping processing", redditPostId);
101+
return false;
102+
}
103+
else if (submission.IsArchived)
104+
{
105+
_logger.LogDebug("Submission {RedditPostId} is archived, skipping processing", redditPostId);
106+
return false;
107+
}
108+
109+
return true;
110+
}
111+
85112
private async Task ProcessLink(string redditPostId, int queuedItemId, CancellationToken cancellationToken)
86113
{
87114
var links = await _linkProvider.GetLinksByRedditPostId(redditPostId);
@@ -97,6 +124,8 @@ private async Task ProcessLink(string redditPostId, int queuedItemId, Cancellati
97124
}
98125
else
99126
{
127+
var redditPostLinkId = LinkThing.CreateFromShortId(redditPostId);
128+
100129
var message = await BuildComment(links,
101130
getUsername: async userId => (await _userProvider.FindUserByIdIncludeDeleted(userId)).Value.DisplayUsername,
102131
cancellationToken);
@@ -106,9 +135,9 @@ private async Task ProcessLink(string redditPostId, int queuedItemId, Cancellati
106135
var result = await _commentBrowser.EditComment(CommentThing.CreateFromShortId(maybeExistingComment.Value), message);
107136
await TryDistinguishStickyAndLockLogFailure(result.ParentId, result.CommentId);
108137
}
109-
else
138+
else if (await IsCommentAbleToBePosted(redditPostLinkId, cancellationToken))
110139
{
111-
var result = await _commentBrowser.SubmitComment(LinkThing.CreateFromShortId(redditPostId), message);
140+
var result = await _commentBrowser.SubmitComment(redditPostLinkId, message);
112141
await TryDistinguishStickyAndLockLogFailure(result.ParentId, result.CommentId);
113142

114143
#pragma warning disable IDISP001

0 commit comments

Comments
 (0)