diff --git a/ui/src/components/timelineGallery/TimelineGallery.js b/ui/src/components/timelineGallery/TimelineGallery.js
index d67a73ca..d9dc4861 100644
--- a/ui/src/components/timelineGallery/TimelineGallery.js
+++ b/ui/src/components/timelineGallery/TimelineGallery.js
@@ -1,4 +1,4 @@
-import React, { useState, useCallback } from 'react'
+import React, { useState, useCallback, useRef, useEffect } from 'react'
import PropTypes from 'prop-types'
import { useQuery, gql } from '@apollo/client'
import TimelineGroupDate from './TimelineGroupDate'
@@ -58,6 +58,7 @@ const TimelineGallery = () => {
const onlyFavorites = getParam('favorites') == '1' ? true : false
const setOnlyFavorites = favorites => setParam('favorites', favorites ? 1 : 0)
+ const favoritesNeedsRefresh = useRef(false)
const nextMedia = useCallback(() => {
setActiveIndex(activeIndex => {
@@ -122,12 +123,21 @@ const TimelineGallery = () => {
})
}, [activeIndex])
- const { data, error, loading } = useQuery(MY_TIMELINE_QUERY, {
+ const { data, error, loading, refetch } = useQuery(MY_TIMELINE_QUERY, {
variables: {
onlyFavorites,
},
})
+ useEffect(() => {
+ if (favoritesNeedsRefresh) {
+ favoritesNeedsRefresh.current = false
+ refetch({
+ onlyFavorites: onlyFavorites,
+ })
+ }
+ }, [onlyFavorites])
+
if (error) {
return error
}
@@ -166,12 +176,15 @@ const TimelineGallery = () => {
dateGroup: i,
})
}}
+ onFavorite={() => {
+ favoritesNeedsRefresh.current = true
+ }}
/>
))
}
return (
-
+ <>
Loading timeline
{
setPresenting={setPresenting}
/>
)}
-
+ >
)
}
diff --git a/ui/src/components/timelineGallery/TimelineGroupAlbum.js b/ui/src/components/timelineGallery/TimelineGroupAlbum.js
index 446de523..db1f1524 100644
--- a/ui/src/components/timelineGallery/TimelineGroupAlbum.js
+++ b/ui/src/components/timelineGallery/TimelineGroupAlbum.js
@@ -41,6 +41,7 @@ const TimelineGroupAlbum = ({
onSelectMedia,
setPresenting,
activeIndex,
+ onFavorite,
}) => {
const { updateSidebar } = useContext(SidebarContext)
@@ -53,6 +54,7 @@ const TimelineGroupAlbum = ({
updateSidebar()
}}
setPresenting={setPresenting}
+ onFavorite={onFavorite}
index={i}
active={activeIndex == i}
/>
@@ -73,6 +75,7 @@ TimelineGroupAlbum.propTypes = {
onSelectMedia: PropTypes.func.isRequired,
setPresenting: PropTypes.func.isRequired,
activeIndex: PropTypes.number.isRequired,
+ onFavorite: PropTypes.func,
}
export default TimelineGroupAlbum
diff --git a/ui/src/components/timelineGallery/TimelineGroupDate.js b/ui/src/components/timelineGallery/TimelineGroupDate.js
index 5a8b6517..d39cfc9c 100644
--- a/ui/src/components/timelineGallery/TimelineGroupDate.js
+++ b/ui/src/components/timelineGallery/TimelineGroupDate.js
@@ -30,6 +30,7 @@ const TimelineGroupDate = ({
onSelectDateGroup,
activeIndex,
setPresenting,
+ onFavorite,
}) => {
const albumGroupElms = groups.map((group, i) => (
))
@@ -62,6 +64,7 @@ TimelineGroupDate.propTypes = {
onSelectDateGroup: PropTypes.func.isRequired,
activeIndex: PropTypes.object.isRequired,
setPresenting: PropTypes.func.isRequired,
+ onFavorite: PropTypes.func,
}
export default TimelineGroupDate