package themeToggleController

import (
	"net/http"

	"github.com/NyaaPantsu/nyaa/config"
	"github.com/NyaaPantsu/nyaa/controllers/router"
	"github.com/NyaaPantsu/nyaa/utils/timeHelper"
	"github.com/gin-gonic/gin"
	
)

// toggleThemeHandler : Controller to switch between theme1 & theme2
func toggleThemeHandler(c *gin.Context) {

	theme, err := c.Cookie("theme")
	if err != nil {
		theme = config.DefaultTheme(false)
	}
	theme2, err := c.Cookie("theme2")
	if err != nil {
		theme2 = config.DefaultTheme(true)
	}
	if theme != config.DefaultTheme(true) && theme2 != config.DefaultTheme(true) {
		//None of the themes are dark ones, force the second one as the dark one
		theme2 = config.DefaultTheme(true)
	} else if  theme == theme2 {
		//Both theme are dark ones, force the second one as the default (light) theme
		theme2 = config.DefaultTheme(false)
	}
	//Get theme1 & theme2 value
	
	// If logged in, update user theme (will not work otherwise)
	user := router.GetUser(c)
	if user.ID > 0 {
		user.Theme = theme2
		user.UpdateRaw()
	}
	
	//Switch theme & theme2 value
	http.SetCookie(c.Writer, &http.Cookie{Name: "theme", Value: theme2, Domain: getDomainName(), Path: "/", Expires: timeHelper.FewDaysLater(365)})
	http.SetCookie(c.Writer, &http.Cookie{Name: "theme2", Value: theme, Domain: getDomainName(), Path: "/", Expires: timeHelper.FewDaysLater(365)})	
	
	//Redirect user to page he was in beforehand
	if  c.Request.URL.Query()["no_redirect"] == nil {
		c.Redirect(http.StatusSeeOther, c.Param("redirect") + "#footer")
	}
	return
}

func getDomainName() string {
	domain := config.Get().Cookies.DomainName
	if config.Get().Environment == "DEVELOPMENT" {
		domain = ""
	}
	return domain
}
