@@ -15,7 +15,7 @@ const schema = yup
1515 . test (
1616 "no-duplicate" ,
1717 i18next . t ( "no_duplicate" ) ,
18- ( value ) => ! state . feeds . some ( ( feed ) => feed . link === value )
18+ ( value ) => ! state . feedsList . includes ( value )
1919 ) ;
2020
2121export const validateInput = ( ) => {
@@ -42,33 +42,33 @@ export const updateInputValue = (value) => {
4242const fetchAndParseFeed = ( url ) => {
4343 return fetchRssData ( url )
4444 . then ( ( xmlString ) => {
45- // console.log("Полученные данные:", xmlString);
4645 return parseRss ( xmlString ) ;
4746 } )
4847 . catch ( ( error ) => {
4948 throw error ;
5049 } )
5150} ;
5251
53- const addNewPosts = ( items ) => {
52+ const addNewPosts = ( posts ) => {
5453 const existingIds = new Set ( state . posts . map ( ( post ) => post . id ) ) ;
55- const newPosts = items
56- . filter ( ( item ) => ! existingIds . has ( item . id ) ) ;
57- state . posts = [ ...state . posts , ...newPosts ] ;
54+ const newPosts = posts
55+ . filter ( ( post ) => ! existingIds . has ( post . id ) )
56+ . map ( ( post ) => ( { ...post , viewed : false } ) ) ;
57+ state . posts . unshift ( ...newPosts ) ;
5858} ;
5959
6060const updateFeedsAndPostsState = ( { channel, items } ) => {
61- state . feeds = [ ...state . feeds , channel ] ;
61+ state . feeds . push ( channel ) ;
62+ state . feedsList . push ( state . form . inputValue ) ;
6263 addNewPosts ( items ) ;
6364 state . form . inputValue = "" ;
6465} ;
6566
6667export const addRssFeed = ( ) => {
6768 return fetchAndParseFeed ( state . form . inputValue )
6869 . then ( ( { channel, items } ) => {
69- updateFeedsAndPostsState ( { channel, items } ) ;
70- // return { channel, items };
71- } )
70+ updateFeedsAndPostsState ( { channel, items } ) ;
71+ } )
7272 . catch ( ( error ) => {
7373 console . error ( "Ошибка в addRssFeed:" , error . message ) ;
7474 throw error ;
@@ -77,7 +77,6 @@ export const addRssFeed = () => {
7777
7878export const feedsChecking = ( ) => {
7979 if ( state . feeds . length === 0 ) {
80- // setTimeout(feedsChecking, 10000);
8180 return ;
8281 }
8382 checkRssFeed ( )
@@ -91,13 +90,15 @@ export const feedsChecking = () => {
9190} ;
9291
9392export const checkRssFeed = ( ) => {
94- const promises = state . feeds . map ( ( feed ) => {
95- return fetchAndParseFeed ( feed . link )
93+ const promises = state . feedsList . map ( ( feed ) => {
94+ // передавать нормальную ссылку на feed
95+ console . log ( "feed link:" , feed )
96+ return fetchAndParseFeed ( feed )
9697 . then ( ( { items } ) => {
9798 return items ;
9899 } )
99100 . catch ( ( error ) => {
100- console . error ( "Ошибка проверки фида:" , feed . link , error . message ) ;
101+ console . error ( "Ошибка проверки фида:" , feed , error . message ) ;
101102 return [ ] ;
102103 } ) ;
103104 } ) ;
@@ -117,5 +118,8 @@ export const setActivePost = (id) => {
117118} ;
118119
119120export const markPostAsRead = ( id ) => {
120- state . viewedPostsIds = [ ...state . viewedPostsIds , id ] ;
121+ const post = state . posts . find ( post => post . id === id ) ;
122+ if ( post && ! post . viewed ) {
123+ post . viewed = true ;
124+ }
121125} ;
0 commit comments