fix: исправить критические ошибки системы партнерских заявок
КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ: - Исправлено отображение входящих заявок (неправильное извлечение данных) - Устранен ApolloError при принятии заявок (неправильная структура мутаций) - Исправлено отображение контрагентов после принятия заявки - Обновлены типы возврата GraphQL мутаций для соответствия резолверам UI/UX УЛУЧШЕНИЯ: - Обновлены все компоненты на темную glass-morphism тему - Компактные карточки контрагентов (удалена избыточная информация) - Удален дублирующий блок поиска новых партнеров ЗАТРОНУТЫЕ ФАЙЛЫ: - useCounterpartyData.ts: исправлено извлечение данных - useCounterpartyActions.ts: исправлены структуры мутаций - IncomingRequestsBlock.tsx: темная тема + исправления UI - OutgoingRequestsBlock.tsx: темная тема - CounterpartiesListBlock.tsx: компактные карточки + темная тема - typedefs.ts: исправлены типы возврата мутаций 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -76,148 +76,169 @@ export function useCounterpartyActions(): UseCounterpartyActionsReturn {
|
||||
})
|
||||
|
||||
// Принять заявку на партнерство
|
||||
const acceptRequest = useCallback(async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
const acceptRequest = useCallback(
|
||||
async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
try {
|
||||
const { data } = await respondToRequestMutation({
|
||||
variables: {
|
||||
requestId,
|
||||
response: 'ACCEPTED',
|
||||
},
|
||||
})
|
||||
try {
|
||||
const { data } = await respondToRequestMutation({
|
||||
variables: {
|
||||
input: {
|
||||
requestId,
|
||||
action: 'APPROVE',
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if (data?.respondToCounterpartyRequest?.success) {
|
||||
toast.success('Заявка принята! Организация добавлена в контрагенты')
|
||||
} else {
|
||||
const errorMessage = data?.respondToCounterpartyRequest?.message || 'Не удалось принять заявку'
|
||||
if (data?.respondToCounterpartyRequest?.success) {
|
||||
toast.success('Заявка принята! Организация добавлена в контрагенты')
|
||||
} else {
|
||||
const errorMessage = data?.respondToCounterpartyRequest?.message || 'Не удалось принять заявку'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error accepting request:', error)
|
||||
const errorMessage = 'Ошибка при принятии заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error accepting request:', error)
|
||||
const errorMessage = 'Ошибка при принятии заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [respondToRequestMutation])
|
||||
},
|
||||
[respondToRequestMutation],
|
||||
)
|
||||
|
||||
// Отклонить заявку на партнерство
|
||||
const rejectRequest = useCallback(async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
const rejectRequest = useCallback(
|
||||
async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
try {
|
||||
const { data } = await respondToRequestMutation({
|
||||
variables: {
|
||||
requestId,
|
||||
response: 'REJECTED',
|
||||
},
|
||||
})
|
||||
try {
|
||||
const { data } = await respondToRequestMutation({
|
||||
variables: {
|
||||
input: {
|
||||
requestId,
|
||||
action: 'REJECT',
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if (data?.respondToCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отклонена')
|
||||
} else {
|
||||
const errorMessage = data?.respondToCounterpartyRequest?.message || 'Не удалось отклонить заявку'
|
||||
if (data?.respondToCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отклонена')
|
||||
} else {
|
||||
const errorMessage = data?.respondToCounterpartyRequest?.message || 'Не удалось отклонить заявку'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error rejecting request:', error)
|
||||
const errorMessage = 'Ошибка при отклонении заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error rejecting request:', error)
|
||||
const errorMessage = 'Ошибка при отклонении заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [respondToRequestMutation])
|
||||
},
|
||||
[respondToRequestMutation],
|
||||
)
|
||||
|
||||
// Отменить исходящую заявку
|
||||
const cancelRequest = useCallback(async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
const cancelRequest = useCallback(
|
||||
async (requestId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
try {
|
||||
const { data } = await cancelRequestMutation({
|
||||
variables: { requestId },
|
||||
})
|
||||
try {
|
||||
const { data } = await cancelRequestMutation({
|
||||
variables: { requestId },
|
||||
})
|
||||
|
||||
if (data?.cancelCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отменена')
|
||||
} else {
|
||||
const errorMessage = data?.cancelCounterpartyRequest?.message || 'Не удалось отменить заявку'
|
||||
if (data?.cancelCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отменена')
|
||||
} else {
|
||||
const errorMessage = data?.cancelCounterpartyRequest?.message || 'Не удалось отменить заявку'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error canceling request:', error)
|
||||
const errorMessage = 'Ошибка при отмене заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error canceling request:', error)
|
||||
const errorMessage = 'Ошибка при отмене заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [cancelRequestMutation])
|
||||
},
|
||||
[cancelRequestMutation],
|
||||
)
|
||||
|
||||
// Отправить заявку на партнерство
|
||||
const sendRequest = useCallback(async (organizationId: string, message?: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
const sendRequest = useCallback(
|
||||
async (organizationId: string, message?: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
try {
|
||||
const { data } = await sendRequestMutation({
|
||||
variables: {
|
||||
organizationId,
|
||||
message: message || 'Предлагаем партнерское сотрудничество',
|
||||
},
|
||||
})
|
||||
try {
|
||||
const { data } = await sendRequestMutation({
|
||||
variables: {
|
||||
input: {
|
||||
receiverId: organizationId,
|
||||
message: message || 'Предлагаем партнерское сотрудничество',
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if (data?.sendCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отправлена! Ожидайте ответа от организации')
|
||||
} else {
|
||||
const errorMessage = data?.sendCounterpartyRequest?.message || 'Не удалось отправить заявку'
|
||||
if (data?.sendCounterpartyRequest?.success) {
|
||||
toast.success('Заявка отправлена! Ожидайте ответа от организации')
|
||||
} else {
|
||||
const errorMessage = data?.sendCounterpartyRequest?.message || 'Не удалось отправить заявку'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error sending request:', error)
|
||||
const errorMessage = 'Ошибка при отправке заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error sending request:', error)
|
||||
const errorMessage = 'Ошибка при отправке заявки'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [sendRequestMutation])
|
||||
},
|
||||
[sendRequestMutation],
|
||||
)
|
||||
|
||||
// Удалить контрагента
|
||||
const removeCounterparty = useCallback(async (organizationId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
const removeCounterparty = useCallback(
|
||||
async (organizationId: string) => {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
try {
|
||||
const { data } = await removeCounterpartyMutation({
|
||||
variables: { organizationId },
|
||||
})
|
||||
try {
|
||||
const { data } = await removeCounterpartyMutation({
|
||||
variables: { organizationId },
|
||||
})
|
||||
|
||||
if (data?.removeCounterparty?.success) {
|
||||
toast.success('Контрагент удален из списка')
|
||||
} else {
|
||||
const errorMessage = data?.removeCounterparty?.message || 'Не удалось удалить контрагента'
|
||||
if (data?.removeCounterparty?.success) {
|
||||
toast.success('Контрагент удален из списка')
|
||||
} else {
|
||||
const errorMessage = data?.removeCounterparty?.message || 'Не удалось удалить контрагента'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error removing counterparty:', error)
|
||||
const errorMessage = 'Ошибка при удалении контрагента'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error removing counterparty:', error)
|
||||
const errorMessage = 'Ошибка при удалении контрагента'
|
||||
setError(errorMessage)
|
||||
toast.error(errorMessage)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [removeCounterpartyMutation])
|
||||
},
|
||||
[removeCounterpartyMutation],
|
||||
)
|
||||
|
||||
return {
|
||||
// Действия с заявками
|
||||
@ -233,4 +254,4 @@ export function useCounterpartyActions(): UseCounterpartyActionsReturn {
|
||||
loading,
|
||||
error,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user