mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-13 18:23:44 +00:00
fixed initial setup for mod mail category
fixed setup for locking added exception message in case the modmail post target is not defined
This commit is contained in:
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.modmail.service;
|
||||
|
||||
import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
|
||||
import com.jagrosh.jdautilities.menu.ButtonMenu;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetException;
|
||||
import dev.sheldan.abstracto.core.models.FullGuild;
|
||||
import dev.sheldan.abstracto.core.models.FullUser;
|
||||
import dev.sheldan.abstracto.core.models.database.*;
|
||||
@@ -306,7 +307,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeModMailThread(ModMailThread modMailThread, MessageChannel feedBack, String note, Boolean notifyUser) {
|
||||
public synchronized void closeModMailThread(ModMailThread modMailThread, MessageChannel feedBack, String note, Boolean notifyUser) {
|
||||
List<ModMailMessage> modMailMessages = modMailThread.getMessages();
|
||||
List<CompletableFuture<Message>> messages = modMailMessageService.loadModMailMessages(modMailMessages);
|
||||
Long modMailThreadId = modMailThread.getId();
|
||||
@@ -322,13 +323,21 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
if(throwable != null) {
|
||||
log.warn("Failed to load some mod mail messages for mod mail thread {}. Still trying to post the ones we got.", modMailThreadId, throwable);
|
||||
}
|
||||
self.logModMailThread(modMailThreadId, messages, note).thenRun(() -> {
|
||||
self.afterSuccessfulLog(modMailThreadId, feedBack, notifyUser);
|
||||
}).exceptionally(innerThrowable -> {
|
||||
sendModMailFailure("modmail_exception_generic", modMailThread.getUser(), modMailThreadId, feedBack, innerThrowable);
|
||||
log.error("Failed to log messages for mod mail thread {}.", modMailThreadId, innerThrowable);
|
||||
return null;
|
||||
});
|
||||
try {
|
||||
self.logModMailThread(modMailThreadId, messages, note).thenRun(() -> {
|
||||
self.afterSuccessfulLog(modMailThreadId, feedBack, notifyUser);
|
||||
}).exceptionally(innerThrowable -> {
|
||||
sendModMailFailure("modmail_exception_generic", modMailThread.getUser(), modMailThreadId, feedBack, innerThrowable);
|
||||
log.error("Failed to log messages for mod mail thread {}.", modMailThreadId, innerThrowable);
|
||||
return null;
|
||||
});
|
||||
} catch (PostTargetException po) {
|
||||
log.error("Failed to log mod mail messages", po);
|
||||
sendModMailFailure("modmail_exception_post_target_not_defined", modMailThread.getUser(), modMailThreadId, feedBack, po);
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to log mod mail messages", e);
|
||||
sendModMailFailure("modmail_exception_generic", modMailThread.getUser(), modMailThreadId, feedBack, e);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"author": {
|
||||
"name": "${user.member.effectiveName}",
|
||||
"avatar": "${user.member.user.effectiveAvatarUrl}"
|
||||
},
|
||||
"color" : {
|
||||
"r": 200,
|
||||
"g": 0,
|
||||
"b": 255
|
||||
},
|
||||
"description": "<#include "modmail_post_target_error">"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.LockService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Component
|
||||
public class LockStartupListener {
|
||||
|
||||
@Autowired
|
||||
private LockService lockService;
|
||||
|
||||
@EventListener
|
||||
@Transactional
|
||||
public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) {
|
||||
lockService.setupLocks();
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,5 @@ import javax.persistence.*;
|
||||
public class ALock {
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.TableLocks;
|
||||
import dev.sheldan.abstracto.core.model.database.ALock;
|
||||
import dev.sheldan.abstracto.core.repository.LockRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -16,4 +17,17 @@ public class LockServiceBean implements LockService {
|
||||
int ordinal = toLock.ordinal();
|
||||
lockRepository.findArticleForRead((long) ordinal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupLocks() {
|
||||
for (TableLocks lo :TableLocks.values()) {
|
||||
if(!lockRepository.existsById((long)lo.ordinal())) {
|
||||
ALock build = ALock
|
||||
.builder()
|
||||
.id((long) lo.ordinal())
|
||||
.build();
|
||||
lockRepository.save(build);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.service;
|
||||
import dev.sheldan.abstracto.core.config.DynamicKeyLoader;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetException;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
@@ -70,7 +71,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
return postTarget;
|
||||
} else {
|
||||
log.error("PostTarget {} in server {} was not found!", postTargetName, serverId);
|
||||
throw new ChannelException(String.format("Incorrect post target configuration: Post target %s was not found.", postTargetName));
|
||||
throw new PostTargetException(String.format("Incorrect post target configuration: Post target %s was not found.", postTargetName));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@ import dev.sheldan.abstracto.core.command.models.TableLocks;
|
||||
|
||||
public interface LockService {
|
||||
void lockTable(TableLocks toLock);
|
||||
void setupLocks();
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Post target `modmaillog` was not found.
|
||||
Reference in New Issue
Block a user