public async void Refresh(bool showRead) { var errorCondition = Result.NoError; try { var backendItems = await NextcloudNewsInterface.NextcloudNewsInterface.getInstance().getItems(); var feeds = await NextcloudNewsInterface.NextcloudNewsInterface.getInstance().getFeeds(); foreach (var item in backendItems.items) { var existingItem = (from ItemModel selitem in _list where selitem.id == item.id select selitem).FirstOrDefault <ItemModel>(); if (existingItem == null) { if (showRead == false && item.unread == false) { continue; } var newItem = ItemModel.FromItem(item); var feed = feeds.getFeedForId(item.feedId); if (feed != null) { if (feed.faviconLink != null && feed.faviconLink != String.Empty) { Uri validatedUri; //TODO: Need to also verify that the protocol part of the url is http or https if (Uri.TryCreate(feed.faviconLink, UriKind.RelativeOrAbsolute, out validatedUri)) { newItem.favicon = feed.faviconLink; } else { newItem.favicon = "https://boingboing.net/favicon.ico"; } } else { newItem.favicon = "https://boingboing.net/favicon.ico"; } } _list.Insert(0, newItem); } } } catch { //TODO: Catch the right exception errorCondition = Result.ConnectionError; } finally { RefreshComplete?.Invoke(this, errorCondition); } }
public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) { m_ServerResponded = onServerResponded; m_ServerFailedToRespond = onServerFailedToRespond; m_RefreshComplete = onRefreshComplete; m_VTable = new VTable() { m_VTServerResponded = InternalOnServerResponded, m_VTServerFailedToRespond = InternalOnServerFailedToRespond, m_VTRefreshComplete = InternalOnRefreshComplete }; m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); Marshal.StructureToPtr(m_VTable, m_pVTable, false); m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); }
public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) { if (onServerResponded == null || onServerFailedToRespond == null || onRefreshComplete == null) { throw new ArgumentNullException(); } m_ServerResponded = onServerResponded; m_ServerFailedToRespond = onServerFailedToRespond; m_RefreshComplete = onRefreshComplete; m_VTable = new VTable() { m_VTServerResponded = InternalOnServerResponded, m_VTServerFailedToRespond = InternalOnServerFailedToRespond, m_VTRefreshComplete = InternalOnRefreshComplete }; m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); Marshal.StructureToPtr(m_VTable, m_pVTable, false); m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); }
public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) { if (onServerResponded == null || onServerFailedToRespond == null || onRefreshComplete == null) { throw new ArgumentNullException(); } m_ServerResponded = onServerResponded; m_ServerFailedToRespond = onServerFailedToRespond; m_RefreshComplete = onRefreshComplete; m_VTable = new VTable { m_VTServerResponded = new InternalServerResponded(InternalOnServerResponded), m_VTServerFailedToRespond = new InternalServerFailedToRespond(InternalOnServerFailedToRespond), m_VTRefreshComplete = new InternalRefreshComplete(InternalOnRefreshComplete) }; m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); Marshal.StructureToPtr(m_VTable, m_pVTable, false); m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); }
public async void RemoveRead() { try { var backendItems = await NextcloudNewsInterface.NextcloudNewsInterface.getInstance().getItems(); foreach (var item in backendItems.items) { var existingItem = (from ItemModel selitem in _list where selitem.id == item.id && item.unread == false select selitem).FirstOrDefault <ItemModel>(); if (existingItem != null) { _list.Remove(existingItem); } } } catch { //DJ: Calling the RefreshComplete callback here is valid, since erroring out here means the refresh can not continue. //TODO: Catch the right exception RefreshComplete?.Invoke(this, Result.ConnectionError); } }
} // Dummy constructor public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) { } // 0x00000001802A75A0-0x00000001802A78A0