public void SetCars(string json) {
Sync(async () => {
if (json == null || Associated == null) return;
var ids = JArray.Parse(json).ToObject<string[]>();
var i = 0;
using (var waiting = new WaitingDialog()) {
waiting.Report(0);
foreach (var id in ids.NonNull()) {
var car = await CarsManager.Instance.GetByIdAsync(id);
if (car == null) continue;
await car.SkinsManager.EnsureLoadedAsync();
var skins = car.SkinsManager.LoadedOnly.ToList();
var skin = skins.FirstOrDefault();
if (skin == null) continue;
var liveries = new StringBuilder();
foreach (var x in skins) {
liveries.Append(
$@"<img data-skin-id='{HttpUtility.HtmlEncode(x.Id)}' width=24 style='margin-left:2px' src='{await
Associated.GetImageUrlAsync(x.LiveryImage)}'>");
}
Associated.Execute($@"
document.querySelector('[id^=""{id}1""]').innerHTML = ""<img width=280 style='margin-right:10px' src='{await Associated.GetImageUrlAsync(skin.PreviewImage)}'>"";
document.querySelector('[id^=""{id}2""]').innerHTML = ""{HttpUtility.HtmlEncode(car.DisplayName)}<img width=48 style='margin-left:2px;margin-right:10px;margin-top:-10px;float:left' src='{await
Associated.GetImageUrlAsync(car.LogoIcon)}'>"";
document.querySelector('[id^=""{id}3""]').innerHTML = ""{liveries}"";
document.querySelector('[id^=""{id}4""]').textContent = {JsonConvert.SerializeObject(skin.Id)};
var l = document.querySelectorAll('[id^=""{id}3""] img');
for (var i = 0; i < l.length; i++){{
l[i].addEventListener('click', function(){{
var s = this.getAttribute('data-skin-id');
document.querySelector('[id^=""{id}4""]').innerHTML = s;
window.external.UpdatePreview(""{id}"", s);
}}, false);
}}
");
waiting.Report(new AsyncProgressEntry(car.DisplayName, i++, ids.Length));
}
}
});
}