mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-15 20:16:34 +00:00
added mod mail thread notification, if a user initiates a mod mail thread
added the concept of a mod mail role, these are roles being pinged when a thread is opened, and they also are able to execute mod mail related commands fixed past thread count in mod mail header added convenience method to allow a role to execute a whole feature
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package dev.sheldan.abstracto.modmail.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Builder
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table(name = "modmail_roles")
|
||||
@Cacheable
|
||||
@Getter
|
||||
@Setter
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
public class ModMailRole {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long modMailRoleId;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "modmail_role_server", nullable = false)
|
||||
private AServer server;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "modmail_role", nullable = false)
|
||||
private ARole role;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.modmail.models.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.FullUser;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.modmail.models.database.ModMailRole;
|
||||
import dev.sheldan.abstracto.modmail.models.database.ModMailThread;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class ModMailNotificationModel extends ServerContext {
|
||||
private ModMailThread modMailThread;
|
||||
private FullUser threadUser;
|
||||
private List<ModMailRole> roles;
|
||||
}
|
||||
@@ -12,5 +12,5 @@ import lombok.Setter;
|
||||
public class ModMailThreaderHeader {
|
||||
private FullUser threadUser;
|
||||
private ModMailThread latestModMailThread;
|
||||
private Long pastModMailThreads;
|
||||
private Long pastModMailThreadCount;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.modmail.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
|
||||
public interface ModMailRoleService {
|
||||
void addRoleToModMailRoles(ARole role, AServer server);
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
|
||||
public interface ModMailThreadService {
|
||||
void createModMailThreadForUser(FullUser userInAServer, MessageChannel feedBackChannel);
|
||||
void createModMailThreadForUser(FullUser userInAServer, MessageChannel feedBackChannel, Boolean userInitiated);
|
||||
boolean hasOpenThread(AUserInAServer aUserInAServer);
|
||||
boolean hasOpenThread(AUser user);
|
||||
void setModMailCategoryTo(AServer server, Long categoryId);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.modmail.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.modmail.models.database.ModMailRole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ModMailRoleManagementService {
|
||||
void addRoleToModMailRoles(ARole role, AServer server);
|
||||
List<ModMailRole> getRolesForServer(AServer server);
|
||||
boolean isRoleAlreadyAssigned(ARole role, AServer server);
|
||||
}
|
||||
@@ -17,7 +17,7 @@ public interface ModMailThreadManagementService {
|
||||
ModMailThread getOpenModmailThreadForUser(AUser user);
|
||||
List<ModMailThread> getModMailThreadForUser(AUserInAServer aUserInAServer);
|
||||
ModMailThread getLatestModMailThread(AUserInAServer aUserInAServer);
|
||||
void createModMailThread(AUserInAServer userInAServer, AChannel channel);
|
||||
ModMailThread createModMailThread(AUserInAServer userInAServer, AChannel channel);
|
||||
void setModMailThreadState(ModMailThread modMailThread, ModMailThreadState newState);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user