From 5678ece4725988b10f2b0f26eea678d75bf7ee2a Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Thu, 19 Dec 2024 12:31:45 -0800 Subject: [PATCH] Use sdk for metadata time on addTrackToPlaylist (#10801) --- .../src/hooks/useGeneratePlaylistArtwork.ts | 11 +++------- .../common/src/utils/updatePlaylistArtwork.ts | 2 -- .../collections/addTrackToPlaylistSaga.ts | 21 ++++++++++--------- .../store/cache/collections/commonSagas.ts | 9 +++----- 4 files changed, 17 insertions(+), 26 deletions(-) diff --git a/packages/common/src/hooks/useGeneratePlaylistArtwork.ts b/packages/common/src/hooks/useGeneratePlaylistArtwork.ts index 7bcd19e2def..ad89f8c4574 100644 --- a/packages/common/src/hooks/useGeneratePlaylistArtwork.ts +++ b/packages/common/src/hooks/useGeneratePlaylistArtwork.ts @@ -20,7 +20,7 @@ export const useGeneratePlaylistArtwork = (collectionId: ID) => { getCollectionTracks(state, { id: collectionId }) ) - const { imageUtils, audiusBackend } = useAppContext() + const { imageUtils } = useAppContext() return useCallback(async () => { if (!collection || !collectionTracks) return null @@ -28,16 +28,11 @@ export const useGeneratePlaylistArtwork = (collectionId: ID) => { collection, collectionTracks, { regenerate: true }, - { audiusBackend, generateImage: imageUtils.generatePlaylistArtwork } + { generateImage: imageUtils.generatePlaylistArtwork } ) if (!artwork) return null const { url, file } = artwork if (!url) return null return { url, file } - }, [ - collection, - collectionTracks, - audiusBackend, - imageUtils.generatePlaylistArtwork - ]) + }, [collection, collectionTracks, imageUtils.generatePlaylistArtwork]) } diff --git a/packages/common/src/utils/updatePlaylistArtwork.ts b/packages/common/src/utils/updatePlaylistArtwork.ts index cf38f3619a0..dea6792ce56 100644 --- a/packages/common/src/utils/updatePlaylistArtwork.ts +++ b/packages/common/src/utils/updatePlaylistArtwork.ts @@ -3,7 +3,6 @@ import { isEqual } from 'lodash' import { Collection } from '~/models/Collection' import { SquareSizes } from '~/models/ImageSizes' import { Track } from '~/models/Track' -import { AudiusBackend } from '~/services/audius-backend' import { Nullable } from './typeUtils' @@ -19,7 +18,6 @@ type ArtworkActions = { } type Context = { - audiusBackend: AudiusBackend generateImage: (urls: string[]) => Promise<{ url: string; file: File }> } diff --git a/packages/web/src/common/store/cache/collections/addTrackToPlaylistSaga.ts b/packages/web/src/common/store/cache/collections/addTrackToPlaylistSaga.ts index 19f3f0fe12e..b340af62a75 100644 --- a/packages/web/src/common/store/cache/collections/addTrackToPlaylistSaga.ts +++ b/packages/web/src/common/store/cache/collections/addTrackToPlaylistSaga.ts @@ -65,8 +65,7 @@ function* addTrackToPlaylistAsync(action: AddTrackToPlaylistAction) { yield* waitForWrite() const userId = yield* call(ensureLoggedIn) const isNative = yield* getContext('isNativeMobile') - const audiusBackendInstance = yield* getContext('audiusBackendInstance') - const web3 = yield* call(audiusBackendInstance.getWeb3) + const sdk = yield* getSDK() const { generatePlaylistArtwork } = yield* getContext('imageUtils') let playlist = yield* select(getCollection, { id: playlistId }) @@ -84,18 +83,21 @@ function* addTrackToPlaylistAsync(action: AddTrackToPlaylistAction) { yield* put( cacheActions.subscribe(Kind.TRACKS, [{ uid: trackUid, id: action.trackId }]) ) - - const currentBlockNumber = yield* call([web3.eth, 'getBlockNumber']) - const currentBlock = (yield* call( - [web3.eth, 'getBlock'], - currentBlockNumber - )) as { timestamp: number } + const { timestamp: currentBlockTimestamp } = yield* call([ + sdk.services.entityManager, + sdk.services.entityManager.getCurrentBlock + ]) playlist.playlist_contents = { track_ids: playlist.playlist_contents.track_ids.concat({ track: action.trackId, - metadata_time: currentBlock?.timestamp as number, + // Replaced in indexing with block timestamp + // Represents the server time seen when track was added to playlist time: 0, + // Represents user-facing timestamp when the user added the track to the playlist. + // This is needed to disambiguate between tracks added at the same time/potentiall in + // the same block. + metadata_time: currentBlockTimestamp, uid: trackUid }) } @@ -114,7 +116,6 @@ function* addTrackToPlaylistAsync(action: AddTrackToPlaylistAction) { playlistTracks, { added: track }, { - audiusBackend: audiusBackendInstance, generateImage: generatePlaylistArtwork } ) diff --git a/packages/web/src/common/store/cache/collections/commonSagas.ts b/packages/web/src/common/store/cache/collections/commonSagas.ts index 2f0dd75f71f..91c3fb63373 100644 --- a/packages/web/src/common/store/cache/collections/commonSagas.ts +++ b/packages/web/src/common/store/cache/collections/commonSagas.ts @@ -111,7 +111,6 @@ function* editPlaylistAsync( yield* waitForWrite() const isNative = yield* getContext('isNativeMobile') - const audiusBackend = yield* getContext('audiusBackendInstance') const { generatePlaylistArtwork } = yield* getContext('imageUtils') formFields.description = squashNewLines(formFields.description) @@ -153,7 +152,7 @@ function* editPlaylistAsync( playlist, playlistTracks!, { updated: updatedTracks }, - { audiusBackend, generateImage: generatePlaylistArtwork } + { generateImage: generatePlaylistArtwork } ) // Optimistic update #2 to update the artwork @@ -257,7 +256,6 @@ function* removeTrackFromPlaylistAsync( const { playlistId, trackId, timestamp } = action yield* waitForWrite() const userId = yield* call(ensureLoggedIn) - const audiusBackend = yield* getContext('audiusBackendInstance') const { generatePlaylistArtwork } = yield* getContext('imageUtils') let playlist = yield* select(getCollection, { id: playlistId }) @@ -269,7 +267,7 @@ function* removeTrackFromPlaylistAsync( playlist!, playlistTracks!, { removed: removedTrack! }, - { audiusBackend, generateImage: generatePlaylistArtwork } + { generateImage: generatePlaylistArtwork } ) // Find the index of the track based on the track's id and timestamp @@ -383,7 +381,6 @@ function* orderPlaylistAsync( const { playlistId, trackIdsAndTimes } = action yield* waitForWrite() const userId = yield* call(ensureLoggedIn) - const audiusBackend = yield* getContext('audiusBackendInstance') const { generatePlaylistArtwork } = yield* getContext('imageUtils') const playlist = yield* select(getCollection, { id: playlistId }) @@ -400,7 +397,7 @@ function* orderPlaylistAsync( playlist!, tracks!, { reordered: orderedTracks }, - { audiusBackend, generateImage: generatePlaylistArtwork } + { generateImage: generatePlaylistArtwork } ) updatedPlaylist.playlist_contents.track_ids = trackIdsAndTimes.map(