diff --git a/src/components/molecules/AuthModal.tsx b/src/components/molecules/AuthModal.tsx
index 8ab158964..1986b384b 100644
--- a/src/components/molecules/AuthModal.tsx
+++ b/src/components/molecules/AuthModal.tsx
@@ -28,9 +28,7 @@ import {
} from '../../utils'
import { Caption } from '../typography'
-interface IAuthModal {
- isOpen: boolean
- onClose: () => void
+export type AuthModalAdditionalprops = {
title?: string
description?: string
showTwitter?: boolean
@@ -41,6 +39,10 @@ interface IAuthModal {
showGithub?: boolean
privateRoute?: boolean
}
+type AuthModalProps = {
+ isOpen: boolean
+ onClose: () => void
+} & AuthModalAdditionalprops
const ConnectAccounts = ({
onClose,
@@ -107,7 +109,7 @@ const ConnectAccounts = ({
)
}
-export const AuthModal = (authModalProps: IAuthModal) => {
+export const AuthModal = (authModalProps: AuthModalProps) => {
const { t } = useTranslation()
const isMobile = useMobileMode()
const {
diff --git a/src/modules/navigation/platformNavBar/PlatformNavBar.tsx b/src/modules/navigation/platformNavBar/PlatformNavBar.tsx
index 793ca8656..165295fc4 100644
--- a/src/modules/navigation/platformNavBar/PlatformNavBar.tsx
+++ b/src/modules/navigation/platformNavBar/PlatformNavBar.tsx
@@ -23,7 +23,7 @@ import { ProfileNav } from './profileNav/ProfileNav'
export const PlatformNavBar = () => {
const { isLoggedIn, logout, queryCurrentUser } = useAuthContext()
- const { loginIsOpen, loginOnClose } = useAuthModal()
+ const { loginIsOpen, loginOnClose, loginModalAdditionalProps } = useAuthModal()
const isMobileMode = useMobileMode()
@@ -122,6 +122,7 @@ export const PlatformNavBar = () => {
onLoginAlertModalClose()
emailPromptOnOpen()
}}
+ {...loginModalAdditionalProps}
/>
diff --git a/src/modules/navigation/platformNavBar/components/LoggedOutModal.tsx b/src/modules/navigation/platformNavBar/components/LoggedOutModal.tsx
index acb365473..0870f31db 100644
--- a/src/modules/navigation/platformNavBar/components/LoggedOutModal.tsx
+++ b/src/modules/navigation/platformNavBar/components/LoggedOutModal.tsx
@@ -30,7 +30,7 @@ export const LoggedOutModal = ({ isOpen, onClose }: UseModalProps) => {
{t('Please log back in with your profile, or press continue if want to stay anonymous.')}
-
)
}
-
-const HowVotingWorksModal = ({
- isOpen,
- onClose,
- votingSystem,
- fundingModalProps,
- project,
-}: {
- isOpen: boolean
- onClose: () => void
- votingSystem?: VotingSystem
- fundingModalProps: { onOpen: ({ project }: { project: Project }) => void }
- project: Project
-}) => {
- const { t } = useTranslation()
- const navigate = useNavigate()
-
- if (votingSystem === VotingSystem.StepLog_10) {
- return (
-
-
-
-
- {t('This grant uses ')}
- {t('Incremental Voting')}
- {t(', to ensure that all votes can have an impact. It works like this:')}
-
-
-
- {t('You can vote by sending Sats')}
-
-
- {t('You can vote multiple times and towards multiple projects')}
-
-
-
- {t('You can cast up to 3 votes per project based on the cumulative amounts sent to each project:')}
-
-
-
-
-
-
- {t('1 vote')}
-
-
- {t('From 1,000 to 9,999 sats')}
-
-
-
-
- {t('2 votes')}
-
-
- {t('From 10,000 to 99,999 sats')}
-
-
-
-
- {t('3 votes')}
-
-
- {t('Above 100k sats')}
-
-
-
-
-
-
- {
- navigate(getPath('projectFunding', project.name))
- }}
- >
- {t("Let's vote!")}
-
-
-
-
- )
- }
-
- return (
-
-
-
-
- {t('This grant uses ')}
- {t('Proportional Voting')}
- {t(' to enable more funding to go towards projects. This means:')}
-
-
-
- {t('1 Sat = 1 Vote. Each Sat is one Vote.')}
-
-
- {t('You can send Sats to multiple projects and multiple times')}
-
-
- {t('You can send Sats anonymously')}
-
-
-
-
-
- {
- navigate(getPath('projectFunding', project.name))
- }}
- >
- {t("Let's vote!")}
-
-
-
-
- )
-}
diff --git a/src/pages/grants/grantsPage/components/useProjectFundingModal.tsx b/src/pages/grants/grantsPage/components/useProjectFundingModal.tsx
deleted file mode 100644
index 6eafa7d13..000000000
--- a/src/pages/grants/grantsPage/components/useProjectFundingModal.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { useModal } from '../../../../shared/hooks/useModal'
-import { Project } from '../../../../types'
-
-export type ProjectFundingModalProps = ReturnType
-
-export const useProjectFundingModal = () => {
- return { ...useModal<{ project?: Project }>() }
-}
diff --git a/src/pages/grants/grantsPage/sections/CommunityVoting.tsx b/src/pages/grants/grantsPage/sections/CommunityVoting.tsx
index 4349eb7d1..a84f085a7 100644
--- a/src/pages/grants/grantsPage/sections/CommunityVoting.tsx
+++ b/src/pages/grants/grantsPage/sections/CommunityVoting.tsx
@@ -1,14 +1,11 @@
-import { useDisclosure } from '@chakra-ui/react'
import { useTranslation } from 'react-i18next'
import { H3 } from '@/shared/components/typography'
-import { AuthModal } from '../../../../components/molecules'
import { useAuthContext } from '../../../../context'
import { CardLayout } from '../../../../shared/components/layouts'
-import { Grant, GrantApplicant, GrantStatusEnum, VotingSystem } from '../../../../types'
+import { GrantApplicant, GrantStatusEnum, VotingSystem } from '../../../../types'
import { GrantApplicantCard } from '../components/GrantApplicantCard'
-import { useProjectFundingModal } from '../components/useProjectFundingModal'
interface Props {
applicants: Array
@@ -16,16 +13,11 @@ interface Props {
grantStatus: string
title: string
isClosed?: boolean
- fundingOpenStartDate: number
- fundingOpenEndDate: number
isCompetitionVote: boolean
votingSystem?: VotingSystem
- grant?: Grant
}
export const CommunityVoting = ({
- fundingOpenStartDate,
- fundingOpenEndDate,
applicants,
grantHasVoting,
grantStatus,
@@ -33,11 +25,8 @@ export const CommunityVoting = ({
isClosed,
isCompetitionVote,
votingSystem,
- grant,
}: Props) => {
const { t } = useTranslation()
- const fundingModalProps = useProjectFundingModal()
- const { onOpen, onClose, isOpen } = useDisclosure()
const { user, isLoggedIn } = useAuthContext()
if (!applicants) {
@@ -83,22 +72,12 @@ export const CommunityVoting = ({
isLoggedIn={isLoggedIn}
isClosed={isClosed || false}
isCompetitionVote={isCompetitionVote || false}
- fundingModalProps={fundingModalProps}
canVote={canVote || false}
- onOpenLoginModal={onOpen}
currentUser={user}
votingSystem={votingSystem}
/>
)
})}
-
-
>
)
diff --git a/src/shared/molecules/Feedback.tsx b/src/shared/molecules/Feedback.tsx
index fa29374c4..266c371ec 100644
--- a/src/shared/molecules/Feedback.tsx
+++ b/src/shared/molecules/Feedback.tsx
@@ -19,6 +19,7 @@ type FeedbackProps = {
text?: string | React.ReactNode
children?: React.ReactNode
icon?: React.ReactNode
+ noIcon?: boolean
} & StackProps
const icons = {
@@ -29,7 +30,7 @@ const icons = {
[FeedBackVariant.NEUTRAL]: PiInfo,
}
-export const Feedback = ({ variant, text, children, icon, ...props }: FeedbackProps) => {
+export const Feedback = ({ variant, text, children, icon, noIcon, ...props }: FeedbackProps) => {
const { colors } = useCustomTheme()
const feedbackColors = useMemo(
@@ -81,7 +82,7 @@ export const Feedback = ({ variant, text, children, icon, ...props }: FeedbackPr
color={feedbackColor.color}
{...props}
>
- {icon ? icon : }
+ {noIcon ? null : icon ? icon : }
{children ? (
children
) : (
diff --git a/src/shared/molecules/VotingInfoModal.tsx b/src/shared/molecules/VotingInfoModal.tsx
new file mode 100644
index 000000000..4241c9674
--- /dev/null
+++ b/src/shared/molecules/VotingInfoModal.tsx
@@ -0,0 +1,184 @@
+import { Button, Divider, HStack, ListItem, UnorderedList, VStack } from '@chakra-ui/react'
+import { Trans, useTranslation } from 'react-i18next'
+import { useNavigate } from 'react-router-dom'
+
+import { useAuthContext } from '@/context'
+import { useAuthModal } from '@/pages/auth/hooks'
+import { Project, VotingSystem } from '@/types'
+
+import { CardLayout, Modal } from '../components/layouts'
+import { Body } from '../components/typography'
+import { getPath } from '../constants'
+import { Feedback, FeedBackVariant } from './Feedback'
+
+type VotingInfoModalProps = {
+ isOpen: boolean
+ onClose: () => void
+ votingSystem?: VotingSystem
+ project: Pick
+ modalTitle?: string
+ grantName?: string
+}
+
+export const VotingInfoModal = ({
+ isOpen,
+ onClose,
+ votingSystem,
+ project,
+ modalTitle,
+ grantName,
+}: VotingInfoModalProps) => {
+ const { t } = useTranslation()
+ const navigate = useNavigate()
+
+ const { isLoggedIn } = useAuthContext()
+ const { loginOnOpen } = useAuthModal()
+
+ const isStepVoting = votingSystem === VotingSystem.StepLog_10
+
+ const modalBody = () => {
+ if (isStepVoting) {
+ return (
+ <>
+ {grantName && (
+
+
+
+ {'This project is seeking funding through the '}
+ {'{{grantName}}'}
+ {
+ "To support the project with your vote, please log in with a linked social media account (Lightning accounts are not eligible for voting). You're welcome to contribute even without logging in, but it won't count as a vote."
+ }
+
+
+
+ )}
+
+
+
+ {t('This Grant uses Incremental Voting to ensure that all votes can have an impact. It works like this:')}
+
+
+
+ {t('You can vote by sending Sats')}
+
+
+ {t('You can vote multiple times and towards multiple projects')}
+
+
+
+ {t('You can cast up to 3 votes per project based on the cumulative amounts sent to each project:')}
+
+
+
+
+
+
+
+
+ {t('1 vote')}:
+
+
+ {t('From 1,000 to 9,999 sats')}
+
+
+
+
+
+ {t('2 votes')}:
+
+
+ {t('From 10,000 to 99,999 sats')}
+
+
+
+
+
+ {t('3 votes')}:
+
+
+ {t('Above 100k sats')}
+
+
+
+ >
+ )
+ }
+
+ return (
+
+
+ {t('This Grant uses Proportional Voting to enable more funding to go towards projects. This means:')}
+
+
+
+ {t('1 Sat = 1 Vote. Each Sat is one Vote.')}
+
+
+ {t('You can send Sats to multiple projects and multiple times')}
+
+
+ {t('You can send Sats anonymously')}
+
+
+
+ )
+ }
+
+ return (
+
+ {modalBody()}
+
+ {isLoggedIn || !isStepVoting ? (
+ {
+ navigate(getPath('projectFunding', project.name))
+ }}
+ >
+ {t("Let's vote!")}
+
+ ) : (
+ <>
+ {
+ loginOnOpen({
+ showLightning: false,
+ })
+ }}
+ >
+ {t('Login')}
+
+ {
+ navigate(getPath('projectFunding', project.name))
+ }}
+ >
+ {t('Contribute without login')}
+
+ >
+ )}
+
+
+ )
+}
diff --git a/src/types/generated/graphql.ts b/src/types/generated/graphql.ts
index 68df31cd7..34c5a0ec1 100644
--- a/src/types/generated/graphql.ts
+++ b/src/types/generated/graphql.ts
@@ -1,605 +1,603 @@
-import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'
-import { gql } from '@apollo/client'
-import * as Apollo from '@apollo/client'
-export type Maybe = T | null
-export type InputMaybe = Maybe
-export type Exact = { [K in keyof T]: T[K] }
-export type MakeOptional = Omit & { [SubKey in K]?: Maybe }
-export type MakeMaybe = Omit & { [SubKey in K]: Maybe }
-export type MakeEmpty = { [_ in K]?: never }
-export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }
-export type Omit = Pick>
-export type RequireFields = Omit & { [P in K]-?: NonNullable }
-const defaultOptions = {} as const
+import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql';
+import { gql } from '@apollo/client';
+import * as Apollo from '@apollo/client';
+export type Maybe = T | null;
+export type InputMaybe = Maybe;
+export type Exact = { [K in keyof T]: T[K] };
+export type MakeOptional = Omit & { [SubKey in K]?: Maybe };
+export type MakeMaybe = Omit & { [SubKey in K]: Maybe };
+export type MakeEmpty = { [_ in K]?: never };
+export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
+export type Omit = Pick>;
+export type RequireFields = Omit & { [P in K]-?: NonNullable };
+const defaultOptions = {} as const;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
- ID: { input: string; output: string }
- String: { input: string; output: string }
- Boolean: { input: boolean; output: boolean }
- Int: { input: number; output: number }
- Float: { input: number; output: number }
- /** Add BigInt functionality */
- BigInt: { input: any; output: any }
- /** Date custom scalar type */
- Date: { input: any; output: any }
-}
+ ID: { input: string; output: string; }
+ String: { input: string; output: string; }
+ Boolean: { input: boolean; output: boolean; }
+ Int: { input: number; output: number; }
+ Float: { input: number; output: number; }
+ BigInt: { input: any; output: any; }
+ Date: { input: any; output: any; }
+};
export type ActivitiesCountGroupedByProjectInput = {
- createdAt: DateRangeInput
- feed: ActivityFeedName
-}
+ createdAt: DateRangeInput;
+ feed: ActivityFeedName;
+};
export type ActivitiesGetResponse = {
- __typename?: 'ActivitiesGetResponse'
- activities: Array
- pagination?: Maybe
-}
+ __typename?: 'ActivitiesGetResponse';
+ activities: Array;
+ pagination?: Maybe;
+};
export type Activity = {
- __typename?: 'Activity'
- activityType: Scalars['String']['output']
- createdAt: Scalars['Date']['output']
- id: Scalars['String']['output']
- project: Project
- resource: ActivityResource
-}
+ __typename?: 'Activity';
+ activityType: Scalars['String']['output'];
+ createdAt: Scalars['Date']['output'];
+ id: Scalars['String']['output'];
+ project: Project;
+ resource: ActivityResource;
+};
export type ActivityCreatedSubscriptionInput = {
- where?: InputMaybe
-}
+ where?: InputMaybe;
+};
export type ActivityCreatedSubscriptionWhereInput = {
- countryCode?: InputMaybe
- feed?: InputMaybe
- projectIds?: InputMaybe>
- region?: InputMaybe
- resourceType?: InputMaybe
- tagIds?: InputMaybe>
- userIds?: InputMaybe>
-}
+ countryCode?: InputMaybe;
+ feed?: InputMaybe;
+ projectIds?: InputMaybe>;
+ region?: InputMaybe;
+ resourceType?: InputMaybe;
+ tagIds?: InputMaybe>;
+ userIds?: InputMaybe>;
+};
export enum ActivityFeedName {
FollowedProjects = 'FOLLOWED_PROJECTS',
GlobalProjects = 'GLOBAL_PROJECTS',
- MyProjects = 'MY_PROJECTS',
+ MyProjects = 'MY_PROJECTS'
}
-export type ActivityResource = Entry | FundingTx | Project | ProjectGoal | ProjectReward
+export type ActivityResource = Entry | FundingTx | Project | ProjectGoal | ProjectReward;
export enum ActivityResourceType {
Entry = 'entry',
FundingTx = 'funding_tx',
Project = 'project',
ProjectGoal = 'project_goal',
- ProjectReward = 'project_reward',
+ ProjectReward = 'project_reward'
}
export type AffiliateLink = {
- __typename?: 'AffiliateLink'
- affiliateFeePercentage: Scalars['Int']['output']
- affiliateId?: Maybe
- createdAt: Scalars['Date']['output']
- disabled?: Maybe
- disabledAt?: Maybe
- email: Scalars['String']['output']
- id: Scalars['BigInt']['output']
- label?: Maybe
- lightningAddress: Scalars['String']['output']
- projectId: Scalars['BigInt']['output']
- stats?: Maybe
-}
+ __typename?: 'AffiliateLink';
+ affiliateFeePercentage: Scalars['Int']['output'];
+ affiliateId?: Maybe;
+ createdAt: Scalars['Date']['output'];
+ disabled?: Maybe;
+ disabledAt?: Maybe;
+ email: Scalars['String']['output'];
+ id: Scalars['BigInt']['output'];
+ label?: Maybe;
+ lightningAddress: Scalars['String']['output'];
+ projectId: Scalars['BigInt']['output'];
+ stats?: Maybe;
+};
export type AffiliateLinkCreateInput = {
- affiliateFeePercentage: Scalars['Int']['input']
- affiliateId?: InputMaybe
- email: Scalars['String']['input']
- label: Scalars['String']['input']
- lightningAddress: Scalars['String']['input']
- projectId: Scalars['BigInt']['input']
-}
+ affiliateFeePercentage: Scalars['Int']['input'];
+ affiliateId?: InputMaybe;
+ email: Scalars['String']['input'];
+ label: Scalars['String']['input'];
+ lightningAddress: Scalars['String']['input'];
+ projectId: Scalars['BigInt']['input'];
+};
export type AffiliatePaymentConfirmResponse = {
- __typename?: 'AffiliatePaymentConfirmResponse'
- message?: Maybe
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'AffiliatePaymentConfirmResponse';
+ message?: Maybe;
+ success: Scalars['Boolean']['output'];
+};
export type AffiliatePayoutsStats = {
- __typename?: 'AffiliatePayoutsStats'
- count: Scalars['Int']['output']
- total: Scalars['Int']['output']
-}
+ __typename?: 'AffiliatePayoutsStats';
+ count: Scalars['Int']['output'];
+ total: Scalars['Int']['output'];
+};
export type AffiliateSalesStats = {
- __typename?: 'AffiliateSalesStats'
- count: Scalars['Int']['output']
- total: Scalars['Int']['output']
-}
+ __typename?: 'AffiliateSalesStats';
+ count: Scalars['Int']['output'];
+ total: Scalars['Int']['output'];
+};
export type AffiliateStats = {
- __typename?: 'AffiliateStats'
- payouts: AffiliatePayoutsStats
- sales: AffiliateSalesStats
-}
+ __typename?: 'AffiliateStats';
+ payouts: AffiliatePayoutsStats;
+ sales: AffiliateSalesStats;
+};
export enum AffiliateStatus {
Paid = 'PAID',
- Unpaid = 'UNPAID',
+ Unpaid = 'UNPAID'
}
export type Ambassador = {
- __typename?: 'Ambassador'
- confirmed: Scalars['Boolean']['output']
- id: Scalars['BigInt']['output']
- user: User
-}
+ __typename?: 'Ambassador';
+ confirmed: Scalars['Boolean']['output'];
+ id: Scalars['BigInt']['output'];
+ user: User;
+};
export type AmountSummary = {
- __typename?: 'AmountSummary'
- donationAmount: Scalars['Int']['output']
- rewardsCost: Scalars['Int']['output']
- shippingCost: Scalars['Int']['output']
- total: Scalars['Int']['output']
-}
+ __typename?: 'AmountSummary';
+ donationAmount: Scalars['Int']['output'];
+ rewardsCost: Scalars['Int']['output'];
+ shippingCost: Scalars['Int']['output'];
+ total: Scalars['Int']['output'];
+};
export enum AnalyticsGroupByInterval {
Day = 'day',
Month = 'month',
Week = 'week',
- Year = 'year',
+ Year = 'year'
}
export type Badge = {
- __typename?: 'Badge'
- createdAt: Scalars['Date']['output']
- description: Scalars['String']['output']
- id: Scalars['String']['output']
- image: Scalars['String']['output']
- name: Scalars['String']['output']
- thumb: Scalars['String']['output']
- uniqueName: Scalars['String']['output']
-}
+ __typename?: 'Badge';
+ createdAt: Scalars['Date']['output'];
+ description: Scalars['String']['output'];
+ id: Scalars['String']['output'];
+ image: Scalars['String']['output'];
+ name: Scalars['String']['output'];
+ thumb: Scalars['String']['output'];
+ uniqueName: Scalars['String']['output'];
+};
export type BadgeClaimInput = {
- userBadgeId: Scalars['BigInt']['input']
-}
+ userBadgeId: Scalars['BigInt']['input'];
+};
export type BadgesGetInput = {
- where?: InputMaybe
-}
+ where?: InputMaybe;
+};
export type BadgesGetWhereInput = {
- fundingTxId?: InputMaybe
- userId?: InputMaybe
-}
+ fundingTxId?: InputMaybe;
+ userId?: InputMaybe;
+};
export enum BaseCurrency {
- Btc = 'BTC',
+ Btc = 'BTC'
}
export type BitcoinQuote = {
- __typename?: 'BitcoinQuote'
- quote: Scalars['Float']['output']
- quoteCurrency: QuoteCurrency
-}
+ __typename?: 'BitcoinQuote';
+ quote: Scalars['Float']['output'];
+ quoteCurrency: QuoteCurrency;
+};
export type BoardVoteGrant = {
- __typename?: 'BoardVoteGrant'
- applicants: Array
- balance: Scalars['Int']['output']
- boardMembers: Array
- description?: Maybe
- id: Scalars['BigInt']['output']
- image?: Maybe
- name: Scalars['String']['output']
- shortDescription: Scalars['String']['output']
- sponsors: Array
- status: GrantStatusEnum
- statuses: Array
- title: Scalars['String']['output']
- type: GrantType
-}
+ __typename?: 'BoardVoteGrant';
+ applicants: Array;
+ balance: Scalars['Int']['output'];
+ boardMembers: Array;
+ description?: Maybe;
+ id: Scalars['BigInt']['output'];
+ image?: Maybe;
+ name: Scalars['String']['output'];
+ shortDescription: Scalars['String']['output'];
+ sponsors: Array;
+ status: GrantStatusEnum;
+ statuses: Array;
+ title: Scalars['String']['output'];
+ type: GrantType;
+};
+
export type BoardVoteGrantApplicantsArgs = {
- input?: InputMaybe
-}
+ input?: InputMaybe;
+};
export type CommunityVoteGrant = {
- __typename?: 'CommunityVoteGrant'
- applicants: Array
- balance: Scalars['Int']['output']
- description?: Maybe
- distributionSystem: DistributionSystem
- id: Scalars['BigInt']['output']
- image?: Maybe
- name: Scalars['String']['output']
- shortDescription: Scalars['String']['output']
- sponsors: Array
- status: GrantStatusEnum
- statuses: Array
- title: Scalars['String']['output']
- type: GrantType
- votes: CompetitionVoteGrantVoteSummary
- votingSystem: VotingSystem
-}
+ __typename?: 'CommunityVoteGrant';
+ applicants: Array;
+ balance: Scalars['Int']['output'];
+ description?: Maybe;
+ distributionSystem: DistributionSystem;
+ id: Scalars['BigInt']['output'];
+ image?: Maybe;
+ name: Scalars['String']['output'];
+ shortDescription: Scalars['String']['output'];
+ sponsors: Array;
+ status: GrantStatusEnum;
+ statuses: Array;
+ title: Scalars['String']['output'];
+ type: GrantType;
+ votes: CompetitionVoteGrantVoteSummary;
+ votingSystem: VotingSystem;
+};
+
export type CommunityVoteGrantApplicantsArgs = {
- input?: InputMaybe
-}
+ input?: InputMaybe;
+};
export type CompetitionVoteGrantVoteSummary = {
- __typename?: 'CompetitionVoteGrantVoteSummary'
- voteCount: Scalars['Int']['output']
- voterCount: Scalars['Int']['output']
-}
+ __typename?: 'CompetitionVoteGrantVoteSummary';
+ voteCount: Scalars['Int']['output'];
+ voterCount: Scalars['Int']['output'];
+};
-export type ConnectionDetails =
- | LightningAddressConnectionDetails
- | LndConnectionDetailsPrivate
- | LndConnectionDetailsPublic
+export type ConnectionDetails = LightningAddressConnectionDetails | LndConnectionDetailsPrivate | LndConnectionDetailsPublic;
export type Country = {
- __typename?: 'Country'
- code: Scalars['String']['output']
- name: Scalars['String']['output']
-}
+ __typename?: 'Country';
+ code: Scalars['String']['output'];
+ name: Scalars['String']['output'];
+};
export type CreateEntryInput = {
- content?: InputMaybe
+ content?: InputMaybe;
/** Short description of the Entry. */
- description: Scalars['String']['input']
+ description: Scalars['String']['input'];
/** Header image of the Entry. */
- image?: InputMaybe
- projectId: Scalars['BigInt']['input']
+ image?: InputMaybe;
+ projectId: Scalars['BigInt']['input'];
/** Title of the Entry. */
- title: Scalars['String']['input']
- type: EntryType
-}
+ title: Scalars['String']['input'];
+ type: EntryType;
+};
export type CreateProjectInput = {
/** Project ISO3166 country code */
- countryCode?: InputMaybe
+ countryCode?: InputMaybe;
/** A short description of the project. */
- description: Scalars['String']['input']
- email: Scalars['String']['input']
+ description: Scalars['String']['input'];
+ email: Scalars['String']['input'];
/** Main project image. */
- image?: InputMaybe
- name: Scalars['String']['input']
+ image?: InputMaybe;
+ name: Scalars['String']['input'];
/** Project region */
- region?: InputMaybe
+ region?: InputMaybe;
/** The currency used to price rewards for the project. Currently only USDCENT supported. */
- rewardCurrency?: InputMaybe
- shortDescription?: InputMaybe
- thumbnailImage?: InputMaybe
+ rewardCurrency?: InputMaybe;
+ shortDescription?: InputMaybe;
+ thumbnailImage?: InputMaybe;
/** Public title of the project. */
- title: Scalars['String']['input']
- type?: InputMaybe
-}
+ title: Scalars['String']['input'];
+ type?: InputMaybe;
+};
export type CreateProjectRewardInput = {
- category?: InputMaybe
+ category?: InputMaybe;
/** Cost of the reward, currently only in USD cents */
- cost: Scalars['Int']['input']
- description?: InputMaybe
- estimatedAvailabilityDate?: InputMaybe
- estimatedDeliveryInWeeks?: InputMaybe
- hasShipping: Scalars['Boolean']['input']
- image?: InputMaybe
- isAddon?: InputMaybe
- isHidden?: InputMaybe
- maxClaimable?: InputMaybe
- name: Scalars['String']['input']
- preOrder?: InputMaybe
- projectId: Scalars['BigInt']['input']
-}
+ cost: Scalars['Int']['input'];
+ description?: InputMaybe;
+ estimatedAvailabilityDate?: InputMaybe;
+ estimatedDeliveryInWeeks?: InputMaybe;
+ hasShipping: Scalars['Boolean']['input'];
+ image?: InputMaybe;
+ isAddon?: InputMaybe;
+ isHidden?: InputMaybe;
+ maxClaimable?: InputMaybe;
+ name: Scalars['String']['input'];
+ preOrder?: InputMaybe;
+ projectId: Scalars['BigInt']['input'];
+};
export type CreateWalletInput = {
- feePercentage: Scalars['Float']['input']
- lightningAddressConnectionDetailsInput?: InputMaybe
- lndConnectionDetailsInput?: InputMaybe
- name?: InputMaybe
- resourceInput: WalletResourceInput
-}
+ feePercentage: Scalars['Float']['input'];
+ lightningAddressConnectionDetailsInput?: InputMaybe;
+ lndConnectionDetailsInput?: InputMaybe;
+ name?: InputMaybe;
+ resourceInput: WalletResourceInput;
+};
export type CreatorNotificationSettings = {
- __typename?: 'CreatorNotificationSettings'
- notificationSettings: Array
- project: CreatorNotificationSettingsProject
- userId: Scalars['BigInt']['output']
-}
+ __typename?: 'CreatorNotificationSettings';
+ notificationSettings: Array;
+ project: CreatorNotificationSettingsProject;
+ userId: Scalars['BigInt']['output'];
+};
export type CreatorNotificationSettingsProject = {
- __typename?: 'CreatorNotificationSettingsProject'
- id: Scalars['BigInt']['output']
- image?: Maybe
- title: Scalars['String']['output']
-}
+ __typename?: 'CreatorNotificationSettingsProject';
+ id: Scalars['BigInt']['output'];
+ image?: Maybe;
+ title: Scalars['String']['output'];
+};
export enum Currency {
- Usdcent = 'USDCENT',
+ Usdcent = 'USDCENT'
}
export type CurrencyQuoteGetInput = {
- baseCurrency: BaseCurrency
- quoteCurrency: QuoteCurrency
-}
+ baseCurrency: BaseCurrency;
+ quoteCurrency: QuoteCurrency;
+};
export type CurrencyQuoteGetResponse = {
- __typename?: 'CurrencyQuoteGetResponse'
- baseCurrency: BaseCurrency
- quote: Scalars['Float']['output']
- quoteCurrency: QuoteCurrency
- timestamp: Scalars['Date']['output']
-}
+ __typename?: 'CurrencyQuoteGetResponse';
+ baseCurrency: BaseCurrency;
+ quote: Scalars['Float']['output'];
+ quoteCurrency: QuoteCurrency;
+ timestamp: Scalars['Date']['output'];
+};
export type CursorInput = {
- id: Scalars['BigInt']['input']
-}
+ id: Scalars['BigInt']['input'];
+};
export type CursorInputString = {
- id: Scalars['String']['input']
-}
+ id: Scalars['String']['input'];
+};
export type CursorPaginationResponse = {
- __typename?: 'CursorPaginationResponse'
- count?: Maybe
- cursor?: Maybe
- take?: Maybe
-}
+ __typename?: 'CursorPaginationResponse';
+ count?: Maybe;
+ cursor?: Maybe;
+ take?: Maybe;
+};
export type DateRangeInput = {
- endDateTime?: InputMaybe
- startDateTime?: InputMaybe
-}
+ endDateTime?: InputMaybe;
+ startDateTime?: InputMaybe;
+};
export type DatetimeRange = {
- __typename?: 'DatetimeRange'
+ __typename?: 'DatetimeRange';
/** The end datetime for filtering the data, default is now. */
- endDateTime?: Maybe
+ endDateTime?: Maybe;
/** The start datetime for filtering the data. */
- startDateTime: Scalars['Date']['output']
-}
+ startDateTime: Scalars['Date']['output'];
+};
export type DeleteProjectInput = {
- projectId: Scalars['BigInt']['input']
-}
+ projectId: Scalars['BigInt']['input'];
+};
export type DeleteProjectRewardInput = {
- projectRewardId: Scalars['BigInt']['input']
-}
+ projectRewardId: Scalars['BigInt']['input'];
+};
export type DeleteUserResponse = MutationResponse & {
- __typename?: 'DeleteUserResponse'
- message?: Maybe
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'DeleteUserResponse';
+ message?: Maybe;
+ success: Scalars['Boolean']['output'];
+};
export enum DistributionSystem {
None = 'NONE',
Proportional = 'PROPORTIONAL',
- WinnerTakeAll = 'WINNER_TAKE_ALL',
+ WinnerTakeAll = 'WINNER_TAKE_ALL'
}
export type EmailVerifyInput = {
- otp: Scalars['Int']['input']
- otpVerificationToken: Scalars['String']['input']
-}
+ otp: Scalars['Int']['input'];
+ otpVerificationToken: Scalars['String']['input'];
+};
export type Entry = {
- __typename?: 'Entry'
+ __typename?: 'Entry';
/** Total amount of satoshis funded from the Entry page. */
- amountFunded: Scalars['Int']['output']
- content?: Maybe
- createdAt: Scalars['String']['output']
+ amountFunded: Scalars['Int']['output'];
+ content?: Maybe;
+ createdAt: Scalars['String']['output'];
/** User that created the Entry. */
- creator: User
+ creator: User;
/** Short description of the Entry. */
- description: Scalars['String']['output']
+ description: Scalars['String']['output'];
/** Number of funders that were created from the Entry's page. */
- fundersCount: Scalars['Int']['output']
+ fundersCount: Scalars['Int']['output'];
/** Funding transactions that were created from the Entry's page. */
- fundingTxs: Array
- id: Scalars['BigInt']['output']
+ fundingTxs: Array;
+ id: Scalars['BigInt']['output'];
/** Header image of the Entry. */
- image?: Maybe
+ image?: Maybe;
/** Project within which the Entry was created. */
- project?: Maybe
- publishedAt?: Maybe
- status: EntryStatus
+ project?: Maybe;
+ publishedAt?: Maybe;
+ status: EntryStatus;
/** Title of the Entry. */
- title: Scalars['String']['output']
- type: EntryType
- updatedAt: Scalars['String']['output']
-}
+ title: Scalars['String']['output'];
+ type: EntryType;
+ updatedAt: Scalars['String']['output'];
+};
export type EntryPublishedSubscriptionResponse = {
- __typename?: 'EntryPublishedSubscriptionResponse'
- entry: Entry
-}
+ __typename?: 'EntryPublishedSubscriptionResponse';
+ entry: Entry;
+};
export enum EntryStatus {
Deleted = 'deleted',
Published = 'published',
- Unpublished = 'unpublished',
+ Unpublished = 'unpublished'
}
export enum EntryType {
Article = 'article',
Podcast = 'podcast',
- Video = 'video',
+ Video = 'video'
}
export type ExternalAccount = {
- __typename?: 'ExternalAccount'
- accountType: Scalars['String']['output']
- externalId: Scalars['String']['output']
- externalUsername: Scalars['String']['output']
- id: Scalars['BigInt']['output']
- public: Scalars['Boolean']['output']
-}
+ __typename?: 'ExternalAccount';
+ accountType: Scalars['String']['output'];
+ externalId: Scalars['String']['output'];
+ externalUsername: Scalars['String']['output'];
+ id: Scalars['BigInt']['output'];
+ public: Scalars['Boolean']['output'];
+};
export type FileUploadInput = {
- name?: InputMaybe
+ name?: InputMaybe;
/** MIME type of the file. Currently only supports image types. */
- type?: InputMaybe
-}
+ type?: InputMaybe;
+};
/** The Funder type contains a User's funding details over a particular project. */
export type Funder = {
- __typename?: 'Funder'
+ __typename?: 'Funder';
/** Aggregate amount funded by a Funder over all his (confirmed) funding transactions for a particular project, in satoshis. */
- amountFunded?: Maybe
+ amountFunded?: Maybe;
/** Boolean value indicating whether at least one of the funding transactions of the Funder were confirmed. */
- confirmed: Scalars['Boolean']['output']
+ confirmed: Scalars['Boolean']['output'];
/** Time at which the first confirmed funding transactions of the Funder was confirmed. */
- confirmedAt?: Maybe
+ confirmedAt?: Maybe;
/** Funder's funding txs. */
- fundingTxs: Array
- id: Scalars['BigInt']['output']
- orders: Array
+ fundingTxs: Array;
+ id: Scalars['BigInt']['output'];
+ orders: Array;
/** Contributor's rank in the project. */
- rank?: Maybe
+ rank?: Maybe;
/** Number of (confirmed) times a Funder funded a particular project. */
- timesFunded?: Maybe
- user?: Maybe
-}
+ timesFunded?: Maybe;
+ user?: Maybe;
+};
+
/** The Funder type contains a User's funding details over a particular project. */
export type FunderFundingTxsArgs = {
- input?: InputMaybe
-}
+ input?: InputMaybe;
+};
export type FunderRewardGraphSum = GraphSumData & {
- __typename?: 'FunderRewardGraphSum'
- dateTime: Scalars['Date']['output']
- rewardId: Scalars['BigInt']['output']
- rewardName: Scalars['String']['output']
- sum: Scalars['Int']['output']
-}
+ __typename?: 'FunderRewardGraphSum';
+ dateTime: Scalars['Date']['output'];
+ rewardId: Scalars['BigInt']['output'];
+ rewardName: Scalars['String']['output'];
+ sum: Scalars['Int']['output'];
+};
export type FundingCancelInput = {
- address?: InputMaybe
- failureReason?: InputMaybe
- id?: InputMaybe
- invoiceId?: InputMaybe
-}
+ address?: InputMaybe;
+ failureReason?: InputMaybe;
+ id?: InputMaybe;
+ invoiceId?: InputMaybe;
+};
export type FundingCancelResponse = {
- __typename?: 'FundingCancelResponse'
- id: Scalars['BigInt']['output']
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'FundingCancelResponse';
+ id: Scalars['BigInt']['output'];
+ success: Scalars['Boolean']['output'];
+};
export type FundingConfirmInput = {
- amount: Scalars['Int']['input']
- offChain?: InputMaybe
- onChain?: InputMaybe
- paidAt: Scalars['Date']['input']
-}
+ amount: Scalars['Int']['input'];
+ offChain?: InputMaybe;
+ onChain?: InputMaybe;
+ paidAt: Scalars['Date']['input'];
+};
export type FundingConfirmOffChainBolt11Input = {
- invoiceId: Scalars['String']['input']
- settleIndex?: InputMaybe
-}
+ invoiceId: Scalars['String']['input'];
+ settleIndex?: InputMaybe;
+};
export type FundingConfirmOffChainInput = {
- bolt11: FundingConfirmOffChainBolt11Input
-}
+ bolt11: FundingConfirmOffChainBolt11Input;
+};
export type FundingConfirmOnChainInput = {
- address: Scalars['String']['input']
- tx?: InputMaybe
-}
+ address: Scalars['String']['input'];
+ tx?: InputMaybe;
+};
export type FundingConfirmResponse = {
- __typename?: 'FundingConfirmResponse'
- id: Scalars['BigInt']['output']
- missedSettleEvents?: Maybe
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'FundingConfirmResponse';
+ id: Scalars['BigInt']['output'];
+ missedSettleEvents?: Maybe;
+ success: Scalars['Boolean']['output'];
+};
export type FundingCreateFromPodcastKeysendInput = {
- amount: Scalars['Int']['input']
- appName: Scalars['String']['input']
- comment?: InputMaybe
- externalId?: InputMaybe
- externalUsername?: InputMaybe
- paidAt: Scalars['Date']['input']
- projectId: Scalars['BigInt']['input']
-}
+ amount: Scalars['Int']['input'];
+ appName: Scalars['String']['input'];
+ comment?: InputMaybe;
+ externalId?: InputMaybe;
+ externalUsername?: InputMaybe;
+ paidAt: Scalars['Date']['input'];
+ projectId: Scalars['BigInt']['input'];
+};
export type FundingInput = {
- affiliateId?: InputMaybe
+ affiliateId?: InputMaybe;
/** Set to true if the funder wishes to remain anonymous. The user will still be associated to the funding transaction. */
- anonymous: Scalars['Boolean']['input']
+ anonymous: Scalars['Boolean']['input'];
/** The donation amount, in satoshis. */
- donationAmount: Scalars['Int']['input']
- metadataInput?: InputMaybe
- orderInput?: InputMaybe
+ donationAmount: Scalars['Int']['input'];
+ metadataInput?: InputMaybe;
+ orderInput?: InputMaybe;
/** The ProjectGoal linked to this funding transaction. */
- projectGoalId?: InputMaybe
- projectId: Scalars['BigInt']['input']
+ projectGoalId?: InputMaybe;
+ projectId: Scalars['BigInt']['input'];
/** The resource from which the funding transaction is being created. */
- sourceResourceInput: ResourceInput
- swapPublicKey?: InputMaybe
-}
+ sourceResourceInput: ResourceInput;
+ swapPublicKey?: InputMaybe;
+};
export type FundingMetadataInput = {
- comment?: InputMaybe
- email?: InputMaybe
- media?: InputMaybe
-}
+ comment?: InputMaybe;
+ email?: InputMaybe;
+ media?: InputMaybe;
+};
export enum FundingMethod {
GeyserQr = 'geyser_qr',
LnAddress = 'ln_address',
LnurlPay = 'lnurl_pay',
Nip57Zap = 'nip57_zap',
- PodcastKeysend = 'podcast_keysend',
+ PodcastKeysend = 'podcast_keysend'
}
export type FundingMutationResponse = {
- __typename?: 'FundingMutationResponse'
- fundingTx?: Maybe
- swap?: Maybe
-}
+ __typename?: 'FundingMutationResponse';
+ fundingTx?: Maybe;
+ swap?: Maybe;
+};
export type FundingPendingInput = {
- amount: Scalars['Int']['input']
- offChain?: InputMaybe
- onChain?: InputMaybe
-}
+ amount: Scalars['Int']['input'];
+ offChain?: InputMaybe;
+ onChain?: InputMaybe;
+};
export type FundingPendingOffChainBolt11Input = {
- invoiceId: Scalars['String']['input']
-}
+ invoiceId: Scalars['String']['input'];
+};
export type FundingPendingOffChainInput = {
- bolt11: FundingPendingOffChainBolt11Input
-}
+ bolt11: FundingPendingOffChainBolt11Input;
+};
export type FundingPendingOnChainInput = {
- address: Scalars['String']['input']
- tx?: InputMaybe
-}
+ address: Scalars['String']['input'];
+ tx?: InputMaybe;
+};
export type FundingPendingResponse = {
- __typename?: 'FundingPendingResponse'
- id: Scalars['BigInt']['output']
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'FundingPendingResponse';
+ id: Scalars['BigInt']['output'];
+ success: Scalars['Boolean']['output'];
+};
export type FundingQueryResponse = {
- __typename?: 'FundingQueryResponse'
- fundingTx?: Maybe
- message: Scalars['String']['output']
- success: Scalars['Boolean']['output']
-}
+ __typename?: 'FundingQueryResponse';
+ fundingTx?: Maybe;
+ message: Scalars['String']['output'];
+ success: Scalars['Boolean']['output'];
+};
export enum FundingResourceType {
Entry = 'entry',
Project = 'project',
- User = 'user',
+ User = 'user'
}
export enum FundingStatus {
@@ -607,953 +605,1003 @@ export enum FundingStatus {
Paid = 'paid',
PartiallyPaid = 'partially_paid',
Pending = 'pending',
- Unpaid = 'unpaid',
+ Unpaid = 'unpaid'
}
export type FundingTx = {
- __typename?: 'FundingTx'
- address?: Maybe
- affiliateFeeInSats?: Maybe
- amount: Scalars['Int']['output']
- amountPaid: Scalars['Int']['output']
- bitcoinQuote?: Maybe
- comment?: Maybe
- createdAt?: Maybe
+ __typename?: 'FundingTx';
+ address?: Maybe;
+ affiliateFeeInSats?: Maybe;
+ amount: Scalars['Int']['output'];
+ amountPaid: Scalars['Int']['output'];
+ bitcoinQuote?: Maybe;
+ comment?: Maybe