Skip to content
Draft
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: 1 addition & 5 deletions api/paidAction/itemCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,8 @@ export async function getCost ({ subName, parentId, uploadIds, boost = 0, bio },
FROM upload_fees(${me?.id || USER_ID.anon}::INTEGER, ${uploadIds}::INTEGER[]))
+ ${satsToMsats(boost)}::INTEGER as cost`

// freebies currently only apply to bios (comments disabled). To keep togglable behavior,
// respect user's disableFreebies preference for bios as well.
// conditions: is a bio, cost <= baseCost, user logged in, insufficient balance & credits,
// and user has not disabled freebies
const freebie = bio && cost <= baseCost && !!me &&
me?.msats < cost && me?.mcredits < cost && !me?.disableFreebies
me?.msats < cost && me?.mcredits < cost

return freebie ? BigInt(0) : BigInt(cost)
}
Expand Down
20 changes: 0 additions & 20 deletions api/resolvers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -657,26 +657,6 @@ export default {
},

Mutation: {
disableFreebies: async (parent, args, { me, models }) => {
if (!me) {
throw new GqlAuthenticationError()
}

// disable freebies if it hasn't been set yet
try {
await models.user.update({
where: { id: me.id, disableFreebies: null },
data: { disableFreebies: true }
})
} catch (err) {
// ignore 'record not found' errors
if (err.code !== 'P2025') {
throw err
}
}

return true
},
setName: async (parent, data, { me, models }) => {
if (!me) {
throw new GqlAuthenticationError()
Expand Down
3 changes: 0 additions & 3 deletions api/typeDefs/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ export default gql`
toggleMute(id: ID): User
generateApiKey(id: ID!): String
deleteApiKey(id: ID!): User
disableFreebies: Boolean
setDiagnostics(diagnostics: Boolean!): Boolean
}

Expand Down Expand Up @@ -91,7 +90,6 @@ export default gql`
noReferralLinks: Boolean!
fiatCurrency: String!
satsFilter: Int!
disableFreebies: Boolean
hideBookmarks: Boolean!
hideCowboyHat: Boolean!
hideGithub: Boolean!
Expand Down Expand Up @@ -165,7 +163,6 @@ export default gql`
noReferralLinks: Boolean!
fiatCurrency: String!
satsFilter: Int!
disableFreebies: Boolean
greeterMode: Boolean!
hideBookmarks: Boolean!
hideCowboyHat: Boolean!
Expand Down
5 changes: 2 additions & 3 deletions components/fee-button.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ export function FeeButtonProvider ({ baseLineItems = DEFAULT_BASE_LINE_ITEMS, us
const value = useMemo(() => {
const lines = { ...baseLineItems, ...lineItems, ...remoteLineItems }
const total = Object.values(lines).sort(sortHelper).reduce((acc, { modifier }) => modifier(acc), 0)
// freebies: there's only a base cost and we don't have enough sats
const free = total === lines.baseCost?.modifier(0) && lines.baseCost?.allowFreebies && me?.privates?.sats < total && me?.privates?.credits < total && !me?.privates?.disableFreebies
const free = total === lines.baseCost?.modifier(0) && lines.baseCost?.allowFreebies && me?.privates?.sats < total && me?.privates?.credits < total
return {
lines,
merge: mergeLineItems,
Expand All @@ -123,7 +122,7 @@ export function FeeButtonProvider ({ baseLineItems = DEFAULT_BASE_LINE_ITEMS, us
setDisabled,
free
}
}, [me?.privates?.sats, me?.privates?.disableFreebies, baseLineItems, lineItems, remoteLineItems, mergeLineItems, disabled, setDisabled])
}, [me?.privates?.sats, baseLineItems, lineItems, remoteLineItems, mergeLineItems, disabled, setDisabled])

return (
<FeeButtonContext.Provider value={value}>
Expand Down
2 changes: 0 additions & 2 deletions fragments/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ ${STREAK_FIELDS}
zapUndos
upvotePopover
wildWestMode
disableFreebies
vaultKeyHash
vaultKeyHashUpdatedAt
walletsUpdatedAt
Expand Down Expand Up @@ -101,7 +100,6 @@ export const SETTINGS_FIELDS = gql`
nostrRelays
wildWestMode
satsFilter
disableFreebies
nsfwMode
authMethods {
lightning
Expand Down
1 change: 0 additions & 1 deletion lib/validate.js
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,6 @@ export const settingsSchema = object().shape({
hideWalletBalance: boolean(),
noReferralLinks: boolean(),
hideIsContributor: boolean(),
disableFreebies: boolean().nullable(),
satsFilter: intValidator.required('required').min(0, 'must be at least 0').max(1000, 'must be at most 1000'),
zapUndos: intValidator.nullable().min(0, 'must be greater or equal to 0')
// exclude from cyclic analysis. see https://github.com/jquense/yup/issues/720
Expand Down
15 changes: 0 additions & 15 deletions pages/settings/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ export default function Settings ({ ssrData }) {
tipRandomMin: settings?.tipRandomMin || 1,
tipRandomMax: settings?.tipRandomMax || 10,
turboTipping: settings?.turboTipping,
disableFreebies: settings?.disableFreebies || undefined,
zapUndos: settings?.zapUndos || (settings?.tipDefault ? 100 * settings.tipDefault : 2100),
zapUndosEnabled: settings?.zapUndos !== null,
fiatCurrency: settings?.fiatCurrency || 'USD',
Expand Down Expand Up @@ -255,20 +254,6 @@ export default function Settings ({ ssrData }) {
required
append={<InputGroup.Text className='text-monospace'>sats</InputGroup.Text>}
/>
<Checkbox
label={
<div className='d-flex align-items-center'>disable freebies
<Info>
<p>Some content can occasionally be created without paying, but such content has limited visibility.</p>

<p>If you disable freebies, you will always pay standard fees and get standard visibility.</p>

<p>If you attach a sending wallet, we may disable freebies for you unless you have checked/unchecked this value already.</p>
</Info>
</div>
}
name='disableFreebies'
/>
<div className='form-label'>notify me when ...</div>
<Checkbox
label='I stack sats from posts and comments'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/*
Warnings:

- You are about to drop the column `disableFreebies` on the `users` table. All the data in the column will be lost.

*/
-- AlterTable
ALTER TABLE "users" DROP COLUMN "disableFreebies";
1 change: 0 additions & 1 deletion prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ model User {
imgproxyOnly Boolean @default(false)
showImagesAndVideos Boolean @default(true)
hideWalletBalance Boolean @default(false)
disableFreebies Boolean?
referrerId Int?
nostrPubkey String?
greeterMode Boolean @default(false)
Expand Down