|
1 | 1 | import { memo, useCallback, useEffect, MouseEvent, useRef } from 'react' |
2 | 2 |
|
3 | | -import { |
4 | | - useCurrentUserId, |
5 | | - useToggleFavoriteTrack, |
6 | | - useTrack, |
7 | | - useUser |
8 | | -} from '@audius/common/api' |
| 3 | +import { useCurrentUserId, useTrack, useUser } from '@audius/common/api' |
9 | 4 | import { useGatedContentAccess } from '@audius/common/hooks' |
10 | 5 | import { |
11 | 6 | ShareSource, |
@@ -43,7 +38,8 @@ import TrackTile from './TrackTile' |
43 | 38 |
|
44 | 39 | const { getUid, getPlaying, getBuffering } = playerSelectors |
45 | 40 | const { requestOpen: requestOpenShareModal } = shareModalUIActions |
46 | | -const { repostTrack, undoRepostTrack } = tracksSocialActions |
| 41 | +const { repostTrack, undoRepostTrack, saveTrack, unsaveTrack } = |
| 42 | + tracksSocialActions |
47 | 43 | const { setLockedContentId } = gatedContentActions |
48 | 44 |
|
49 | 45 | type OwnProps = { |
@@ -115,6 +111,19 @@ const ConnectedTrackTile = ({ |
115 | 111 | }, |
116 | 112 | [dispatch] |
117 | 113 | ) |
| 114 | + const handleSaveTrack = useCallback( |
| 115 | + (trackId: ID, isFeed: boolean) => { |
| 116 | + dispatch(saveTrack(trackId, FavoriteSource.TILE, isFeed)) |
| 117 | + }, |
| 118 | + [dispatch] |
| 119 | + ) |
| 120 | + |
| 121 | + const handleUndoSaveTrack = useCallback( |
| 122 | + (trackId: ID) => { |
| 123 | + dispatch(unsaveTrack(trackId, FavoriteSource.TILE)) |
| 124 | + }, |
| 125 | + [dispatch] |
| 126 | + ) |
118 | 127 |
|
119 | 128 | const handleRepostTrack = useCallback( |
120 | 129 | (trackId: ID, isFeed: boolean) => { |
@@ -161,11 +170,6 @@ const ConnectedTrackTile = ({ |
161 | 170 | const [, setLockedContentVisibility] = useModalState('LockedContent') |
162 | 171 | const menuRef = useRef<HTMLDivElement>(null) |
163 | 172 |
|
164 | | - const toggleSaveTrack = useToggleFavoriteTrack({ |
165 | | - trackId, |
166 | | - source: FavoriteSource.TILE |
167 | | - }) |
168 | | - |
169 | 173 | useEffect(() => { |
170 | 174 | if (!loading && hasLoaded) { |
171 | 175 | hasLoaded?.(index) |
@@ -243,8 +247,12 @@ const ConnectedTrackTile = ({ |
243 | 247 | ) |
244 | 248 |
|
245 | 249 | const onClickFavorite = useCallback(() => { |
246 | | - toggleSaveTrack() |
247 | | - }, [toggleSaveTrack]) |
| 250 | + if (isFavorited) { |
| 251 | + handleUndoSaveTrack(trackId) |
| 252 | + } else { |
| 253 | + handleSaveTrack(trackId, isFeed) |
| 254 | + } |
| 255 | + }, [isFavorited, handleUndoSaveTrack, trackId, handleSaveTrack, isFeed]) |
248 | 256 |
|
249 | 257 | const onClickRepost = useCallback(() => { |
250 | 258 | if (isReposted) { |
|
0 commit comments