develop #34

Merged
andrey.dekterev merged 3 commits from develop into master 3 years ago
  1. 110
      .drone.yml
  2. 21
      src/features/BuyMatchPopup/components/SelectSubscription/index.tsx
  3. 14
      src/features/BuyMatchPopup/store/hooks/useSubscriptions.tsx
  4. 6
      src/features/MatchPage/components/SubscriptionGuard/index.tsx
  5. 29
      src/features/TournamentPage/hooks.tsx
  6. 5
      src/helpers/parseUrlParams/parseUrlParams.tsx
  7. 15
      src/requests/getSelectedSubscriptions.tsx

@ -172,32 +172,34 @@ steps:
depends_on: depends_on:
- make-lff - make-lff
# - name: make-diwansport - name: make-diwansport
# image: node:16-alpine image: node:16-alpine
# environment: environment:
# REACT_APP_STRIPE_PK: REACT_APP_STRIPE_PK:
# from_secret: REACT_APP_STRIPE_PK from_secret: REACT_APP_STRIPE_PK
# commands: commands:
# - apk add --no-cache make - apk add --no-cache make
# - make diwansport-prod - make diwansport-prod
# depends_on: depends_on:
# - npm-install - npm-install
#
# - name: deploy-diwansport - name: deploy-diwansport
# image: amazon/aws-cli:latest image: amazon/aws-cli:latest
# environment: environment:
# AWS_ACCESS_KEY_ID: AWS_ACCESS_KEY_ID:
# from_secret: AWS_ACCESS_KEY_ID from_secret: AWS_ACCESS_KEY_ID
# AWS_SECRET_ACCESS_KEY: AWS_SECRET_ACCESS_KEY:
# from_secret: AWS_SECRET_ACCESS_KEY from_secret: AWS_SECRET_ACCESS_KEY
# AWS_DEFAULT_REGION: AWS_DEFAULT_REGION:
# from_secret: AWS_DEFAULT_REGION from_secret: AWS_DEFAULT_REGION
# AWS_MAX_ATTEMPTS: 10 AWS_MAX_ATTEMPTS: 10
# commands: commands:
# - aws s3 sync build_insports-diwansport s3://insports-diwansport --delete - aws s3 sync build_insports-diwansport s3://insports-diwansport --delete
# - aws cloudfront create-invalidation --distribution-id E3LKAH6TR4O2JL --paths "/*" - aws cloudfront create-invalidation --distribution-id E3LKAH6TR4O2JL --paths "/*" # # diwansport.net
# depends_on: - aws cloudfront create-invalidation --distribution-id E3NJ2G0QSB6MVI --paths "/*" # tunisia.insports.tv
# - make-diwansport
depends_on:
- make-diwansport
--- ---
kind: pipeline kind: pipeline
@ -681,3 +683,59 @@ steps:
- rsync -v -r -C build_auth/clients/* ubuntu@auth.test.insports.tv:/home/ubuntu/ott-auth/src/frontend/templates - rsync -v -r -C build_auth/clients/* ubuntu@auth.test.insports.tv:/home/ubuntu/ott-auth/src/frontend/templates
- aws s3 sync build_auth s3://auth-insports-test --delete - aws s3 sync build_auth s3://auth-insports-test --delete
- aws cloudfront create-invalidation --distribution-id E10YI3RFOZZDLZ --paths "/*" - aws cloudfront create-invalidation --distribution-id E10YI3RFOZZDLZ --paths "/*"
---
kind: pipeline
type: docker
name: deploy diwan.insports.tv
concurrency:
limit: 1
platform:
os: linux
arch: amd64
trigger:
ref:
- refs/heads/diwan.insports.tv
steps:
- name: npm-install
image: node:16-alpine
environment:
REACT_APP_STRIPE_PK:
from_secret: REACT_APP_STRIPE_PK
commands:
- apk add --no-cache make
- npm install --legacy-peer-deps
- name: make-diwansport
image: node:16-alpine
environment:
REACT_APP_STRIPE_PK:
from_secret: REACT_APP_STRIPE_PK
commands:
- apk add --no-cache make
- make diwansport-prod
depends_on:
- npm-install
- name: deploy-diwansport
image: amazon/aws-cli:latest
environment:
AWS_ACCESS_KEY_ID:
from_secret: AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY:
from_secret: AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION:
from_secret: AWS_DEFAULT_REGION
AWS_MAX_ATTEMPTS: 10
commands:
- aws s3 sync build_tunisia s3://insports-diwansport --delete
- aws cloudfront create-invalidation --distribution-id E3LKAH6TR4O2JL --paths "/*" # # diwansport.net
- aws cloudfront create-invalidation --distribution-id E3NJ2G0QSB6MVI --paths "/*" # tunisia.insports.tv
depends_on:
- make-diwansport

@ -32,6 +32,7 @@ import {
ChooseSubItem, ChooseSubItem,
ChooseSubList, ChooseSubList,
} from './styled' } from './styled'
import { checkUrlParams, getAllUrlParams } from '../../../../helpers/parseUrlParams/parseUrlParams'
export const SelectSubscriptionStep = () => { export const SelectSubscriptionStep = () => {
const { const {
@ -55,14 +56,18 @@ export const SelectSubscriptionStep = () => {
return ( return (
<Wrapper> <Wrapper>
<Header> <Header>
<HeaderTitle> {(!checkUrlParams('subscribe')
<Names nameObj={match.team1} /> && !getAllUrlParams('id'))
{` ${MDASH} `} && (
<Names nameObj={match.team2} /> <HeaderTitle>
<ChooseSub> <Names nameObj={match.team1} />
<T9n t='choose_subscription' /> {` ${MDASH} `}
</ChooseSub> <Names nameObj={match.team2} />
</HeaderTitle> <ChooseSub>
<T9n t='choose_subscription' />
</ChooseSub>
</HeaderTitle>
)}
<HeaderActions position='right'> <HeaderActions position='right'>
<CloseButton onClick={close} /> <CloseButton onClick={close} />
</HeaderActions> </HeaderActions>

@ -22,6 +22,7 @@ import type {
import { SubscriptionType } from '../../types' import { SubscriptionType } from '../../types'
import { transformSubscriptions } from '../helpers' import { transformSubscriptions } from '../helpers'
import { useSubscriptionsLexics } from './useSubscriptionsLexics' import { useSubscriptionsLexics } from './useSubscriptionsLexics'
import { checkUrlParams } from '../../../../helpers/parseUrlParams/parseUrlParams'
const defaultSubscriptions: MatchSubscriptions = [] const defaultSubscriptions: MatchSubscriptions = []
const defaultPeriod = SubscriptionType.Month const defaultPeriod = SubscriptionType.Month
@ -36,6 +37,11 @@ const getInitialPeriod = (subscription?: MatchSubscription) => {
|| defaultPeriod || defaultPeriod
} }
export const MATCH_CONFIG = {
matchId: 2376841,
sportId: 1,
}
export const useSubscriptions = () => { export const useSubscriptions = () => {
const { suffix } = useLexicsStore() const { suffix } = useLexicsStore()
const { fetchLexics } = useSubscriptionsLexics() const { fetchLexics } = useSubscriptionsLexics()
@ -55,7 +61,13 @@ export const useSubscriptions = () => {
] = useState<MatchPackage | null>(null) ] = useState<MatchPackage | null>(null)
const fetchSubscriptions = useCallback(async (match: Match) => { const fetchSubscriptions = useCallback(async (match: Match) => {
const subscriptions = await getSubscriptions(match.sportType, match.id) let subscriptions
if (checkUrlParams('id') && checkUrlParams('subscribe')) {
subscriptions = await getSubscriptions(MATCH_CONFIG.sportId, MATCH_CONFIG.matchId)
} else {
subscriptions = await getSubscriptions(match.sportType, match.id)
}
const convertedSubscriptions = transformSubscriptions({ const convertedSubscriptions = transformSubscriptions({
match, match,
subscriptions, subscriptions,

@ -7,6 +7,7 @@ import { useBuyMatchPopupStore } from 'features/BuyMatchPopup'
import { useMatchPageStore } from 'features/MatchPage/store' import { useMatchPageStore } from 'features/MatchPage/store'
import { prepareMatchProfile } from '../../helpers/prepareMatchProfile' import { prepareMatchProfile } from '../../helpers/prepareMatchProfile'
import { checkUrlParams, getAllUrlParams } from '../../../../helpers/parseUrlParams/parseUrlParams'
type Props = { type Props = {
children: ReactNode, children: ReactNode,
@ -18,7 +19,10 @@ export const SubscriptionGuard = ({ children }: Props) => {
const { profileId: matchId, sportType } = usePageParams() const { profileId: matchId, sportType } = usePageParams()
useEffect(() => { useEffect(() => {
if (matchProfile && !matchProfile.sub) { if (matchProfile && (
!matchProfile.sub
|| (checkUrlParams('subscribe')
&& getAllUrlParams('id')))) {
const profile = prepareMatchProfile({ const profile = prepareMatchProfile({
matchId, matchId,
profile: matchProfile, profile: matchProfile,

@ -6,19 +6,28 @@ import {
import { useHistory } from 'react-router' import { useHistory } from 'react-router'
import type { TournamentInfo } from 'requests' import type { TournamentInfo } from 'requests'
import { getTournamentInfo, getTournamentMatches } from 'requests' import {
getMatchInfo,
getTournamentInfo,
getTournamentMatches,
MatchInfo,
} from 'requests'
import { checkUrlParams } from 'helpers/parseUrlParams/parseUrlParams' import { checkUrlParams, getAllUrlParams } from 'helpers/parseUrlParams/parseUrlParams'
import { usePageParams } from 'hooks/usePageParams' import { usePageParams } from 'hooks/usePageParams'
import { useName } from 'features/Name' import { useName } from 'features/Name'
import { isPermittedTournament } from '../../helpers/isPermittedTournament' import { isPermittedTournament } from '../../helpers/isPermittedTournament'
import { useProfileCard } from '../ProfileCard/hooks' import { useProfileCard } from '../ProfileCard/hooks'
import { useBuyMatchPopupStore } from '../BuyMatchPopup'
import { MATCH_CONFIG } from '../BuyMatchPopup/store/hooks/useSubscriptions'
import { prepareMatchProfile } from '../MatchPage/helpers/prepareMatchProfile'
export const useTournamentPage = () => { export const useTournamentPage = () => {
const [tournamentProfile, setTournamentProfile] = useState<TournamentInfo>(null) const [tournamentProfile, setTournamentProfile] = useState<TournamentInfo>(null)
const { profileId: tournamentId, sportType } = usePageParams() const { profileId: tournamentId, sportType } = usePageParams()
const { open: openBuyMatchPopup } = useBuyMatchPopupStore()
const country = useName(tournamentProfile?.country || {}) const country = useName(tournamentProfile?.country || {})
const history = useHistory() const history = useHistory()
@ -63,6 +72,22 @@ export const useTournamentPage = () => {
name_rus: tournamentProfile.name_rus, name_rus: tournamentProfile.name_rus,
} }
useEffect(() => {
if ((checkUrlParams('subscribe')
&& getAllUrlParams('id'))) {
getMatchInfo(MATCH_CONFIG.sportId, MATCH_CONFIG.matchId)
.then((match: MatchInfo) => {
const matchProfile = match && prepareMatchProfile({
matchId: MATCH_CONFIG.matchId,
profile: match,
sportType: MATCH_CONFIG.sportId,
})
matchProfile && openBuyMatchPopup(matchProfile)
})
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
return { return {
fetchMatches, fetchMatches,
headerImage: tournamentProfile?.header_image, headerImage: tournamentProfile?.header_image,

@ -7,3 +7,8 @@ export const checkUrlParams = (key: string) => {
const params = new URLSearchParams(window.location.search) const params = new URLSearchParams(window.location.search)
return params.get(key) return params.get(key)
} }
export const getAllUrlParams = (key: string) => {
const params = new URLSearchParams(window.location.search)
return params.getAll(key)
}

@ -0,0 +1,15 @@
import { callApi } from 'helpers'
import { Subscriptions } from './getSubscriptions'
import { API_ROOT } from '../config'
export const getSelectedSubscriptions = async (
): Promise<Subscriptions> => {
const config = {
method: 'GET',
}
return callApi({
config,
url: `${API_ROOT}/v1/subscriptions${window.location.search}`,
})
}
Loading…
Cancel
Save