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
34 changes: 5 additions & 29 deletions src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@ import { Collapsible, ConfirmModal, LoadingCircles } from '~/libs/ui'
import { UserProfile } from '~/libs/core'
import { downloadBlob } from '~/libs/shared'

import { editPayment, exportSearchResults, getMemberHandle, getPaymentMethods, getPayments, getTaxForms } from '../../../lib/services/wallet'
import { editPayment, exportSearchResults, getMemberHandle, getPayments } from '../../../lib/services/wallet'
import { Winning, WinningDetail } from '../../../lib/models/WinningDetail'
import { FilterBar, formatIOSDateString, PaymentView } from '../../../lib'
import { ConfirmFlowData } from '../../../lib/models/ConfirmFlowData'
import { PaginationInfo } from '../../../lib/models/PaginationInfo'
import { TaxForm } from '../../../lib/models/TaxForm'
import { PaymentProvider } from '../../../lib/models/PaymentProvider'
import PaymentEditForm from '../../../lib/components/payment-edit/PaymentEdit'
import PaymentsTable from '../../../lib/components/payments-table/PaymentTable'

Expand Down Expand Up @@ -102,7 +100,7 @@ const ListView: FC<ListViewProps> = (props: ListViewProps) => {
}, [])

const convertToWinnings = useCallback(
(payments: WinningDetail[], handleMap: Map<number, string>, userHasTaxFormSetup: Map<string, boolean>, userHasPaymentProvider: Map<string, boolean>): ReadonlyArray<Winning> => payments.map(payment => {
(payments: WinningDetail[], handleMap: Map<number, string>): ReadonlyArray<Winning> => payments.map(payment => {
const now = new Date()
const releaseDate = new Date(payment.releaseDate)
const diffMs = releaseDate.getTime() - now.getTime()
Expand All @@ -129,9 +127,9 @@ const ListView: FC<ListViewProps> = (props: ListViewProps) => {
}

if (status === 'ON_HOLD') {
if (!userHasTaxFormSetup.get(payment.winnerId)) {
if (!payment.paymentStatus?.taxFormSetupComplete) {
status = 'On Hold (Tax Form)'
} else if (!userHasPaymentProvider.get(payment.winnerId)) {
} else if (!payment.paymentStatus?.payoutSetupComplete) {
status = 'On Hold (Payment Provider)'
} else {
status = 'On Hold (Member)'
Expand Down Expand Up @@ -169,30 +167,8 @@ const ListView: FC<ListViewProps> = (props: ListViewProps) => {
const payments = await getPayments(pagination.pageSize, (pagination.currentPage - 1) * pagination.pageSize, filters)
const winnerIds = payments.winnings.map(winning => winning.winnerId)

const onHoldUserIds = payments.winnings
.filter(winning => winning.details[0].status === 'ON_HOLD')
.map(winning => winning.winnerId)

const userHasTaxFormSetup: Map<string, boolean> = new Map()
const userHasPaymentProvider: Map<string, boolean> = new Map()

try {
const missingTaxForms = await getTaxForms(100, 0, onHoldUserIds)
const missingPaymentProviders = await getPaymentMethods(100, 0, onHoldUserIds)

missingTaxForms.forms.forEach((form: TaxForm) => {
userHasTaxFormSetup.set(form.userId, form.status === 'ACTIVE')
})

missingPaymentProviders.paymentMethods.forEach((method: PaymentProvider) => {
userHasPaymentProvider.set(method.userId, method.status === 'CONNECTED')
})
} catch (err) {
// Ignore errors
}

const handleMap = await getMemberHandle(winnerIds)
const winningsData = convertToWinnings(payments.winnings, handleMap, userHasTaxFormSetup, userHasPaymentProvider)
const winningsData = convertToWinnings(payments.winnings, handleMap)
setWinnings(winningsData)
setPagination(payments.pagination)
} catch (apiError) {
Expand Down
10 changes: 0 additions & 10 deletions src/apps/wallet-admin/src/lib/models/PaymentProvider.ts

This file was deleted.

12 changes: 0 additions & 12 deletions src/apps/wallet-admin/src/lib/models/TaxForm.ts

This file was deleted.

6 changes: 6 additions & 0 deletions src/apps/wallet-admin/src/lib/models/WinningDetail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ export interface PaymentDetail {
datePaid: string
}

export interface PayoutStatus {
payoutSetupComplete: boolean;
taxFormSetupComplete: boolean;
}

export interface Winning {
id: string
description: string
Expand Down Expand Up @@ -42,4 +47,5 @@ export interface WinningDetail {
createdAt: string
releaseDate: string
datePaid: string
paymentStatus?: PayoutStatus
}
57 changes: 0 additions & 57 deletions src/apps/wallet-admin/src/lib/services/wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import { xhrDeleteAsync, xhrGetAsync, xhrPatchAsync, xhrPostAsync } from '~/libs
import { postAsyncWithBlobHandling } from '~/libs/core/lib/xhr/xhr-functions/xhr.functions'

import { WalletDetails } from '../models/WalletDetails'
import { TaxForm } from '../models/TaxForm'
import { WinningDetail } from '../models/WinningDetail'
import { PaymentProvider } from '../models/PaymentProvider'
import { TransactionResponse } from '../models/TransactionId'
import { PaginationInfo } from '../models/PaginationInfo'
import { WinningsAudit } from '../models/WinningsAudit'
Expand Down Expand Up @@ -228,58 +226,3 @@ export async function getMemberHandle(userIds: string[]): Promise<Map<number, st

return handleMap
}

// TODO: remove
export async function getTaxForms(limit: number, offset: number, userIds: string[]): Promise<{
forms: TaxForm[],
pagination: PaginationInfo
}> {
const body = JSON.stringify({
limit,
offset,
userIds,
})

const url = `${baseUrl}/admin/tax-forms`
const response = await xhrPostAsync<string, ApiResponse<{
forms: TaxForm[],
pagination: PaginationInfo
}>>(url, body)

if (response.status === 'error') {
throw new Error('Error fetching tax forms')
}

if (response.data.forms === null || response.data.forms === undefined) {
response.data.forms = []
}

return response.data
}

export async function getPaymentMethods(limit: number, offset: number, userIds: string[]): Promise<{
paymentMethods: PaymentProvider[],
pagination: PaginationInfo
}> {
const body = JSON.stringify({
limit,
offset,
userIds,
})

const url = `${baseUrl}/admin/payment-methods`
const response = await xhrPostAsync<string, ApiResponse<{
paymentMethods: PaymentProvider[],
pagination: PaginationInfo
}>>(url, body)

if (response.status === 'error') {
throw new Error('Error fetching payment methods')
}

if (response.data.paymentMethods === null || response.data.paymentMethods === undefined) {
response.data.paymentMethods = []
}

return response.data
}