Exemple #1
0
        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);
        }
Exemple #3
0
		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);
 }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        }                                                       // Dummy constructor

        public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete)
        {
        }                                                                                                                                                                          // 0x00000001802A75A0-0x00000001802A78A0