renamed field to file for consistency for receipts

This commit is contained in:
chark1es 2025-03-01 15:42:30 -08:00
parent 5a453db3a4
commit 5fd2eb67a0
5 changed files with 21 additions and 16 deletions

View file

@ -6,7 +6,7 @@ import { motion, AnimatePresence } from 'framer-motion';
import type { ItemizedExpense } from '../../../schemas/pocketbase'; import type { ItemizedExpense } from '../../../schemas/pocketbase';
interface ReceiptFormData { interface ReceiptFormData {
field: File; file: File;
itemized_expenses: ItemizedExpense[]; itemized_expenses: ItemizedExpense[];
tax: number; tax: number;
date: string; date: string;
@ -134,7 +134,7 @@ export default function ReceiptForm({ onSubmit, onCancel }: ReceiptFormProps) {
} }
onSubmit({ onSubmit({
field: file, file: file,
itemized_expenses: itemizedExpenses, itemized_expenses: itemizedExpenses,
tax, tax,
date, date,

View file

@ -10,7 +10,7 @@ import FilePreview from '../universal/FilePreview';
import type { ItemizedExpense, Reimbursement, Receipt } from '../../../schemas/pocketbase'; import type { ItemizedExpense, Reimbursement, Receipt } from '../../../schemas/pocketbase';
interface ReceiptFormData { interface ReceiptFormData {
field: File; file: File;
itemized_expenses: ItemizedExpense[]; itemized_expenses: ItemizedExpense[];
tax: number; tax: number;
date: string; date: string;
@ -182,7 +182,7 @@ export default function ReimbursementForm() {
// Create receipt record // Create receipt record
const formData = new FormData(); const formData = new FormData();
formData.append('field', receiptData.field); formData.append('file', receiptData.file);
formData.append('created_by', userId); formData.append('created_by', userId);
formData.append('itemized_expenses', JSON.stringify(receiptData.itemized_expenses)); formData.append('itemized_expenses', JSON.stringify(receiptData.itemized_expenses));
formData.append('tax', receiptData.tax.toString()); formData.append('tax', receiptData.tax.toString());
@ -636,8 +636,8 @@ export default function ReimbursementForm() {
</div> </div>
<div className="bg-base-200/50 backdrop-blur-sm rounded-lg p-4 shadow-sm"> <div className="bg-base-200/50 backdrop-blur-sm rounded-lg p-4 shadow-sm">
<FilePreview <FilePreview
url={URL.createObjectURL(selectedReceiptDetails.field)} url={URL.createObjectURL(selectedReceiptDetails.file)}
filename={selectedReceiptDetails.field.name} filename={selectedReceiptDetails.file.name}
isModal={false} isModal={false}
/> />
</div> </div>

View file

@ -23,6 +23,7 @@ interface ReimbursementRequest extends Omit<Reimbursement, 'audit_notes'> {
// Extended Receipt interface with component-specific properties // Extended Receipt interface with component-specific properties
interface ReceiptDetails extends Omit<Receipt, 'itemized_expenses' | 'audited_by'> { interface ReceiptDetails extends Omit<Receipt, 'itemized_expenses' | 'audited_by'> {
file: string;
itemized_expenses: ItemizedExpense[]; itemized_expenses: ItemizedExpense[];
audited_by: string[]; audited_by: string[];
created: string; created: string;
@ -210,7 +211,7 @@ export default function ReimbursementList() {
...prevMap, ...prevMap,
[receiptId]: { [receiptId]: {
id: receiptRecord.id, id: receiptRecord.id,
field: receiptRecord.field, file: receiptRecord.file,
created_by: receiptRecord.created_by, created_by: receiptRecord.created_by,
date: receiptRecord.date, date: receiptRecord.date,
location_name: receiptRecord.location_name, location_name: receiptRecord.location_name,
@ -248,9 +249,9 @@ export default function ReimbursementList() {
setSelectedReceipt(receiptDetailsMap[receiptId]); setSelectedReceipt(receiptDetailsMap[receiptId]);
// Get the file URL using the PocketBase URL and collection info // Get the file URL using the PocketBase URL and collection info
const url = `${pb.baseUrl}/api/files/receipts/${receiptId}/${receiptDetailsMap[receiptId].field}`; const url = `${pb.baseUrl}/api/files/receipts/${receiptId}/${receiptDetailsMap[receiptId].file}`;
setPreviewUrl(url); setPreviewUrl(url);
setPreviewFilename(receiptDetailsMap[receiptId].field); setPreviewFilename(receiptDetailsMap[receiptId].file);
setShowPreview(true); setShowPreview(true);
return; return;
} }
@ -268,7 +269,7 @@ export default function ReimbursementList() {
const receiptDetails: ReceiptDetails = { const receiptDetails: ReceiptDetails = {
id: receiptRecord.id, id: receiptRecord.id,
field: receiptRecord.field, file: receiptRecord.file,
created_by: receiptRecord.created_by, created_by: receiptRecord.created_by,
itemized_expenses: itemizedExpenses, itemized_expenses: itemizedExpenses,
tax: receiptRecord.tax, tax: receiptRecord.tax,
@ -290,9 +291,9 @@ export default function ReimbursementList() {
setSelectedReceipt(receiptDetails); setSelectedReceipt(receiptDetails);
// Get the file URL using the PocketBase URL and collection info // Get the file URL using the PocketBase URL and collection info
const url = `${pb.baseUrl}/api/files/receipts/${receiptRecord.id}/${receiptRecord.field}`; const url = `${pb.baseUrl}/api/files/receipts/${receiptRecord.id}/${receiptRecord.file}`;
setPreviewUrl(url); setPreviewUrl(url);
setPreviewFilename(receiptRecord.field); setPreviewFilename(receiptRecord.file);
setShowPreview(true); setShowPreview(true);
} else { } else {
throw new Error('Receipt not found'); throw new Error('Receipt not found');

View file

@ -464,9 +464,13 @@ export default function ReimbursementManagementPortal() {
}; };
const getReceiptUrl = (receipt: ExtendedReceipt): string => { const getReceiptUrl = (receipt: ExtendedReceipt): string => {
const auth = Authentication.getInstance(); try {
const pb = auth.getPocketBase(); const pb = Authentication.getInstance().getPocketBase();
return pb.files.getURL(receipt, receipt.field); return pb.files.getURL(receipt, receipt.file);
} catch (error) {
console.error('Error getting receipt URL:', error);
return '';
}
}; };
// Add this function to get the user avatar URL // Add this function to get the user avatar URL

View file

@ -150,7 +150,7 @@ export interface Reimbursement extends BaseRecord {
* Collection ID: pbc_1571142587 * Collection ID: pbc_1571142587
*/ */
export interface Receipt extends BaseRecord { export interface Receipt extends BaseRecord {
field: string; file: string; // Single file
created_by: string; // Relation to User created_by: string; // Relation to User
itemized_expenses: string; // JSON string of ItemizedExpense[] itemized_expenses: string; // JSON string of ItemizedExpense[]
tax: number; tax: number;