refactor: AppointmentView: Переименован hook и убран console.log
This commit is contained in:
parent
4dca2314cc
commit
a416b6cc95
@ -8,7 +8,6 @@ export const appointmentFilesApi = createApi({
|
||||
endpoints: (builder) => ({
|
||||
getAppointmentFiles: builder.query({
|
||||
query: (appointmentId) => {
|
||||
console.log(`Fetching files for appointment ID: ${appointmentId}`);
|
||||
return `/appointment_files/${appointmentId}/`;
|
||||
},
|
||||
providesTags: ['AppointmentFile'],
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Button, Modal, Row, Typography, Spin } from "antd";
|
||||
import useAppointmentViewUI from "./useAppointmentViewUI.js";
|
||||
import {Button, Modal, Row, Typography, Spin, Splitter, Divider} from "antd";
|
||||
import useAppointmentView from "./useAppointmentView.js";
|
||||
|
||||
const AppointmentViewModal = () => {
|
||||
const {
|
||||
@ -20,7 +20,7 @@ const AppointmentViewModal = () => {
|
||||
isFilesLoading,
|
||||
downloadingFiles,
|
||||
downloadFile,
|
||||
} = useAppointmentViewUI();
|
||||
} = useAppointmentView();
|
||||
|
||||
if (!selectedAppointment) {
|
||||
return null;
|
||||
@ -76,17 +76,18 @@ const AppointmentViewModal = () => {
|
||||
<Spin/>
|
||||
) : files.length > 0 ? (
|
||||
files.map((file) => (
|
||||
<div key={file.id} style={{ marginBottom: 8 }}>
|
||||
<Row key={file.id} align="middle" justify="space-between">
|
||||
<span>{file.file_title || labels.notSpecified}</span>
|
||||
<Button
|
||||
style={{ marginLeft: 8 }}
|
||||
onClick={() => downloadFile(file.id, file.file_title)}
|
||||
loading={downloadingFiles[file.id] || false}
|
||||
disabled={downloadingFiles[file.id] || false}
|
||||
type={"dashed"}
|
||||
>
|
||||
{downloadingFiles[file.id] ? labels.downloading : labels.download}
|
||||
</Button>
|
||||
</div>
|
||||
<Divider/>
|
||||
</Row>
|
||||
))
|
||||
) : (
|
||||
<p>{labels.noFiles}</p>
|
||||
|
||||
@ -4,8 +4,9 @@ import dayjs from "dayjs";
|
||||
import {useState} from "react";
|
||||
import {useGetAppointmentFilesQuery} from "../../../Api/appointmentFilesApi.js";
|
||||
import {baseQueryWithAuth} from "../../../Api/baseQuery.js";
|
||||
import {notification} from "antd";
|
||||
|
||||
const useAppointmentViewUI = () => {
|
||||
const useAppointmentView = () => {
|
||||
const dispatch = useDispatch();
|
||||
const {selectedAppointment} = useSelector((state) => state.appointmentsUI);
|
||||
|
||||
@ -73,18 +74,16 @@ const useAppointmentViewUI = () => {
|
||||
const downloadFile = async (fileId, fileName) => {
|
||||
try {
|
||||
setDownloadingFiles((prev) => ({...prev, [fileId]: true}));
|
||||
// Выполняем запрос с использованием fetch, применяя baseQueryWithAuth для аутентификации
|
||||
const {url, ...options} = await baseQueryWithAuth(
|
||||
{
|
||||
url: `/appointment_files/${fileId}/file/`,
|
||||
method: 'GET',
|
||||
credentials: 'include',
|
||||
},
|
||||
{ getState: () => ({}) },
|
||||
{},
|
||||
{}
|
||||
);
|
||||
|
||||
// Поскольку baseQueryWithAuth может вернуть объект с полной URL, используем его
|
||||
const response = await fetch(url, {
|
||||
...options,
|
||||
method: 'GET',
|
||||
@ -92,7 +91,11 @@ const useAppointmentViewUI = () => {
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Ошибка HTTP: ${response.status} ${response.statusText}`);
|
||||
notification.error({
|
||||
message: "Ошибка при скачивании файла",
|
||||
description: "Не удалось загрузить файл.",
|
||||
placement: "topRight",
|
||||
});
|
||||
}
|
||||
|
||||
const blob = await response.blob();
|
||||
@ -104,9 +107,14 @@ const useAppointmentViewUI = () => {
|
||||
link.click();
|
||||
link.remove();
|
||||
window.URL.revokeObjectURL(downloadUrl);
|
||||
|
||||
} catch (error) {
|
||||
console.error("Ошибка при скачивании файла:", error);
|
||||
// Можно добавить уведомление, например, с antd message
|
||||
console.error("Error downloading file:", error);
|
||||
notification.error({
|
||||
message: "Ошибка при скачивании файлов",
|
||||
description: "Не удалось загрузить файл.",
|
||||
placement: "topRight",
|
||||
});
|
||||
} finally {
|
||||
setDownloadingFiles((prev) => ({...prev, [fileId]: false}));
|
||||
}
|
||||
@ -133,4 +141,4 @@ const useAppointmentViewUI = () => {
|
||||
};
|
||||
};
|
||||
|
||||
export default useAppointmentViewUI;
|
||||
export default useAppointmentView;
|
||||
Loading…
x
Reference in New Issue
Block a user