/* Copyright (C) Itseez3D, Inc. - All Rights Reserved
* You may not use this file except in compliance with an authorized license
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
* UNLESS REQUIRED BY APPLICABLE LAW OR AGREED BY ITSEEZ3D, INC. IN WRITING, SOFTWARE DISTRIBUTED UNDER THE LICENSE IS DISTRIBUTED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED
* See the License for the specific language governing permissions and limitations under the License.
* Written by Itseez3D, Inc. <support@avatarsdk.com>, October 2026
*/

using System;
using System.Text;
using UnityEngine;

namespace AvatarSDKMove
{
	public static class MetaPersonCreatorLink
	{
		private const string AuthParameter = "avatar_sdk_auth";
		private const string OpenShopParameter = "open=shop";

		public static void OpenShop()
		{
			Application.OpenURL(GetShopUrl());
		}

		public static string GetShopUrl()
		{
			string url = AvatarSDKMoveServer.MetaPersonCreatorUrl;
			UserSession session = AuthUtils.LoadSession();
			if (session == null || !session.IsValid || string.IsNullOrEmpty(session.playerUid))
				return url;

			var authData = new MetaPersonCreatorAuthData
			{
				email = session.email,
				token = session.token,
				player_uid = session.playerUid
			};

			string encodedAuthData = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonUtility.ToJson(authData)))
				.TrimEnd('=').Replace('+', '-').Replace('/', '_');

			return string.Format("{0}#{1}={2}&{3}", url, AuthParameter, encodedAuthData, OpenShopParameter);
		}
	}
}
