private void OnApplicationPause(bool pauseStatus)
        {
            if (pauseStatus || ProjectServer.Provider == LocaleUtils.GetProvider())
            {
                return;
            }

            if (m_User != null)
            {
                Logout();
            }
            ProjectServer.Cleanup();
            ProjectServer.Init();
        }
        public static void Init(string appId = "REFLECT_VIEWER")
        {
            if (s_Initialized)
            {
                return;
            }

            s_Initialized = true;

            var environmentInfo = LocaleUtils.GetEnvironmentInfo();

            Provider = environmentInfo.provider;

            var    projectDataSuffix = string.Empty;
            string projectServerAddress;

            if (PlayerPrefs.HasKey(LocaleUtils.SettingsKeys.CloudEnvironment) && environmentInfo.cloudEnvironment == CloudEnvironment.Other)
            {
                projectServerAddress = environmentInfo.customUrl;
                projectDataSuffix    = $"-{projectServerAddress.MD5Hash()}";
            }
            else
            {
                projectServerAddress = ProjectServerClient.ProjectServerAddress(environmentInfo.provider, environmentInfo.cloudEnvironment);

                if (environmentInfo.cloudEnvironment != CloudEnvironment.Production)
                {
                    projectDataSuffix = $"-{environmentInfo.provider}-{environmentInfo.cloudEnvironment}";
                }
                // else: No suffix for prod since real users already have data stored in their ProjectData folder
            }

            ProjectDataPath = Path.Combine(Application.persistentDataPath, $"ProjectData{projectDataSuffix}");
            Directory.CreateDirectory(ProjectDataPath);

            Client = new ProjectServerClient(projectServerAddress, appId, ProjectDataPath);
        }