mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-03 20:12:58 +00:00
feat: major feature updates and cleanup
- Add Redis architecture implementation - Update browser extension functionality - Clean up deprecated files and documentation - Enhance backend handlers for auth, messages, search - Add new configuration options and settings - Update Docker and deployment configurations
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/trackeep/backend/models"
|
||||
)
|
||||
|
||||
// UpdateSettings represents update and OAuth configuration
|
||||
type UpdateSettings struct {
|
||||
OAuthServiceURL string `json:"oauth_service_url"`
|
||||
AutoUpdateCheck bool `json:"auto_update_check"`
|
||||
UpdateCheckInterval string `json:"update_check_interval"`
|
||||
PrereleaseUpdates bool `json:"prerelease_updates"`
|
||||
}
|
||||
|
||||
// GetUpdateSettings handles GET /api/v1/auth/update/settings
|
||||
func GetUpdateSettings(c *gin.Context) {
|
||||
userID := c.GetInt("user_id")
|
||||
|
||||
// Get settings from database
|
||||
settings, err := models.GetUserUpdateSettings(uint(userID))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to get settings"})
|
||||
return
|
||||
}
|
||||
|
||||
// Convert to response format
|
||||
response := UpdateSettings{
|
||||
OAuthServiceURL: settings.OAuthServiceURL,
|
||||
AutoUpdateCheck: settings.AutoUpdateCheck,
|
||||
UpdateCheckInterval: settings.UpdateCheckInterval,
|
||||
PrereleaseUpdates: settings.PrereleaseUpdates,
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// UpdateUpdateSettings handles PUT /api/v1/auth/update/settings
|
||||
func UpdateUpdateSettings(c *gin.Context) {
|
||||
userID := c.GetInt("user_id")
|
||||
|
||||
var newSettings UpdateSettings
|
||||
if err := c.ShouldBindJSON(&newSettings); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// Update model
|
||||
updatedSettings := &models.UserUpdateSettings{
|
||||
OAuthServiceURL: newSettings.OAuthServiceURL,
|
||||
AutoUpdateCheck: newSettings.AutoUpdateCheck,
|
||||
UpdateCheckInterval: newSettings.UpdateCheckInterval,
|
||||
PrereleaseUpdates: newSettings.PrereleaseUpdates,
|
||||
}
|
||||
|
||||
// Save to database
|
||||
err := models.SaveUserUpdateSettings(uint(userID), updatedSettings)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save settings"})
|
||||
return
|
||||
}
|
||||
|
||||
// Return updated settings
|
||||
GetUpdateSettings(c)
|
||||
}
|
||||
|
||||
// GetTestUpdateSettings handles GET /api/v1/test-update-settings (for demo mode)
|
||||
func GetTestUpdateSettings(c *gin.Context) {
|
||||
settings := getDefaultUpdateSettings()
|
||||
c.JSON(http.StatusOK, settings)
|
||||
}
|
||||
|
||||
// GetUpdateSettingsForAPI returns update settings for internal API use
|
||||
func GetUpdateSettingsForAPI(userID int) (UpdateSettings, error) {
|
||||
settings, err := models.GetUserUpdateSettings(uint(userID))
|
||||
if err != nil {
|
||||
// Return default settings if error
|
||||
defaultSettings := getDefaultUpdateSettings()
|
||||
return defaultSettings, nil
|
||||
}
|
||||
|
||||
return UpdateSettings{
|
||||
OAuthServiceURL: settings.OAuthServiceURL,
|
||||
AutoUpdateCheck: settings.AutoUpdateCheck,
|
||||
UpdateCheckInterval: settings.UpdateCheckInterval,
|
||||
PrereleaseUpdates: settings.PrereleaseUpdates,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func getDefaultUpdateSettings() UpdateSettings {
|
||||
return UpdateSettings{
|
||||
OAuthServiceURL: getEnvWithDefault("OAUTH_SERVICE_URL", "https://oauth.tdvorak.dev"),
|
||||
AutoUpdateCheck: getBoolEnvWithDefault("AUTO_UPDATE_CHECK", false),
|
||||
UpdateCheckInterval: getEnvWithDefault("UPDATE_CHECK_INTERVAL", "24h"),
|
||||
PrereleaseUpdates: getBoolEnvWithDefault("PRERELEASE_UPDATES", false),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user