async Task OnRefreshed(ITradingView sender, ViewRefreshType viewRefreshType) { foreach (var item in _refreshedEvents) { var t = item(sender, viewRefreshType); if (t != null) { await t; } } }
public async Task RefreshAsync(ViewRefreshType viewRefreshType = ViewRefreshType.NotReloadIfCached) { await OnRefreshing(this, viewRefreshType); var ctx = XWV.ThreadSync.Invoke(() => TypedContext); string ctxJson = null; var chartJson = JsonConvert.SerializeObject(ctx.Chart); var titleJson = JsonConvert.SerializeObject(ctx.Title); var colors = JsonConvert.SerializeObject(ctx.Colors); if (viewRefreshType == ViewRefreshType.NotReloadIfCached) { ctxJson = JsonConvert.SerializeObject(ctx); if (ctxJson == _previousRefreshJson) { return; } } var script = $@" TradingVueObj.titleTxt = {titleJson} ; TradingViewContext.chart = {chartJson} ; TradingViewContext.colors = {colors} ; "; await XWV.WaitInitialization(); if (viewRefreshType == ViewRefreshType.ReloadAllPage) { await LoadPage(); } else { await LoadPageIfNotLoaded(); } await XWV.ExJs <object>(script); _previousRefreshJson = ctxJson; await OnRefreshed(this, viewRefreshType); }