mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-23 23:05:46 +00:00
refactor(FE-435,436): Use S3 public base URL for document links
This commit is contained in:
@@ -16,7 +16,7 @@ import {
|
|||||||
} from '@/components/pages/expense/form/ExpenseRequestForm.schema';
|
} from '@/components/pages/expense/form/ExpenseRequestForm.schema';
|
||||||
import { ExpenseApi } from '@/services/api/expense';
|
import { ExpenseApi } from '@/services/api/expense';
|
||||||
import { isResponseSuccess } from '@/lib/api-helper';
|
import { isResponseSuccess } from '@/lib/api-helper';
|
||||||
import { ACCEPTED_FILE_TYPE } from '@/config/constant';
|
import { ACCEPTED_FILE_TYPE, S3_PUBLIC_BASE_URL } from '@/config/constant';
|
||||||
|
|
||||||
interface ExpenseRealizationContentProps {
|
interface ExpenseRealizationContentProps {
|
||||||
initialValues?: Expense;
|
initialValues?: Expense;
|
||||||
@@ -103,24 +103,32 @@ const ExpenseRealizationContent = ({
|
|||||||
initialValues?.realization_docs.length > 0 && (
|
initialValues?.realization_docs.length > 0 && (
|
||||||
<ul className='list-disc'>
|
<ul className='list-disc'>
|
||||||
{initialValues?.realization_docs.map(
|
{initialValues?.realization_docs.map(
|
||||||
(realizationDocument, realizationDocumentIdx) => (
|
(realizationDocument, realizationDocumentIdx) => {
|
||||||
<li key={realizationDocumentIdx}>
|
const path = realizationDocument.path.startsWith(
|
||||||
<Link
|
'/'
|
||||||
href={realizationDocument.path}
|
)
|
||||||
target='_blank'
|
? realizationDocument.path.slice(1)
|
||||||
rel='noopener noreferrer'
|
: realizationDocument.path;
|
||||||
className='text-blue-500 underline'
|
const documentUrl = `${S3_PUBLIC_BASE_URL}/${path}`;
|
||||||
>
|
return (
|
||||||
{realizationDocument.path}{' '}
|
<li key={realizationDocumentIdx}>
|
||||||
<Icon
|
<Link
|
||||||
icon='cuida:open-in-new-tab-outline'
|
href={documentUrl}
|
||||||
width={12}
|
target='_blank'
|
||||||
height={12}
|
rel='noopener noreferrer'
|
||||||
className='inline'
|
className='text-blue-500 underline'
|
||||||
/>
|
>
|
||||||
</Link>
|
{realizationDocument.path}{' '}
|
||||||
</li>
|
<Icon
|
||||||
)
|
icon='cuida:open-in-new-tab-outline'
|
||||||
|
width={12}
|
||||||
|
height={12}
|
||||||
|
className='inline'
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import {
|
|||||||
UploadRequestDocumentsFormSchema,
|
UploadRequestDocumentsFormSchema,
|
||||||
UploadRequestDocumentsFormValues,
|
UploadRequestDocumentsFormValues,
|
||||||
} from '@/components/pages/expense/form/ExpenseRequestForm.schema';
|
} from '@/components/pages/expense/form/ExpenseRequestForm.schema';
|
||||||
import { ACCEPTED_FILE_TYPE } from '@/config/constant';
|
import { ACCEPTED_FILE_TYPE, S3_PUBLIC_BASE_URL } from '@/config/constant';
|
||||||
import { ExpenseApi } from '@/services/api/expense';
|
import { ExpenseApi } from '@/services/api/expense';
|
||||||
import { isResponseSuccess } from '@/lib/api-helper';
|
import { isResponseSuccess } from '@/lib/api-helper';
|
||||||
import { EXPENSE_REQUEST_APPROVAL_LINE } from '@/config/approval-line';
|
import { EXPENSE_REQUEST_APPROVAL_LINE } from '@/config/approval-line';
|
||||||
@@ -489,24 +489,32 @@ const ExpenseRequestContent = ({
|
|||||||
initialValues?.documents.length > 0 && (
|
initialValues?.documents.length > 0 && (
|
||||||
<ul className='list-disc'>
|
<ul className='list-disc'>
|
||||||
{initialValues?.documents.map(
|
{initialValues?.documents.map(
|
||||||
(requestDocument, requestDocumentIdx) => (
|
(requestDocument, requestDocumentIdx) => {
|
||||||
<li key={requestDocumentIdx}>
|
const path = requestDocument.path.startsWith(
|
||||||
<Link
|
'/'
|
||||||
href={requestDocument.path}
|
)
|
||||||
target='_blank'
|
? requestDocument.path.slice(1)
|
||||||
rel='noopener noreferrer'
|
: requestDocument.path;
|
||||||
className='text-blue-500 underline'
|
const documentUrl = `${S3_PUBLIC_BASE_URL}/${path}`;
|
||||||
>
|
return (
|
||||||
{requestDocument.path}{' '}
|
<li key={requestDocumentIdx}>
|
||||||
<Icon
|
<Link
|
||||||
icon='cuida:open-in-new-tab-outline'
|
href={documentUrl}
|
||||||
width={12}
|
target='_blank'
|
||||||
height={12}
|
rel='noopener noreferrer'
|
||||||
className='inline'
|
className='text-blue-500 underline'
|
||||||
/>
|
>
|
||||||
</Link>
|
{requestDocument.path}{' '}
|
||||||
</li>
|
<Icon
|
||||||
)
|
icon='cuida:open-in-new-tab-outline'
|
||||||
|
width={12}
|
||||||
|
height={12}
|
||||||
|
className='inline'
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { Expense } from '@/types/api/expense';
|
import { Expense } from '@/types/api/expense';
|
||||||
import { formatDate } from '@/lib/helper';
|
import { formatDate } from '@/lib/helper';
|
||||||
|
import { S3_PUBLIC_BASE_URL } from '@/config/constant';
|
||||||
|
|
||||||
type ExpenseRealizationFormSchemaType = {
|
type ExpenseRealizationFormSchemaType = {
|
||||||
category?: {
|
category?: {
|
||||||
@@ -138,10 +139,13 @@ export const getExpenseRealizationFormInitialValues = (
|
|||||||
label: initialValues.supplier.name,
|
label: initialValues.supplier.name,
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
existing_documents: initialValues?.realization_docs?.map((doc) => ({
|
existing_documents: initialValues?.realization_docs?.map((doc) => {
|
||||||
name: doc.path,
|
const path = doc.path.startsWith('/') ? doc.path.slice(1) : doc.path;
|
||||||
url: doc.path,
|
return {
|
||||||
})),
|
name: doc.path,
|
||||||
|
url: `${S3_PUBLIC_BASE_URL}/${path}`,
|
||||||
|
};
|
||||||
|
}),
|
||||||
documents: [],
|
documents: [],
|
||||||
realizations: initialValues?.kandangs
|
realizations: initialValues?.kandangs
|
||||||
? initialValues.kandangs.map((kandangExpense) => {
|
? initialValues.kandangs.map((kandangExpense) => {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { Expense } from '@/types/api/expense';
|
import { Expense } from '@/types/api/expense';
|
||||||
import { formatDate } from '@/lib/helper';
|
import { formatDate } from '@/lib/helper';
|
||||||
|
import { S3_PUBLIC_BASE_URL } from '@/config/constant';
|
||||||
|
|
||||||
type ExpenseFormSchemaType = {
|
type ExpenseFormSchemaType = {
|
||||||
category?: {
|
category?: {
|
||||||
@@ -144,11 +145,14 @@ export const getExpenseFormInitialValues = (
|
|||||||
label: initialValues.supplier.name,
|
label: initialValues.supplier.name,
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
existing_documents: initialValues?.documents?.map((doc) => ({
|
existing_documents: initialValues?.documents?.map((doc) => {
|
||||||
id: doc.id,
|
const path = doc.path.startsWith('/') ? doc.path.slice(1) : doc.path;
|
||||||
name: doc.path,
|
return {
|
||||||
url: doc.path,
|
id: doc.id,
|
||||||
})),
|
name: doc.path,
|
||||||
|
url: `${S3_PUBLIC_BASE_URL}/${path}`,
|
||||||
|
};
|
||||||
|
}),
|
||||||
deleted_documents: [],
|
deleted_documents: [],
|
||||||
documents: [],
|
documents: [],
|
||||||
expense_nonstocks: initialValues?.kandangs
|
expense_nonstocks: initialValues?.kandangs
|
||||||
|
|||||||
@@ -349,6 +349,9 @@ export const ACCEPTED_FILE_TYPE = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const S3_PUBLIC_BASE_URL = process.env
|
||||||
|
.NEXT_PUBLIC_S3_PUBLIC_BASE_URL as string;
|
||||||
|
|
||||||
export const FILTER_TYPE_OPTIONS = [
|
export const FILTER_TYPE_OPTIONS = [
|
||||||
{
|
{
|
||||||
label: 'Tanggal Realisasi',
|
label: 'Tanggal Realisasi',
|
||||||
|
|||||||
Reference in New Issue
Block a user