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
72 changes: 52 additions & 20 deletions packages/common/src/messages/edit.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
export const visibilityMessages = {
title: 'Visibility',
title: 'Track Privacy',
description:
'Change the visibility of this release or schedule it to release in the future.',
'Adjust your track’s visibility or schedule it for later release.',
public: 'Public',
publicDescription: 'Visible to everyone on Audius.',
publicDescription: 'Available to everyone on Audius.',
hidden: 'Hidden',
hiddenDescription:
'Only you and people you share a direct link with will be able to listen.',
hiddenDescription: 'Only you and those with a direct link will have access.',
scheduledRelease: 'Scheduled Release',
scheduledReleaseDescription:
'Select the date and time this will become public.',
'Prepare your release ahead of time, then choose when it becomes public.',
dateLabel: 'Release Date',
timeLabel: 'Time',
futureReleaseHint: (timezone: string) =>
Expand All @@ -18,38 +17,43 @@ export const visibilityMessages = {

export const priceAndAudienceMessages = {
title: 'Price & Audience',
freePremiumDescription:
'Customize who can listen to this release. Sell your music and create gated experiences for your fans.',
freePremiumDescription: 'Control who can access your track.',
specialAccessDescription:
'Customize your musics audience and create gated experiences for your fans.',
"Customize your music's audience and create gated experiences for your fans.",
free: 'Free for Everyone',
premium: 'Premium',
specialAccess: 'Special Access',
collectibleGated: 'Collectible Gated',
coinGated: 'Coin Gated',
hidden: 'Hidden',
followersOnly: 'Followers Only',
supportersOnly: 'Supporters Only',
markedAsRemix:
'This track is marked as a remix. To enable additional availability options, unmark within Remix Settings.',
done: 'Done',
publishDisabled:
'Publishing is disabled for empty albums and albums containing hidden tracks.',
fromFreeHint: (
contentType: 'album' | 'track',
gatedType: 'gated' | 'premium'
) => `You can't make a free ${contentType} ${gatedType}.`,
freeRadio: {
title: 'Free for Everyone',
description: (contentType: 'album' | 'track') =>
`Everyone can play your ${contentType} for free.`
`Everyone can stream your ${contentType} for free.`
},
premiumRadio: {
title: 'Premium',
description: {
track: 'Only fans who make a purchase can play your track',
album: 'Only fans who make a purchase can play your album.'
},
description: (contentType: 'album' | 'track') =>
`Only those who purchase can stream your ${contentType}.`,
waitlist:
'Start selling your music on Audius today! Limited access beta now available.',
join: 'Join the Waitlist',
comingSoon: 'Coming Soon'
},
specialAccessRadio: {
title: 'Special Access',
description: 'Only fans who meet certain criteria can listen.',
description: 'Anyone who meets your selected criteria can stream.',
followersOnly: 'Followers Only',
supportersOnly: 'Supporters Only'
},
Expand All @@ -61,20 +65,20 @@ export const priceAndAudienceMessages = {
pickACollection: 'Pick a Collection',
ownersOf: 'Owners Of',
noCollectibles:
'No Collectibles found. To enable this option, link a wallet containing a collectible.'
'No collectibles found. Link a wallet containing a digital collectible to enable this option.'
},
tokenGatedRadio: {
title: 'Coin Gated',
yourCoin: 'your coin',
noCoins: 'No coins found. Launch a coin to enable this option.',
description: (coinTicker: string) =>
`Anyone holding ${coinTicker} can stream.`
}
}

export const advancedTrackMessages = {
title: 'Advanced',
description:
'Provide detailed metadata to help identify and manage your music.',
description: 'Share metadata to help manage your music.',
isAiGenerated: 'AI-Generated',
bpm: {
header: 'Tempo',
Expand All @@ -93,11 +97,11 @@ export const advancedTrackMessages = {
apiAllowed: {
header: 'Disallow Streaming via the API',
description:
'Keep your track from being streamed on third-party apps or services that utilize the Audius API.'
'Exclude from third-party apps or services, which utilize the Audius API.'
},
disableComments: {
header: 'Disable Comments',
description: 'Prevent anyone from leaving a comment on this track.',
description: 'Prevent anyone from commenting on your track.',
value: 'Comments Disabled'
},
isrcTooltip: `ISRC is used to identify individual sound recordings and music videos. ISWC is used to identify the underlying musical composition – the music and lyrics`,
Expand Down Expand Up @@ -152,6 +156,17 @@ export const advancedTrackMessages = {
}
}

export const stemsAndDownloadsMessages = {
title: 'Stems & Downloads',
description: 'Provide additional files available for download.',
values: {
allowDownload: 'Full Track Available',
followerGated: 'Followers Only'
},
price: (price: number) =>
price.toLocaleString('en-US', { style: 'currency', currency: 'USD' })
}

export const advancedAlbumMessages = {
title: 'Advanced',
description:
Expand All @@ -167,3 +182,20 @@ export const advancedAlbumMessages = {
label: 'Release date'
}
}

export const remixSettingsMessages = {
title: 'Remix Settings',
description: 'Identify your track as a remix and adjust the settings.',
remixesHidden: 'Remixes Hidden',
remixOf: 'Remix of',
hideRemixField: {
header: 'Hide Remixes of This Track',
description: "Stop other artists' remixes from showing on your track page."
},
remixOfField: {
header: 'Identify as Remix',
description:
'Link your remix to the original for visibility and artist credit.',
linkLabel: 'Link to original track'
}
}
2 changes: 1 addition & 1 deletion packages/web/src/components/data-entry/ContextualMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ export const ContextualMenu = <FormValues extends FormikValues = FormikValues>(
</Text>
<IconCaretRight color='subdued' size='s' />
</div>
<Text variant='body' textAlign='left'>
<Text variant='body' textAlign='left' color='subdued'>
{description}
</Text>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useCallback, useEffect, useMemo } from 'react'

import { useTrack } from '@audius/common/api'
import { remixSettingsMessages as messages } from '@audius/common/messages'
import {
isContentUSDCPurchaseGated,
ID,
Expand Down Expand Up @@ -36,14 +37,6 @@ import {
SHOW_REMIXES_BASE
} from './types'

const messages = {
title: 'Remix Settings',
description:
'Mark your music as a remix, tag the original track, and customize remix settings.',
remixOf: 'Remix of',
remixesHidden: 'Remixes Hidden'
}

export type RemixOfField = Nullable<{ tracks: { parent_track_id: ID }[] }>

type RemixSettingsFieldProps = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useEffect } from 'react'

import { useTrackByPermalink } from '@audius/common/api'
import { useGatedContentAccess } from '@audius/common/hooks'
import { remixSettingsMessages as messages } from '@audius/common/messages'
import { getPathFromTrackUrl } from '@audius/common/utils'
import { useField } from 'formik'
import { pick } from 'lodash'
Expand All @@ -16,20 +17,6 @@ import styles from './RemixSettingsField.module.css'
import { TrackInfo } from './TrackInfo'
import { CAN_REMIX_PARENT, IS_REMIX, REMIX_LINK, SHOW_REMIXES } from './types'

const messages = {
hideRemix: {
header: 'Hide Remixes of This Track',
description:
'Prevent remixes of your track by other artists from appearing on your track page. '
},
remixOf: {
header: 'Identify as Remix',
description:
'Link your remix to the original track to increase visibility and credit the original artist.',
linkLabel: 'Link to original track'
}
}

export const RemixSettingsMenuFields = () => {
const [{ value: trackUrl }] = useField(REMIX_LINK)
const [, , { setValue: setCanRemixParent }] = useField(CAN_REMIX_PARENT)
Expand Down Expand Up @@ -63,19 +50,19 @@ export const RemixSettingsMenuFields = () => {
<div className={styles.fields}>
<SwitchRowField
name={IS_REMIX}
header={messages.remixOf.header}
description={messages.remixOf.description}
header={messages.remixOfField.header}
description={messages.remixOfField.description}
>
<TextField name={REMIX_LINK} label={messages.remixOf.linkLabel} />
<TextField name={REMIX_LINK} label={messages.remixOfField.linkLabel} />
{track_id ? <TrackInfo trackId={track_id} /> : null}
</SwitchRowField>

<Divider />

<SwitchRowField
name={SHOW_REMIXES}
header={messages.hideRemix.header}
description={messages.hideRemix.description}
header={messages.hideRemixField.header}
description={messages.hideRemixField.description}
inverted
/>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useCallback, useMemo } from 'react'

import { useCurrentUserId } from '@audius/common/api'
import { useUSDCPurchaseConfig } from '@audius/common/hooks'
import { stemsAndDownloadsMessages as messages } from '@audius/common/messages'
import {
AccessConditions,
DownloadTrackAvailabilityType,
Expand Down Expand Up @@ -46,18 +47,6 @@ import {
STREAM_CONDITIONS
} from './types'

const messages = {
title: 'Stems & Downloads',
description:
"Upload your track's source files and customize how fans download your files.",
values: {
allowDownload: 'Full Track Available',
followerGated: 'Followers Only'
},
price: (price: number) =>
price.toLocaleString('en-US', { style: 'currency', currency: 'USD' })
}

type StemsAndDownloadsFieldProps = {
isUpload: boolean
closeMenuCallback?: (data?: any) => void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,8 @@ const messages = {
description:
'Upload your stems and source files to allow fans to remix your track. This does not affect users ability to listen offline.',
[IS_DOWNLOADABLE]: {
header: 'Allow Full Track Download',
description:
'Allow your fans to download a lossless copy of your full track.'
header: 'Full Track Download',
description: 'Provide a full lossless copy of your track for download.'
},
priceTooLow: (minPrice: number) =>
`Price must be at least $${USDC(minPrice / 100).toLocaleString()}.`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { DownloadPriceField } from './DownloadPriceField'

const getMessages = (props: DownloadAvailabilityProps) => ({
downloadAvailability: 'Download Availability',
customize: 'Specify who has access to download your files.',
customize: 'Decide who can download your files.',
public: 'Public',
followers: 'Followers',
premium: 'Premium',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useCallback, useMemo, useState } from 'react'

import { useArtistCoin, useCurrentUserId } from '@audius/common/api'
import { useUSDCPurchaseConfig } from '@audius/common/hooks'
import { priceAndAudienceMessages } from '@audius/common/messages'
import {
isContentCollectibleGated,
isContentFollowGated,
Expand Down Expand Up @@ -76,17 +77,7 @@ import { PriceAndAudienceMenuFields } from './PriceAndAudienceMenuFields'
import { priceAndAudienceSchema } from './priceAndAudienceSchema'

const messages = {
title: 'Price & Audience',
freePremiumDescription:
'Customize who can listen to this release. Sell your music and create gated experiences for your fans.',
specialAccessDescription:
'Customize your music’s audience and create gated experiences for your fans.',
public: 'Free for Everyone',
premium: 'Premium',
specialAccess: 'Special Access',
collectibleGated: 'Collectible Gated',
coinGated: 'Coin Gated',
hidden: 'Hidden',
...priceAndAudienceMessages,
fieldVisibility: {
genre: 'Show Genre',
mood: 'Show Mood',
Expand All @@ -95,8 +86,6 @@ const messages = {
play_count: 'Show Play Count',
remixes: 'Show Remixes'
},
followersOnly: 'Followers Only',
supportersOnly: 'Supporters Only',
ownersOf: 'Owners Of',
price: (price: number) =>
price.toLocaleString('en-US', { style: 'currency', currency: 'USD' }),
Expand Down Expand Up @@ -509,7 +498,7 @@ export const PriceAndAudienceField = (props: PriceAndAudienceFieldProps) => {
}
]
} else {
selectedValues = [{ label: messages.public }]
selectedValues = [{ label: messages.free }]
}

return (
Expand Down
Loading