Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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: Added import id for YNAB #626
Fix: Added import id for YNAB #626
Changes from 4 commits
28f9e84
460aef8
bdc593f
008131c
df479a8
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
Ensure
import_id
follows YNAB's recommended format for uniqueness.The current
import_id
generation may lead to collisions due to truncation and similarity in transaction data. YNAB recommends using the formatYNAB:[milliunit_amount]:[iso_date]:[occurrence]
to ensure uniqueness.Consider updating the
buildImportId
function to match this format. Here's how you might adjust it: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
Improve uniqueness of
import_id
by adopting YNAB's standard format.Concatenating date, amount, and description can cause collisions when different transactions produce the same truncated string. To enhance uniqueness within the character limit, it's advisable to follow YNAB's suggested pattern.
Here's a revised implementation:
If you need to handle multiple occurrences, you can increment the
occurrence
value accordingly.📝 Committable suggestion
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.
Why are you not using the
calculateTransactionHash
function onpackages/main/src/backend/transactions/transactions.ts
?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.
because YNAB import_id is 36 characters max and should be unique
calculateTransactionHash
is variable length and truncated will miss some informationThere 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.
Handle potential
null
orundefined
amounts instead of suppressing TypeScript errors.Using
@ts-expect-error
suppresses TypeScript's helpful checks and may hide runtime issues iftransactionToCreate.amount
isnull
orundefined
.Consider modifying the code to handle these cases explicitly:
This approach ensures that you handle
null
orundefined
values safely without suppressing errors.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.
Ensure safe comparison of
import_id
by validating both values.In
isSameImportId
, comparingimport_id
s without checking if they arenull
orundefined
might lead to unexpected behavior.Update the function to handle potential
null
orundefined
values:This change ensures that the comparison only occurs when both
import_id
s are valid strings.📝 Committable suggestion