private async UniTask Import(string browserUrl)
        {
            lastImportedTexture  = null;
            lastImportedMaterial = null;
            Debug.Assert(!loading);
            loading = true;

            // TODO: support other sources
            Debug.Log($"Importing asset: {browserUrl}");
            var id         = HdriHavenApi.GetIdFromUrl(browserUrl);
            var textureUrl = await HdriHavenApi.GetTextureUrlAsync(id, settings.resolution);

            await DownloadAndImportTexture(textureUrl, id);
        }
        private async UniTask LoadPreviews()
        {
            loading = true;
            var metaData = await HdriHavenApi.GetMetaDataAsync();

            var previews = metaData.assets
                           .Select(asset => asset.Key)
                           .Select(id => (id: id, download: HdriHavenApi.GetAssetPreviewTexture(id)))
                           .Take(previewsPerPage)
                           .ToArray();

            var textures = await UniTask.WhenAll(previews.Select(p => p.download));

            for (var i = 0; i < previewsPerPage; ++i)
            {
                previewTextures[i] = textures[i];
                previewIds[i]      = previews[i].id;
            }
            loading = false;
        }
        private async UniTask DownloadAndImportHdriHavenTexture(string id)
        {
            var textureUrl = await HdriHavenApi.GetTextureUrlAsync(id, settings.resolution);

            await DownloadAndImportTexture(textureUrl, id);
        }