Files
seanime-docker/seanime-2.9.10/internal/user/user.go
2025-09-20 14:08:38 +01:00

50 lines
1.0 KiB
Go

package user
import (
"errors"
"seanime/internal/api/anilist"
"seanime/internal/database/models"
"github.com/goccy/go-json"
)
const SimulatedUserToken = "SIMULATED"
type User struct {
Viewer *anilist.GetViewer_Viewer `json:"viewer"`
Token string `json:"token"`
// IsSimulated indicates whether the user is not a real AniList account.
IsSimulated bool `json:"isSimulated"`
}
// NewUser creates a new User entity from a models.User
// This is returned to the client
func NewUser(model *models.Account) (*User, error) {
if model == nil {
return nil, errors.New("account is nil")
}
var acc anilist.GetViewer_Viewer
if err := json.Unmarshal(model.Viewer, &acc); err != nil {
return nil, err
}
return &User{
Viewer: &acc,
Token: model.Token,
}, nil
}
func NewSimulatedUser() *User {
acc := anilist.GetViewer_Viewer{
Name: "User",
Avatar: nil,
BannerImage: nil,
IsBlocked: nil,
Options: nil,
}
return &User{
Viewer: &acc,
Token: SimulatedUserToken,
IsSimulated: true,
}
}