Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/common/src/adapters/accessConditionsFromSDK.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { AccessGate, full } from '@audius/sdk'
import type { AccessGate } from '@audius/sdk'
import {
instanceOfExtendedPurchaseGate,
instanceOfFollowGate,
Expand All @@ -7,9 +7,9 @@ import {

import { AccessConditions } from '~/models'

/** Accepts default API AccessGate or full API AccessGate (e.g. from playlists). */
/** Accepts default API AccessGate (e.g. from playlists). */
export const accessConditionsFromSDK = (
input: AccessGate | full.AccessGate
input: AccessGate
): AccessConditions | null => {
if (instanceOfFollowGate(input)) {
return { follow_user_id: input.followUserId }
Expand Down
33 changes: 19 additions & 14 deletions packages/common/src/adapters/activity.ts
Original file line number Diff line number Diff line change
@@ -1,51 +1,56 @@
import { full } from '@audius/sdk'
import type {
Activity,
Playlist,
Track
} from '@audius/sdk'
import { ActivityItemTypeEnum } from '@audius/sdk'

import { userCollectionMetadataFromSDK } from './collection'
import { userTrackMetadataFromSDK } from './track'

export const activityFromSDK = (input: full.ActivityFull) => {
export const activityFromSDK = (input: Activity) => {
const { timestamp, itemType: item_type, item } = input
if (item_type === full.ActivityFullItemTypeEnum.Track) {
if (item_type === ActivityItemTypeEnum.Track) {
return {
timestamp,
item_type,
item: userTrackMetadataFromSDK(item as full.TrackFull)
item: userTrackMetadataFromSDK(item as Track)
}
} else if (item_type === full.ActivityFullItemTypeEnum.Playlist) {
} else if (item_type === ActivityItemTypeEnum.Playlist) {
return {
timestamp,
item_type,
item: userCollectionMetadataFromSDK(item as full.PlaylistFull)
item: userCollectionMetadataFromSDK(item as Playlist)
}
}
return undefined
}

export const trackActivityFromSDK = (input: full.ActivityFull) => {
export const trackActivityFromSDK = (input: Activity) => {
const { timestamp, itemType: item_type, item } = input
if (item_type === full.ActivityFullItemTypeEnum.Track) {
if (item_type === ActivityItemTypeEnum.Track) {
return {
timestamp,
item_type,
item: userTrackMetadataFromSDK(item as full.TrackFull)
item: userTrackMetadataFromSDK(item as Track)
}
}
return undefined
}

export const repostActivityFromSDK = (input: full.ActivityFull) => {
export const repostActivityFromSDK = (input: Activity) => {
const { timestamp, itemType: item_type, item } = input
if (item_type === full.ActivityFullItemTypeEnum.Track) {
if (item_type === ActivityItemTypeEnum.Track) {
return {
timestamp,
item_type,
item: userTrackMetadataFromSDK(full.TrackFullFromJSON(item))
item: userTrackMetadataFromSDK(item as Track)
}
} else if (item_type === full.ActivityFullItemTypeEnum.Playlist) {
} else if (item_type === ActivityItemTypeEnum.Playlist) {
return {
timestamp,
item_type,
item: userCollectionMetadataFromSDK(full.PlaylistFullFromJSON(item))
item: userCollectionMetadataFromSDK(item as Playlist)
}
}
return undefined
Expand Down
4 changes: 2 additions & 2 deletions packages/common/src/adapters/audioTransactions.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { full } from '@audius/sdk'
import type { TransactionDetails as SdkTransactionDetails } from '@audius/sdk'

import {
TransactionDetails,
Expand All @@ -7,7 +7,7 @@ import {
} from '~/store/ui/transaction-details/types'

export const audioTransactionFromSdk = (
tx: full.TransactionDetails
tx: SdkTransactionDetails
): TransactionDetails => {
const transactionTypeMap: Record<string, TransactionType> = {
purchase_stripe: TransactionType.PURCHASE,
Expand Down
25 changes: 12 additions & 13 deletions packages/common/src/adapters/collection.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import {
type AccessGate,
type AccountCollection as SdkAccountCollection,
type CreateAlbumRequestBody,
type CreatePlaylistRequestBody,
full,
Id,
OptionalHashId,
type Playlist,
type PlaylistAddedTimestamp,
type SearchPlaylist,
type Track,
type SearchTrack,
UpdateAlbumRequest,
type UpdateAlbumRequestBody,
type UpdatePlaylistRequestBody
Expand Down Expand Up @@ -51,18 +55,14 @@ const addedTimestampToPlaylistTrackId = ({
}

export const userCollectionMetadataFromSDK = (
input:
| full.PlaylistFullWithoutTracks
| full.SearchPlaylistFull
| full.PlaylistFull
| Playlist
input: Playlist | SearchPlaylist
): UserCollectionMetadata | undefined => {
try {
const decodedPlaylistId = OptionalHashId.parse(input.id)
const decodedOwnerId = OptionalHashId.parse(
'userId' in input && input.userId != null ? input.userId : input.user.id
)
const user = userMetadataFromSDK(input.user as unknown as full.UserFull)
const user = userMetadataFromSDK(input.user)
if (!decodedPlaylistId || !decodedOwnerId || !user) {
return undefined
}
Expand Down Expand Up @@ -127,10 +127,7 @@ export const userCollectionMetadataFromSDK = (
? accessConditionsFromSDK(input.streamConditions)
: null,
tracks: transformAndCleanList(
('tracks' in input ? (input.tracks ?? []) : []) as unknown as (
| full.TrackFull
| full.SearchTrackFull
)[],
('tracks' in input ? (input.tracks ?? []) : []) as (Track | SearchTrack)[],
userTrackMetadataFromSDK
),
user,
Expand All @@ -152,7 +149,7 @@ export const userCollectionMetadataFromSDK = (
}

export const accountCollectionFromSDK = (
input: full.AccountCollection
input: SdkAccountCollection
): AccountCollection | undefined => {
const playlistId = OptionalHashId.parse(input.id)
const userId = OptionalHashId.parse(input.user.id)
Expand Down Expand Up @@ -223,7 +220,9 @@ export const albumMetadataForCreateWithSDK = (
streamConditions:
input.stream_conditions != null &&
isContentUSDCPurchaseGated(input.stream_conditions)
? usdcPurchaseConditionsToSDK(input.stream_conditions)
? (usdcPurchaseConditionsToSDK(
input.stream_conditions
) as unknown as AccessGate)
: null,
isStreamGated: input.is_stream_gated ?? false,
isScheduledRelease: input.is_scheduled_release ?? false,
Expand Down
7 changes: 4 additions & 3 deletions packages/common/src/adapters/favorite.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { full, OptionalHashId } from '@audius/sdk'
import { OptionalHashId, type Favorite as SdkFavorite } from '@audius/sdk'
import { omit } from 'lodash'
import snakecaseKeys from 'snakecase-keys'

import { Favorite, FavoriteType } from '~/models/Favorite'

export const favoriteFromSDK = (input: full.Favorite): Favorite | undefined => {
export const favoriteFromSDK = (input: SdkFavorite): Favorite | undefined => {
const decodedSaveItemId =
typeof input.favoriteItemId === 'string'
? OptionalHashId.parse(input.favoriteItemId)
Expand All @@ -22,6 +22,7 @@ export const favoriteFromSDK = (input: full.Favorite): Favorite | undefined => {
...omit(snakecaseKeys(input), ['favorite_item_id', 'favorite_type']),
save_item_id: decodedSaveItemId,
save_type: input.favoriteType as FavoriteType,
user_id: decodedUserId
user_id: decodedUserId,
created_at: input.createdAt
}
}
4 changes: 2 additions & 2 deletions packages/common/src/adapters/feed.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { full } from '@audius/sdk'
import type { UserFeedItem as SdkUserFeedItem } from '@audius/sdk'

import { UserCollectionMetadata, UserTrackMetadata } from '~/models'

Expand All @@ -11,7 +11,7 @@ type UserFeedItem = {
}

export const userFeedItemFromSDK = (
input: full.UserFeedItem
input: SdkUserFeedItem
): UserFeedItem | undefined => {
const item =
input.type === 'track'
Expand Down
4 changes: 2 additions & 2 deletions packages/common/src/adapters/grant.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { full, HashId } from '@audius/sdk'
import { HashId, type Grant as SdkGrant } from '@audius/sdk'

import { Grant } from '~/models/Grant'

export const grantFromSDK = (input: full.Grant): Grant => {
export const grantFromSDK = (input: SdkGrant): Grant => {
return {
grantee_address: input.granteeAddress,
user_id: HashId.parse(input.userId) ?? null,
Expand Down
12 changes: 8 additions & 4 deletions packages/common/src/adapters/imageSize.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import type { full } from '@audius/sdk'
import type {
CoverArt,
CoverPhoto,
ProfilePicture
} from '@audius/sdk'

import {
CoverArtSizesCids,
Expand All @@ -9,7 +13,7 @@ import {
} from '~/models/ImageSizes'

export const coverPhotoSizesCIDsFromSDK = (
input: full.CoverPhoto
input: CoverPhoto
): CoverPhotoSizesCids => {
return [WidthSizes.SIZE_640, WidthSizes.SIZE_2000].reduce((out, size) => {
out[size] = input[size] ?? null
Expand All @@ -18,7 +22,7 @@ export const coverPhotoSizesCIDsFromSDK = (
}

export const coverArtSizesCIDsFromSDK = (
input: full.CoverArt
input: CoverArt
): CoverArtSizesCids => {
return [
SquareSizes.SIZE_1000_BY_1000,
Expand All @@ -31,7 +35,7 @@ export const coverArtSizesCIDsFromSDK = (
}

export const profilePictureSizesCIDsFromSDK = (
input: full.ProfilePicture
input: ProfilePicture
): ProfilePictureSizesCids => {
return [
SquareSizes.SIZE_1000_BY_1000,
Expand Down
34 changes: 23 additions & 11 deletions packages/common/src/adapters/notification.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
import { full, HashId, OptionalHashId } from '@audius/sdk'
import {
HashId,
OptionalHashId,
type Notification as SdkNotification,
RepostNotificationActionDataTypeEnum,
RepostOfRepostNotificationActionDataTypeEnum,
SaveNotificationActionDataTypeEnum,
SaveOfRepostNotificationActionDataTypeEnum,
instanceOfCreatePlaylistNotificationActionData,
instanceOfPlaylistMilestoneNotificationActionData,
instanceOfTrackMilestoneNotificationActionData
} from '@audius/sdk'
import dayjs from 'dayjs'

import { BadgeTier, type ID } from '~/models'
Expand Down Expand Up @@ -26,7 +37,7 @@ const getTimeAgo = (date: number) => {
return 'A few moments ago'
}

function formatBaseNotification(notification: full.Notification) {
function formatBaseNotification(notification: SdkNotification) {
const timestamp = notification.actions[0].timestamp
return {
groupId: notification.groupId,
Expand All @@ -39,11 +50,10 @@ function formatBaseNotification(notification: full.Notification) {

const toEntityType = (
type:
| full.SaveOfRepostNotificationActionDataTypeEnum
| full.SaveNotificationActionDataTypeEnum
| full.RepostNotificationActionDataTypeEnum
| full.RepostOfRepostNotificationActionDataTypeEnum
| full.SaveOfRepostNotificationActionDataTypeEnum
| SaveOfRepostNotificationActionDataTypeEnum
| SaveNotificationActionDataTypeEnum
| RepostNotificationActionDataTypeEnum
| RepostOfRepostNotificationActionDataTypeEnum
) => {
if (type === 'track') {
return Entity.Track
Expand All @@ -60,7 +70,7 @@ const toEntityType = (
* and other nuanced things on a per notification basis.
*/
export const notificationFromSDK = (
notification: full.Notification
notification: SdkNotification
): Notification | undefined => {
switch (notification.type) {
case 'follow': {
Expand Down Expand Up @@ -200,7 +210,7 @@ export const notificationFromSDK = (
const entityIds = notification.actions
.map((action) => {
const data = action.data
if (full.instanceOfCreatePlaylistNotificationActionData(data)) {
if (instanceOfCreatePlaylistNotificationActionData(data)) {
entityType = data.isAlbum ? Entity.Album : Entity.Playlist
// Future proofing for when playlistId is fixed to be a string
return HashId.parse(
Expand Down Expand Up @@ -295,7 +305,7 @@ export const notificationFromSDK = (
}
case 'milestone': {
const data = notification.actions[0].data
if (full.instanceOfTrackMilestoneNotificationActionData(data)) {
if (instanceOfTrackMilestoneNotificationActionData(data)) {
let achievement: Achievement
if (data.type === 'track_repost_count') {
achievement = Achievement.Reposts
Expand All @@ -312,7 +322,7 @@ export const notificationFromSDK = (
achievement,
...formatBaseNotification(notification)
}
} else if (full.instanceOfPlaylistMilestoneNotificationActionData(data)) {
} else if (instanceOfPlaylistMilestoneNotificationActionData(data)) {
let achievement: Achievement
if (data.type === 'playlist_repost_count') {
achievement = Achievement.Reposts
Expand Down Expand Up @@ -641,5 +651,7 @@ export const notificationFromSDK = (
...formatBaseNotification(notification)
}
}
default:
return undefined
}
}
10 changes: 7 additions & 3 deletions packages/common/src/adapters/playlistLibrary.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { OptionalHashId, type full } from '@audius/sdk'
import {
OptionalHashId,
type PlaylistLibrary as SdkPlaylistLibrary,
type PlaylistUpdate as SdkPlaylistUpdate
} from '@audius/sdk'

import {
PlaylistLibrary,
Expand Down Expand Up @@ -40,7 +44,7 @@ const playlistItemFromSDK = (input: any): PlaylistLibraryItem | null => {
}

export const playlistLibraryFromSDK = (
input?: full.PlaylistLibrary
input?: SdkPlaylistLibrary
): PlaylistLibrary | undefined => {
if (!input) return undefined
return {
Expand All @@ -49,7 +53,7 @@ export const playlistLibraryFromSDK = (
}

export const playlistUpdateFromSDK = (
input: full.PlaylistUpdate
input: SdkPlaylistUpdate
): PlaylistUpdate | undefined => {
const playlist_id = OptionalHashId.parse(input.playlistId)
return playlist_id
Expand Down
4 changes: 2 additions & 2 deletions packages/common/src/adapters/purchase.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { full, HashId } from '@audius/sdk'
import { HashId, type Purchase } from '@audius/sdk'

import { PurchaseAccess } from '~/models/PurchaseContent'
import {
Expand All @@ -7,7 +7,7 @@ import {
} from '~/models/USDCTransactions'
import { StringUSDC } from '~/models/Wallet'

export const purchaseFromSDK = (input: full.Purchase): USDCPurchaseDetails => {
export const purchaseFromSDK = (input: Purchase): USDCPurchaseDetails => {
const {
contentId,
contentType,
Expand Down
Loading
Loading