Skip to content

Commit

Permalink
Merge branch 'dev/channels' into dev/epic
Browse files Browse the repository at this point in the history
  • Loading branch information
samchuk-vlad committed Sep 4, 2024
2 parents a2b0298 + e7dbdd1 commit d5a5b48
Show file tree
Hide file tree
Showing 8 changed files with 256 additions and 21 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ jobs:
GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=subsocial_staging_bot
GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID=e8dc01b0-046c-4698-98ac-05432050961d
GH_FRAMES_SECRET=JG/W96svVHQ3bdaEKWm1h8xJXqxDtqZ6t7tKCZNWhh0=
GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY=GqJKFQavHPEvngh6hNwt9FbqcEYsNvduGvyQuT6ARTHk
GH_DAPP_SECRET_KEY=85Nb7L8gVozH99wYYu4Ggx64DVFKUXH15iwxSNGCgHBs
target: runner
tags: |
${{ env.image }}
Expand Down
4 changes: 3 additions & 1 deletion ci.env
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ NEXT_PUBLIC_IS_MAINTENANCE='$GH_NEXT_PUBLIC_IS_MAINTENANCE'
NEXT_PUBLIC_NEYNAR_CLIENT_ID='$GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID'
FRAMES_SECRET='$GH_FRAMES_SECRET'
NEYNAR_API_KEY='$GH_NEYNAR_API_KEY'
NEXT_PUBLIC_DAPP_PUBLIC_KEY='$GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY'
DAPP_SECRET_KEY='$GH_DAPP_SECRET_KEY'
NEXT_PUBLIC_TELEGRAM_BOT_ID='$GH_NEXT_PUBLIC_TELEGRAM_BOT_ID'
NEXT_PUBLIC_TELEGRAM_BOT_USERNAME='$GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME'
MODERATION_URL='$GH_MODERATION_URL'
Expand Down Expand Up @@ -48,4 +50,4 @@ NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS='$GH_NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS'
NEXT_PUBLIC_TELEGRAM_NOTIFICATION_BOT='$GH_NEXT_PUBLIC_TELEGRAM_NOTIFICATION_BOT'
NEXTAUTH_SECRET='$GH_NEXTAUTH_SECRET'
NEXTAUTH_URL='$GH_NEXTAUTH_URL'
NEXT_PUBLIC_BASE_URL='$GH_NEXT_PUBLIC_BASE_URL'
NEXT_PUBLIC_BASE_URL='$GH_NEXT_PUBLIC_BASE_URL'
7 changes: 7 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ ARG GH_NEXT_PUBLIC_IS_MAINTENANCE
ARG GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID
ARG GH_FRAMES_SECRET
ARG GH_NEYNAR_API_KEY
ARG GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY
ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_ID
ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME
ARG GH_NEXT_PUBLIC_AMP_ID
Expand Down Expand Up @@ -56,6 +57,8 @@ ENV NEXTAUTH_URL=${GH_NEXTAUTH_URL} \
NEXT_PUBLIC_NEYNAR_CLIENT_ID=${GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID} \
FRAMES_SECRET=${GH_FRAMES_SECRET} \
NEYNAR_API_KEY=${GH_NEYNAR_API_KEY} \
NEXT_PUBLIC_DAPP_PUBLIC_KEY=${GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY} \
DAPP_SECRET_KEY=${GH_DAPP_SECRET_KEY} \
NEXT_PUBLIC_TELEGRAM_BOT_ID=${GH_NEXT_PUBLIC_TELEGRAM_BOT_ID} \
NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=${GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME} \
NEXT_PUBLIC_SUBSTRATE_WSS=${GH_NEXT_PUBLIC_SUBSTRATE_WSS} \
Expand Down Expand Up @@ -119,6 +122,8 @@ ARG GH_NEXT_PUBLIC_BASE_PATH
ARG GH_NEXT_PUBLIC_IS_MAINTENANCE
ARG GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID
ARG GH_FRAMES_SECRET
ARG GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY
ARG GH_DAPP_SECRET_KEY
ARG GH_NEYNAR_API_KEY
ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_ID
ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME
Expand Down Expand Up @@ -154,6 +159,8 @@ ENV NEXTAUTH_URL=${GH_NEXTAUTH_URL} \
NEXT_PUBLIC_NEYNAR_CLIENT_ID=${GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID} \
FRAMES_SECRET=${GH_FRAMES_SECRET} \
NEYNAR_API_KEY=${GH_NEYNAR_API_KEY} \
NEXT_PUBLIC_DAPP_PUBLIC_KEY=${GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY} \
DAPP_SECRET_KEY=${GH_DAPP_SECRET_KEY} \
NEXT_PUBLIC_TELEGRAM_BOT_ID=${GH_NEXT_PUBLIC_TELEGRAM_BOT_ID} \
NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=${GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME} \
NEXT_PUBLIC_SUBSTRATE_WSS=${GH_NEXT_PUBLIC_SUBSTRATE_WSS} \
Expand Down
57 changes: 57 additions & 0 deletions src/modules/telegram/channels/ChannelContentPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNav
import ClaimTaskModal from '@/components/tasks/ClaimTaskModal'
import { modalConfigByVariant } from '@/components/tasks/config'
import useAuthorizedForModeration from '@/hooks/useAuthorizedForModeration'
import { ContentContainer } from '@/services/datahub/content-containers/query'
import {
getBalanceQuery,
getExternalTokenBalancesQuery,
} from '@/services/datahub/leaderboard/points-balance/query'
import { GamificationTask } from '@/services/datahub/tasks'
import {
clearGamificationTasksError,
getGamificationTasksQuery,
} from '@/services/datahub/tasks/query'
import { useSendEvent } from '@/stores/analytics'
import { useMyMainAddress } from '@/stores/my-account'
import { convertToBigInt } from '@/utils/strings'
import { Transition } from '@headlessui/react'
import { useQueryClient } from '@tanstack/react-query'
import Image from 'next/image'
Expand Down Expand Up @@ -46,6 +52,10 @@ function ChatContent() {
const { contentContainer, isModerating } = useChannelContentPageContext()
if (!contentContainer) return null

const hasRequirement =
Number(contentContainer.accessThresholdExternalTokenAmount ?? 0) > 0 ||
Number(contentContainer.accessThresholdPointsAmount ?? 0) > 0

return (
<MemeChatRoom
chatId={contentContainer.rootPost.id}
Expand All @@ -54,6 +64,53 @@ function ChatContent() {
)
}

function usePassRequirement(contentContainer: ContentContainer) {
const externalTokenRequirement = convertToBigInt(
contentContainer.accessThresholdExternalTokenAmount ?? 0
)
const pointsRequirement = Number(
contentContainer.accessThresholdPointsAmount ?? 0
)

const myAddress = useMyMainAddress()
const needToFetchExternalTokens = externalTokenRequirement > 0 && !!myAddress
const { data: externalTokens, isLoading: loadingExternalTokens } =
getExternalTokenBalancesQuery.useQuery(myAddress ?? '', {
enabled: needToFetchExternalTokens,
})
const { data: points, isLoading: loadingPoints } = getBalanceQuery.useQuery(
myAddress ?? '',
{
enabled: pointsRequirement > 0,
}
)

let isLoading = false
let passRequirement = true
let amountRequired = 0
let requiredToken = ''
if (pointsRequirement > 0) {
isLoading = loadingPoints
passRequirement = (points ?? 0) >= pointsRequirement
amountRequired = pointsRequirement
requiredToken = 'points'
} else if (externalTokenRequirement > 0) {
isLoading = loadingExternalTokens
const tokenBalance = externalTokens?.find(
(token) => token.id === contentContainer.externalToken?.id
)
passRequirement =
convertToBigInt(tokenBalance?.amount ?? 0) >= externalTokenRequirement
amountRequired = Number(
externalTokenRequirement /
BigInt(10 ** Number(contentContainer.externalToken?.decimals ?? 0))
)
requiredToken = contentContainer.externalToken?.name ?? ''
}

return { passRequirement, isLoading, amountRequired, requiredToken }
}

function ChannelNavbar() {
const [isAboutOpen, setIsAboutOpen] = useState(false)
const [selectedTab, setSelectedTab] = useState('Details')
Expand Down
6 changes: 6 additions & 0 deletions src/services/datahub/content-containers/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ const GET_CONTENT_CONTAINERS = gql`
accessThresholdPointsAmount
likeThresholdExternalTokenAmount
accessThresholdExternalTokenAmount
externalToken {
id
chain
name
decimals
}
}
total
offset
Expand Down
Loading

0 comments on commit d5a5b48

Please sign in to comment.