package userapi

import userv1 "hyapp.local/api/proto/user/v1"

// authTokenData 是完整资料补齐后返回给客户端替换 access token 的扁平格式。
// 字段保持和登录接口一致，避免客户端在 onboarding 后解析两套 token 结构。
type authTokenData struct {
	AppCode                  string `json:"app_code"`
	UserID                   string `json:"user_id,omitempty"`
	DisplayUserID            string `json:"display_user_id,omitempty"`
	DefaultDisplayUserID     string `json:"default_display_user_id,omitempty"`
	DisplayUserIDKind        string `json:"display_user_id_kind,omitempty"`
	DisplayUserIDExpiresAtMs int64  `json:"display_user_id_expires_at_ms"`
	SessionID                string `json:"session_id"`
	AccessToken              string `json:"access_token"`
	RefreshToken             string `json:"refresh_token,omitempty"`
	ExpiresInSec             int64  `json:"expires_in_sec"`
	TokenType                string `json:"token_type"`
	IsNewUser                *bool  `json:"is_new_user,omitempty"`
	ProfileCompleted         bool   `json:"profile_completed"`
	OnboardingStatus         string `json:"onboarding_status,omitempty"`
}

func authData(token *userv1.AuthToken, isNewUser *bool) authTokenData {
	if token == nil {
		return authTokenData{IsNewUser: isNewUser}
	}

	return authTokenData{
		UserID:                   userIDString(token.GetUserId()),
		AppCode:                  token.GetAppCode(),
		DisplayUserID:            token.GetDisplayUserId(),
		DefaultDisplayUserID:     token.GetDefaultDisplayUserId(),
		DisplayUserIDKind:        token.GetDisplayUserIdKind(),
		DisplayUserIDExpiresAtMs: token.GetDisplayUserIdExpiresAtMs(),
		SessionID:                token.GetSessionId(),
		AccessToken:              token.GetAccessToken(),
		RefreshToken:             token.GetRefreshToken(),
		ExpiresInSec:             token.GetExpiresInSec(),
		TokenType:                token.GetTokenType(),
		IsNewUser:                isNewUser,
		ProfileCompleted:         token.GetProfileCompleted(),
		OnboardingStatus:         token.GetOnboardingStatus(),
	}
}
