commit 9c0c3cc3a0c714b1812d086fe2829d238af45fe0
parent f450de2ac6c9f24b40a042e3022c5748c267e398
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 19 Feb 2025 15:10:30 -0800
add button to delete all user unused invitations
Diffstat:
4 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/pkg/database/database.go b/pkg/database/database.go
@@ -67,6 +67,7 @@ type IDkfDB interface {
DeleteAllChatInbox(userID UserID) error
DeleteAllNotifications(userID UserID) error
DeleteAllSessionNotifications(sessionToken string) error
+ DeleteAllUserUnusedInvitations(userID UserID) (err error)
DeleteChatInboxMessageByChatMessageID(chatMessageID int64) error
DeleteChatInboxMessageByID(messageID int64) error
DeleteChatMessageByUUID(messageUUID string) error
diff --git a/pkg/database/tableInvitations.go b/pkg/database/tableInvitations.go
@@ -37,6 +37,11 @@ func (d *DkfDB) CreateInvitation(userID UserID) (out Invitation, err error) {
return
}
+func (d *DkfDB) DeleteAllUserUnusedInvitations(userID UserID) (err error) {
+ err = d.db.Delete(&Invitation{}, "owner_user_id = ? AND invitee_user_id == 1", userID).Error
+ return
+}
+
func (d *DkfDB) GetUnusedInvitationByToken(token string) (out Invitation, err error) {
err = d.db.First(&out, "token = ? AND invitee_user_id == 1", token).Error
return
diff --git a/pkg/web/handlers/settings.go b/pkg/web/handlers/settings.go
@@ -969,8 +969,11 @@ func SettingsInvitationsHandler(c echo.Context) error {
data.DkfOnion = config.DkfOnion
if c.Request().Method == http.MethodPost {
- if _, err := db.CreateInvitation(authUser.ID); err != nil {
- logrus.Error(err)
+ formName := c.Request().PostFormValue("formName")
+ if formName == "createInvitation" {
+ utils.LogErr2(db.CreateInvitation(authUser.ID))
+ } else if formName == "deleteAll" {
+ utils.LogErr(db.DeleteAllUserUnusedInvitations(authUser.ID))
}
return c.Redirect(http.StatusFound, "/settings/invitations")
}
diff --git a/pkg/web/public/views/pages/settings/invitations.gohtml b/pkg/web/public/views/pages/settings/invitations.gohtml
@@ -9,13 +9,22 @@
{{ t "Invitations" . }}
</div>
<div class="card-body">
- <form method="post">
+ <form method="post" class="d-inline-block">
<input type="hidden" name="csrf" value="{{ .CSRF }}" />
+ <input type="hidden" name="formName" value="createInvitation" />
<div class="form-group">
<input type="submit" value="{{ t "Create invitation" . }}" class="btn btn-primary" />
</div>
</form>
+ <form method="post" class="d-inline-block">
+ <input type="hidden" name="csrf" value="{{ .CSRF }}" />
+ <input type="hidden" name="formName" value="deleteAll" />
+ <div class="form-group">
+ <input type="submit" value="{{ t "Delete all" . }}" class="btn btn-danger" />
+ </div>
+ </form>
+
<table class="table table-hover table-novpadding table-sm table-striped">
<tr>
<th></th>