Добавил уведомление о решении конфликта в чужом МР
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2023-02-21 13:52:21 +03:00
parent c53e2cde5e
commit d148e56cd4
Signed by: upagge
GPG Key ID: D3018BE7BA428CA6
3 changed files with 33 additions and 21 deletions

View File

@ -17,6 +17,7 @@ public class UpdateMrNotify extends MrNotify {
private final Long allResolvedTasks; private final Long allResolvedTasks;
private final Long personTasks; private final Long personTasks;
private final Long personResolvedTasks; private final Long personResolvedTasks;
private final String comment;
@Builder @Builder
private UpdateMrNotify( private UpdateMrNotify(
@ -24,21 +25,22 @@ public class UpdateMrNotify extends MrNotify {
String name, String name,
String url, String url,
String author, String author,
String projectKey, String projectName,
Long allTasks, Long allTasks,
Long allResolvedTasks, Long allResolvedTasks,
Long personTasks, Long personTasks,
Long personResolvedTasks Long personResolvedTasks,
String comment
) { ) {
super(mrId, projectKey, name, url); super(mrId, projectName, name, url);
this.author = author; this.author = author;
this.allTasks = allTasks; this.allTasks = allTasks;
this.allResolvedTasks = allResolvedTasks; this.allResolvedTasks = allResolvedTasks;
this.personTasks = personTasks; this.personTasks = personTasks;
this.personResolvedTasks = personResolvedTasks; this.personResolvedTasks = personResolvedTasks;
this.comment = comment;
} }
@Override @Override
public String getType() { public String getType() {
return TYPE; return TYPE;

View File

@ -283,17 +283,17 @@ public class MergeRequestsServiceImpl implements MergeRequestsService {
private void notifyAboutUpdate(MergeRequest oldMergeRequest, MergeRequest mergeRequest, Project project) { private void notifyAboutUpdate(MergeRequest oldMergeRequest, MergeRequest mergeRequest, Project project) {
final Long botUserGitlabId = personInformation.getId(); final Long botUserGitlabId = personInformation.getId();
if ( if (
!botUserGitlabId.equals(mergeRequest.getAuthor().getId()) // Автор MR не пользователь приложения !botUserGitlabId.equals(mergeRequest.getAuthor().getId()) // Автор MR не пользователь приложения
&& !oldMergeRequest.getDateLastCommit().equals(mergeRequest.getDateLastCommit()) // Изменилась дата последнего коммита && !oldMergeRequest.getDateLastCommit().equals(mergeRequest.getDateLastCommit()) // Изменилась дата последнего коммита
&& !mergeRequest.isConflict() // MR не находится в состоянии конфликта && !mergeRequest.isConflict() // MR не находится в состоянии конфликта
&& !botUserGitlabId.equals(oldMergeRequest.getAuthor().getId()) // и MR создан НЕ пользователем бота
) { ) {
long allTask = 0; long allTask = 0;
long resolvedTask = 0; long resolvedTask = 0;
long allYouTasks = 0; long allYouTasks = 0;
long resolvedYouTask = 0; long resolvedYouTask = 0;
final List<Discussion> discussions = discussionService.getAllByMergeRequestId(oldMergeRequest.getId()); final List<Discussion> discussions = discussionService.getAllByMergeRequestId(oldMergeRequest.getId());
for (Discussion discussion : discussions) { for (Discussion discussion : discussions) {
if (checkNotNull(discussion.getResponsible())) { if (checkNotNull(discussion.getResponsible())) {
@ -310,19 +310,23 @@ public class MergeRequestsServiceImpl implements MergeRequestsService {
} }
} }
} }
notifyService.send(
UpdateMrNotify.builder() final UpdateMrNotify.UpdateMrNotifyBuilder notifyBuilder = UpdateMrNotify.builder()
.mrId(oldMergeRequest.getId()) .mrId(oldMergeRequest.getId())
.author(oldMergeRequest.getAuthor().getName()) .author(oldMergeRequest.getAuthor().getName())
.name(oldMergeRequest.getTitle()) .name(oldMergeRequest.getTitle())
.projectKey(project.getName()) .projectName(project.getName())
.url(oldMergeRequest.getWebUrl()) .url(oldMergeRequest.getWebUrl())
.allTasks(allTask) .allTasks(allTask)
.allResolvedTasks(resolvedTask) .allResolvedTasks(resolvedTask)
.personTasks(allYouTasks) .personTasks(allYouTasks)
.personResolvedTasks(resolvedYouTask) .personResolvedTasks(resolvedYouTask);
.build()
); if (oldMergeRequest.isConflict() && !mergeRequest.isConflict()) {
notifyBuilder.comment("The conflict has been resolved");
}
notifyService.send(notifyBuilder.build());
} }
} }

View File

@ -14,6 +14,7 @@ import static dev.struchkov.godfather.main.domain.keyboard.simple.SimpleKeyBoard
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
import static dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard.inlineKeyBoard; import static dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard.inlineKeyBoard;
import static dev.struchkov.godfather.telegram.domain.keyboard.button.UrlButton.urlButton; import static dev.struchkov.godfather.telegram.domain.keyboard.button.UrlButton.urlButton;
import static dev.struchkov.haiti.utils.Checker.checkNotBlank;
import static dev.struchkov.haiti.utils.Checker.checkNotNull; import static dev.struchkov.haiti.utils.Checker.checkNotNull;
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown; import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
@ -27,11 +28,16 @@ public class UpdateMrNotifyGenerator implements NotifyBoxAnswerGenerator<UpdateM
.append(Icons.HR) .append(Icons.HR)
.append(notify.getTitle()); .append(notify.getTitle());
if (notify.getAllTasks() > 0) { if (checkNotBlank(notify.getComment())) {
builder.append(Icons.HR)
.append(notify.getComment());
}
if (checkNotNull(notify.getAllTasks()) && notify.getAllTasks() > 0) {
builder.append(Icons.HR) builder.append(Icons.HR)
.append("All tasks: ").append(notify.getAllResolvedTasks()).append("/").append(notify.getAllTasks()); .append("All tasks: ").append(notify.getAllResolvedTasks()).append("/").append(notify.getAllTasks());
if (notify.getPersonTasks() > 0) { if (checkNotNull(notify.getPersonTasks()) && notify.getPersonTasks() > 0) {
builder.append("\nYour tasks: ").append(notify.getPersonResolvedTasks()).append("/").append(notify.getPersonTasks()); builder.append("\nYour tasks: ").append(notify.getPersonResolvedTasks()).append("/").append(notify.getPersonTasks());
} }
} }