feat: add email notification for post like
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/prabhupadasays/spsays-bff/internal/middleware"
|
||||
@@ -49,3 +50,36 @@ func (h *NotificationHandler) MarkAllRead(w http.ResponseWriter, r *http.Request
|
||||
}
|
||||
response.NoContent(w)
|
||||
}
|
||||
|
||||
type emailPrefsResp struct {
|
||||
LikeEmails bool `json:"like_emails"`
|
||||
}
|
||||
|
||||
// GetEmailPrefs — GET /notifications/email-prefs. The caller's email-notification
|
||||
// preferences (currently just aggregated like emails).
|
||||
func (h *NotificationHandler) GetEmailPrefs(w http.ResponseWriter, r *http.Request) {
|
||||
uid := middleware.UserID(r.Context())
|
||||
enabled, err := h.svc.LikeEmailPref(r.Context(), uid)
|
||||
if err != nil {
|
||||
response.Error(w, http.StatusInternalServerError, "could not load email preferences")
|
||||
return
|
||||
}
|
||||
response.JSON(w, http.StatusOK, emailPrefsResp{LikeEmails: enabled})
|
||||
}
|
||||
|
||||
// UpdateEmailPrefs — PUT /notifications/email-prefs { like_emails }.
|
||||
func (h *NotificationHandler) UpdateEmailPrefs(w http.ResponseWriter, r *http.Request) {
|
||||
uid := middleware.UserID(r.Context())
|
||||
var req struct {
|
||||
LikeEmails bool `json:"like_emails"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
response.Error(w, http.StatusBadRequest, "invalid JSON body")
|
||||
return
|
||||
}
|
||||
if err := h.svc.SetLikeEmailPref(r.Context(), uid, req.LikeEmails); err != nil {
|
||||
response.Error(w, http.StatusInternalServerError, "could not update email preferences")
|
||||
return
|
||||
}
|
||||
response.JSON(w, http.StatusOK, emailPrefsResp{LikeEmails: req.LikeEmails})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user