internal async void Refresh() { _adapter.FireSyncStatusChanged(MyClipsAdapter.ViewHolder.SyncStatus.DOWNLOADING, 0); try { cancel = new CancellationTokenSource(); var info = await Bootlegger.BootleggerClient.GetEventInfo(Bootlegger.BootleggerClient.CurrentEvent.id, new System.Threading.CancellationToken()); OnEventInfoUpdate?.Invoke(info); await Bootlegger.BootleggerClient.GetMyMedia(cancel.Token); //if I can edit everyones media: if (Bootlegger.BootleggerClient.CurrentEvent.publicedit) { //load everyones media: Bootlegger.BootleggerClient.GetEveryonesMedia(cancel.Token); } _adapter.UpdateData(Bootlegger.BootleggerClient.UploadQueueEditing, Bootlegger.BootleggerClient.MyMediaEditing); _adapter.FireSyncStatusChanged(MyClipsAdapter.ViewHolder.SyncStatus.OK, 0); OnRefresh?.Invoke(); } catch (TaskCanceledException) { //do nothing, moving screens } catch (Exception e) { try { LoginFuncs.ShowError(Activity, e); _adapter.FireSyncStatusChanged(MyClipsAdapter.ViewHolder.SyncStatus.OK, 0); } catch { //fails as the fragment is lost. } } finally { //if not waiting for everyones media to download: //_adapter.FireSyncStatusChanged(MyClipsAdapter.ViewHolder.SyncStatus.OK,0); } }