-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Filter extracted merchant name before display #3214
Changes from all commits
7f2cb0f
9a2ebce
baf5bac
4026d19
00fbab4
aea0af9
394bed5
63b0bd6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -439,6 +439,8 @@ | |||||||||||||||||||
|
||||||||||||||||||||
selectedCategory$: Observable<OrgCategory>; | ||||||||||||||||||||
|
||||||||||||||||||||
vendorOptions: string[]; | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Initialize 'vendorOptions' to an Empty Array To prevent Apply this diff to initialize - vendorOptions: string[];
+ vendorOptions: string[] = []; 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||
|
||||||||||||||||||||
constructor( | ||||||||||||||||||||
private activatedRoute: ActivatedRoute, | ||||||||||||||||||||
private accountsService: AccountsService, | ||||||||||||||||||||
|
@@ -1485,7 +1487,8 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if (extractedData.vendor) { | ||||||||||||||||||||
etxn.tx.vendor = extractedData.vendor; | ||||||||||||||||||||
const vendor = this.filterVendor(extractedData.vendor); | ||||||||||||||||||||
etxn.tx.vendor = vendor; | ||||||||||||||||||||
Comment on lines
+1490
to
+1491
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle Null Values Returned from 'filterVendor' The Apply this diff to add a null check: const vendor = this.filterVendor(extractedData.vendor);
- etxn.tx.vendor = vendor;
+ if (vendor) {
+ etxn.tx.vendor = vendor;
+ } 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if (extractedCategory) { | ||||||||||||||||||||
|
@@ -2434,6 +2437,7 @@ | |||||||||||||||||||
const ifOptions = expenseField.options && expenseField.options.length > 0; | ||||||||||||||||||||
if (ifOptions) { | ||||||||||||||||||||
if (tfc === 'vendor_id') { | ||||||||||||||||||||
this.vendorOptions = options; | ||||||||||||||||||||
expenseField.options = options.map((value) => ({ | ||||||||||||||||||||
label: value, | ||||||||||||||||||||
value: { | ||||||||||||||||||||
|
@@ -2724,7 +2728,8 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if (etxn.tx.extracted_data.vendor && !etxn.tx.vendor) { | ||||||||||||||||||||
etxn.tx.vendor = etxn.tx.extracted_data.vendor; | ||||||||||||||||||||
const vendor = this.filterVendor(etxn.tx.extracted_data.vendor); | ||||||||||||||||||||
etxn.tx.vendor = vendor; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if ( | ||||||||||||||||||||
|
@@ -4525,8 +4530,10 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if (!this.fg.controls.vendor_id.value && extractedData.vendor) { | ||||||||||||||||||||
const vendor = this.filterVendor(extractedData.vendor); | ||||||||||||||||||||
|
||||||||||||||||||||
this.fg.patchValue({ | ||||||||||||||||||||
vendor_id: { display_name: extractedData.vendor }, | ||||||||||||||||||||
vendor_id: { display_name: vendor }, | ||||||||||||||||||||
Comment on lines
+4533
to
+4536
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle Potential Null Value When Setting 'vendor_id.display_name' The Apply this diff to add a null check: const vendor = this.filterVendor(extractedData.vendor);
+ if (vendor) {
vendor_id: { display_name: vendor },
+ } Alternatively, handle the case when
|
||||||||||||||||||||
}); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
|
@@ -4548,7 +4555,11 @@ | |||||||||||||||||||
}); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
private filterVendor(vendor: string): string | null { | ||||||||||||||||||||
return this.vendorOptions?.find((option) => option.toLowerCase() === vendor.toLowerCase()) || null; | ||||||||||||||||||||
} | ||||||||||||||||||||
Comment on lines
+4558
to
+4560
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle null or undefined 'vendor' in 'filterVendor' method. The Apply this diff to add the null check: - private filterVendor(vendor: string): string | null {
+ private filterVendor(vendor?: string): string | null {
+ if (!vendor) {
+ return null;
+ }
return this.vendorOptions?.find((option) => option.toLowerCase() === vendor.toLowerCase()) || null;
} 📝 Committable suggestion
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this wont be required as we already have the check where its being called There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @harshal015, understood. Thank you for clarifying that ✏️ Learnings added
|
||||||||||||||||||||
|
||||||||||||||||||||
attachReceipts(data: { type: string; dataUrl: string | ArrayBuffer; actionSource?: string }): void { | ||||||||||||||||||||
Check failure on line 4562 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
if (data) { | ||||||||||||||||||||
const fileInfo = { | ||||||||||||||||||||
type: data.type, | ||||||||||||||||||||
|
@@ -4656,7 +4667,7 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
async uploadFileCallback(file: File): Promise<void> { | ||||||||||||||||||||
Check failure on line 4670 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
let fileData: { type: string; dataUrl: string | ArrayBuffer; actionSource: string }; | ||||||||||||||||||||
if (file) { | ||||||||||||||||||||
if (file.size < MAX_FILE_SIZE) { | ||||||||||||||||||||
|
@@ -4674,12 +4685,12 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
async onChangeCallback(nativeElement: HTMLInputElement): Promise<void> { | ||||||||||||||||||||
Check failure on line 4688 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
const file = nativeElement.files[0]; | ||||||||||||||||||||
this.uploadFileCallback(file); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
async addAttachments(event: Event): Promise<void> { | ||||||||||||||||||||
Check failure on line 4693 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
event.stopPropagation(); | ||||||||||||||||||||
|
||||||||||||||||||||
if (this.platform.is('ios')) { | ||||||||||||||||||||
|
@@ -4749,7 +4760,7 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
getReceiptExtension(name: string): string | null { | ||||||||||||||||||||
Check failure on line 4763 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
let res: string = null; | ||||||||||||||||||||
|
||||||||||||||||||||
if (name) { | ||||||||||||||||||||
|
@@ -4764,7 +4775,7 @@ | |||||||||||||||||||
return res; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
getReceiptDetails(file: FileObject): { type: string; thumbnail: string } { | ||||||||||||||||||||
Check failure on line 4778 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
const ext = this.getReceiptExtension(file.name); | ||||||||||||||||||||
const res = { | ||||||||||||||||||||
type: 'unknown', | ||||||||||||||||||||
|
@@ -4782,7 +4793,7 @@ | |||||||||||||||||||
return res; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
viewAttachments(): void { | ||||||||||||||||||||
Check failure on line 4796 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
const attachements$ = this.getExpenseAttachments(this.mode); | ||||||||||||||||||||
|
||||||||||||||||||||
from(this.loaderService.showLoader()) | ||||||||||||||||||||
|
@@ -4838,7 +4849,7 @@ | |||||||||||||||||||
}); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
getDeleteReportParams( | ||||||||||||||||||||
Check failure on line 4852 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
config: { header: string; body: string; ctaText: string; ctaLoadingText: string }, | ||||||||||||||||||||
removeExpenseFromReport: boolean = false, | ||||||||||||||||||||
reportId?: string | ||||||||||||||||||||
|
@@ -4873,7 +4884,7 @@ | |||||||||||||||||||
}; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
async deleteExpense(reportId?: string): Promise<void> { | ||||||||||||||||||||
Check failure on line 4887 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
const removeExpenseFromReport = reportId && this.isRedirectedFromReport; | ||||||||||||||||||||
const header = removeExpenseFromReport ? 'Remove Expense' : 'Delete Expense'; | ||||||||||||||||||||
const body = removeExpenseFromReport | ||||||||||||||||||||
|
@@ -4917,7 +4928,7 @@ | |||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
async openCommentsModal(): Promise<void> { | ||||||||||||||||||||
Check failure on line 4931 in src/app/fyle/add-edit-expense/add-edit-expense.page.ts GitHub Actions / Run linters
|
||||||||||||||||||||
const etxn = await this.etxn$.toPromise(); | ||||||||||||||||||||
|
||||||||||||||||||||
const modal = await this.modalController.create({ | ||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Avoid hardcoding vendor options in the test setup
Hardcoding
component.vendorOptions
to['vendor']
may limit the test coverage and flexibility. Consider using a mock or fixture that provides a realistic set of vendor options for more comprehensive testing.