-
Notifications
You must be signed in to change notification settings - Fork 0
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
Qbd direct connector data sync up ts #1070
Qbd direct connector data sync up ts #1070
Conversation
* feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes
Caution Review failedThe pull request is closed. WalkthroughThis pull request includes several modifications across multiple files primarily focused on correcting naming inconsistencies in enums, enhancing component functionality, and updating HTML templates for improved user interaction. Key changes involve the renaming of an enum value from Changes
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 18
🧹 Outside diff range and nitpick comments (19)
src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-connector.model.ts (1)
29-30
: Consider adding JSDoc commentsSince this type appears to be used across multiple components, adding JSDoc comments would help other developers understand:
- The purpose of each field
- Expected values for
attribute_type
- When
count
might be null vs. numberAdd documentation like this:
+/** + * Represents synchronization data for QBD direct connector + * @property {string} attribute_type - The type of attribute being synchronized + * @property {number | null} count - The count of items synchronized, null if sync hasn't started + */ export type SyncDataType = { attribute_type: string; count: null | number };src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (1)
30-36
: Add null check in ngOnInit for better error handlingWhile optional chaining is used, the component should handle the case where
qbdFields
is undefined more explicitly.Consider this improvement:
ngOnInit() { - this.fieldLength = this.qbdFields?.length; + this.fieldLength = this.qbdFields?.length || 0; }This ensures
fieldLength
is always initialized with a valid number, preventing potential template rendering issues.src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.ts (2)
35-37
: Enhance type safety of class properties.The brandIcon property should be typed and marked as readonly since it's only initialized once.
Apply this diff:
readonly AppName = AppName; - brandIcon: string; + private readonly brandIcon!: string;
39-39
: Remove unnecessary constructor.The empty constructor can be safely removed as it serves no purpose.
- constructor() { }
🧰 Tools
🪛 Biome
[error] 39-39: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (1)
26-32
: Consider adding explicit void type parameters to EventEmitter declarationsWhile functionally correct, adding explicit void type parameters would improve code clarity and maintainability.
- @Output() nextStep = new EventEmitter(); + @Output() nextStep = new EventEmitter<void>(); @Output() downloadClick: EventEmitter<string> = new EventEmitter(); - @Output() retryClick = new EventEmitter(); + @Output() retryClick = new EventEmitter<void>(); - @Output() manualDownload = new EventEmitter(); + @Output() manualDownload = new EventEmitter<void>();src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.html (3)
Line range hint
1-12
: Consider making the step number configurableThe step number "3" is hardcoded in the template. To improve maintainability and flexibility, consider making this a configurable input property that can be adjusted if the workflow steps change.
+ @Input() stepNumber: number = 3;
- 3 + {{stepNumber}}
26-28
: Extract text to translation fileThe static text message should be moved to a translation file for better maintainability and internationalization support.
- [infoText]="'The values displayed here are synced from QuickBooks Desktop to Fyle. If you notice discrepancies in the synced values, you can continue onboarding; the sync will refresh automatically in 5 minutes to capture any missed values.'" + [infoText]="'QBD_SYNC.INFO_TEXT' | translate"
34-36
: Review button disabled state logicThe property name
isCTAEnabled
being used to disable the button seems counterintuitive. Consider renaming it toisCtaDisabled
for clarity, or invert the logic.- [isButtonDisabled]="isCTAEnabled" + [isButtonDisabled]="!isCTAEnabled"Or rename the property in the component:
- @Input() isCTAEnabled: boolean; + @Input() isCtaDisabled: boolean;src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.html (1)
6-11
: Consider refactoring icon section to reduce duplicationThe warning and danger icon sections share similar structure but differ in styles. Consider using ngClass for conditional styling instead of duplicating the entire div structure.
-<div *ngIf="appName!==AppName.QBD_DIRECT" class="tw-p-8-px tw-bg-bg-warning-lighter tw-mr-10-px"> - <app-svg-icon [svgSource]="'warning-outline'" [width]="'16px'" [height]="'16px'" [styleClasses]="'tw-text-icon-warning'"></app-svg-icon> -</div> -<div *ngIf="appName===AppName.QBD_DIRECT" class="tw-p-8-px tw-bg-bg-danger-lighter tw-mr-10-px"> - <app-svg-icon [svgSource]="'danger-outline'" [width]="'18px'" [height]="'18px'" [styleClasses]="'tw-text-alert-toast'"></app-svg-icon> -</div> +<div class="tw-p-8-px tw-mr-10-px" + [ngClass]="appName === AppName.QBD_DIRECT ? 'tw-bg-bg-danger-lighter' : 'tw-bg-bg-warning-lighter'"> + <app-svg-icon + [svgSource]="appName === AppName.QBD_DIRECT ? 'danger-outline' : 'warning-outline'" + [width]="'16px'" + [height]="'16px'" + [styleClasses]="appName === AppName.QBD_DIRECT ? 'tw-text-alert-toast' : 'tw-text-icon-warning'"> + </app-svg-icon> +</div>src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html (1)
51-61
: Consider improvements to dialog configuration.A few suggestions for the dialog implementation:
- Consider moving hard-coded strings like 'Connection failed' and 'Got it' to translation files for better i18n support
- Since
[showSecondaryCTA]="false"
is static, it could be removed if this is the only use case- [headerText]="'Connection failed'" - [contextText]="warningDialogText" - [confirmBtnText]="'Got it'" + [headerText]="translations.connectionFailed" + [contextText]="warningDialogText" + [confirmBtnText]="translations.gotIt" - [showSecondaryCTA]="false">src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-onboarding.model.ts (1)
QBO routes incorrectly used in QBD Direct onboarding model
The verification confirms that the QBD Direct onboarding model is incorrectly using QBO routes for its stepper navigation:
/integrations/qbo/onboarding/pre_requisite
/integrations/qbo/onboarding/connector
/integrations/qbo/onboarding/export_settings
/integrations/qbo/onboarding/import_settings
/integrations/qbo/onboarding/advanced_settings
These routes should be using the QBD Direct paths (
/integrations/qbd-direct/...
) instead of QBO paths (/integrations/qbo/...
).🔗 Analysis chain
Line range hint
28-32
: Verify QBO routes in QBD component.The onboarding steps are using QBO (QuickBooks Online) routes (
/integrations/qbo/...
) in what appears to be a QBD (QuickBooks Direct) component. This might cause routing issues.Also applies to: 33-39, 40-46, 47-53, 54-60
Let me gather more information to verify the QBO routes in QBD components specifically.
Let me gather more specific information about the QBD Direct routes and components.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the correct routing configuration for QBD components # Check for QBD-specific route definitions rg -A 2 "'/integrations/qbd/" # Check for route configurations in routing modules fd -e ts -x rg -l "path.*integrations/(qbd|qbo)" # Look for other QBD component routes for comparison ast-grep --pattern 'route: "/integrations/qbd/$_"'Length of output: 4898
Script:
#!/bin/bash # Check the routing configuration in QBD Direct component rg -A 5 "route.*integrations/q" src/app/core/models/qbd-direct/ # Check if there's a pattern of shared routes between QBO and QBD rg -A 5 "'/integrations/qbo/onboarding" # Look for any route definitions in QBD Direct related files fd -e ts -x rg -l "route.*integrations" src/app/core/models/qbd-direct/ # Check QBD Direct component's routing module rg "path.*integrations/qbd-direct" src/app/integrations/qbd-direct/Length of output: 134409
Script:
#!/bin/bash # Check QBD Direct specific route patterns and components rg -A 2 "'/integrations/qbd-direct" # Look for QBD Direct component route definitions ast-grep --pattern 'route: "/integrations/qbd-direct/$_"' # Check the QBD Direct onboarding model implementation cat src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-onboarding.model.tsLength of output: 4126
src/app/integrations/qbd-direct/qbd-direct.component.ts (1)
Line range hint
42-64
: Consider refactoring the navigation logicThe
onboardingStateComponentMap
object could benefit from being extracted into a constant or configuration file, making it easier to maintain and reuse.Consider moving this mapping to a separate configuration file:
// qbd-direct.routes.config.ts export const QBD_DIRECT_ROUTES = { [QbdDirectOnboardingState.YET_TO_START]: '/integrations/qbd_direct/onboarding/landing', [QbdDirectOnboardingState.INCORRECT_PASSWORD]: '/integrations/qbd_direct/onboarding/connector', // ... other mappings } as const;Then import and use it in the component:
import { QBD_DIRECT_ROUTES } from './qbd-direct.routes.config'; // In navigate method: this.router.navigateByUrl(QBD_DIRECT_ROUTES[this.workspace.onboarding_state]);src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.html (2)
32-36
: Enhance error message clarity and validation.The error message could be more specific about path requirements. Also, consider separating different validation cases:
- Required field validation
- Company path format validation
-<div *ngIf="(downloadFilePathField.invalid && downloadFilePathField.touched) || !isCompanyPathInvalid" class="tw-text-alert-toast"> - <small *ngIf="downloadFilePathField.errors?.required || !isCompanyPathInvalid" class="tw-flex"> +<div *ngIf="(downloadFilePathField.invalid && downloadFilePathField.touched) || isCompanyPathInvalid" class="tw-text-alert-toast"> + <small *ngIf="downloadFilePathField.errors?.required" class="tw-flex"> + <app-svg-icon [svgSource]="'info-circle-fill'" [isTextColorAllowed]="true" [width]="'16px'" [height]="'16px'" [styleClasses]="'tw-text-form-error-help-text-color'"></app-svg-icon> + This field is required.</small> + <small *ngIf="isCompanyPathInvalid" class="tw-flex"> <app-svg-icon [svgSource]="'info-circle-fill'" [isTextColorAllowed]="true" [width]="'16px'" [height]="'16px'" [styleClasses]="'tw-text-form-error-help-text-color'"></app-svg-icon> - Enter a valid company file path.</small> + Enter a valid QuickBooks company file path (e.g., C:\Users\[Username]\Documents\QuickBooks).</small>
Line range hint
47-47
: Enhance iframe security and accessibility.The YouTube iframe should include security and accessibility attributes.
-<iframe width="427" height="259" src="https://www.youtube.com/embed/2oYdc8KcQnk" frameborder="0"></iframe> +<iframe + width="427" + height="259" + src="https://www.youtube.com/embed/2oYdc8KcQnk" + frameborder="0" + allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" + sandbox="allow-scripts allow-same-origin allow-presentation" + title="How to find QuickBooks company file path" + loading="lazy" +></iframe>src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html (5)
Line range hint
1-17
: Consider accessibility implications of opacity changesThe opacity change when
showSection
is false might affect the readability and contrast ratio of the content. Consider using a more accessible way to indicate inactive sections, such as usingaria-disabled
attribute or different background colors that maintain WCAG contrast requirements.-<div class="tw-border tw-rounded-border-radius-sm tw-border-border-info-lighter" [ngClass]="{'tw-bg-border-info-lighter tw-opacity-60': !showSection}"> +<div class="tw-border tw-rounded-border-radius-sm tw-border-border-info-lighter" [ngClass]="{'tw-bg-border-info-lighter': !showSection}" [attr.aria-disabled]="!showSection">
18-18
: Simplify conditional renderingThe condition
showSection && !isStepCompleted
is repeated multiple times. Consider moving these conditions to a structural directive at a higher level to improve template maintainability.-<div *ngIf="!isLoading && connectionStatus !== qbdConnectionStatus.SUCCESS && showSection && !isStepCompleted" class="tw-flex tw-items-center tw-justify-between tw-pt-24-px"> +<ng-container *ngIf="showSection && !isStepCompleted"> + <div *ngIf="!isLoading && connectionStatus !== qbdConnectionStatus.SUCCESS" class="tw-flex tw-items-center tw-justify-between tw-pt-24-px">
Line range hint
71-73
: Enhance iframe security and accessibilityThe YouTube iframe is missing important security and accessibility attributes:
title
attribute for screen readersloading="lazy"
for performancesandbox
attribute for securityallow
attribute to control feature permissions-<iframe width="427" height="259" src="https://www.youtube.com/embed/2oYdc8KcQnk" frameborder="0"></iframe> +<iframe + width="427" + height="259" + src="https://www.youtube.com/embed/2oYdc8KcQnk" + title="QuickBooks Web Connector Setup Guide" + loading="lazy" + frameborder="0" + sandbox="allow-scripts allow-same-origin allow-presentation" + allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" +></iframe>
Line range hint
84-97
: Consider adding timeout handling for loading stateLong loading times without feedback can lead to poor user experience. Consider adding a timeout handler to show an error message or retry option if the connection takes too long.
This would require changes in the component's TypeScript file to implement the timeout logic.
Fix component name typo across the codebase
The typo exists in the component itself and its usages. The component is defined as
app-chechbox-button
and needs to be corrected toapp-checkbox-button
:
- Component definition:
src/app/shared/components/input/chechbox-button/chechbox-button.component.ts
- Component spec:
src/app/shared/components/input/chechbox-button/chechbox-button.component.spec.ts
- Usage in:
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.html
This requires renaming the component files, updating the class name, selector, and all references to fix the spelling.
🔗 Analysis chain
Line range hint
77-83
: Fix typo in component nameThere's a typo in the component name:
chechbox-button
should becheckbox-button
.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the correct component name and its usage # Check if the component exists with either spelling fd -e ts -e html "che[c]?kbox-button" # Check component selector in the component file rg -l "selector.*che[c]?kbox-button" -g "*.ts"Length of output: 88
Script:
#!/bin/bash # Let's try a broader search for any checkbox-related components fd -e ts "checkbox" # Search for component selector declarations containing 'checkbox' rg "selector:.*checkbox" -g "*.ts" # Search for checkbox component usage in HTML files rg "<app-che.*box" -g "*.html"Length of output: 433
Script:
#!/bin/bash # Let's search for the component definition file fd -e ts "chechbox-button" # Search for any similarly named component files with correct spelling fd -e ts "checkbox-button" # Let's also check the component's implementation rg -A 5 "export class.*Button" -g "*chec*button*.ts"Length of output: 837
Script:
#!/bin/bash # Let's check the component's selector definition rg "selector:" src/app/shared/components/input/chechbox-button/chechbox-button.component.ts # Check how widely this component is used rg "<app-chechbox-button" -lLength of output: 419
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
⛔ Files ignored due to path filters (1)
src/assets/fyle/favicon.png
is excluded by!**/*.png
📒 Files selected for processing (19)
src/app/core/models/enum/enum.model.ts
(1 hunks)src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-connector.model.ts
(1 hunks)src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-onboarding.model.ts
(2 hunks)src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.spec.ts
(0 hunks)src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts
(1 hunks)src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts.service.spec.ts
(0 hunks)src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts.service.ts
(0 hunks)src/app/core/services/qbd-direct/qbd-direct-core/qbd-direct-connector.service.ts
(0 hunks)src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html
(1 hunks)src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts
(1 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.html
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.html
(4 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html
(6 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts
(3 hunks)src/app/integrations/qbd-direct/qbd-direct.component.ts
(1 hunks)src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.html
(1 hunks)src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.ts
(2 hunks)
💤 Files with no reviewable changes (4)
- src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.spec.ts
- src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts.service.spec.ts
- src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts.service.ts
- src/app/core/services/qbd-direct/qbd-direct-core/qbd-direct-connector.service.ts
✅ Files skipped from review due to trivial changes (1)
- src/app/core/models/enum/enum.model.ts
🧰 Additional context used
🪛 Biome
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts
[error] 142-142: Unnecessary use of boolean literals in conditional expression.
Simplify your code by directly assigning the result without using a ternary operator.
If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
Check for more details about NOT operator.
Unsafe fix: Remove the conditional expression with
(lint/complexity/noUselessTernary)
src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.ts
[error] 39-39: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
🔇 Additional comments (16)
src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-connector.model.ts (1)
29-30
: Type definition improvement looks good!
The change from a flexible key-value map to a structured type improves type safety and makes the interface more explicit.
Let's verify all usage sites to ensure they've been updated for the breaking change:
✅ Verification successful
Let me verify how these components are using the new structure by checking their implementations.
Breaking change has been properly handled across the codebase
The verification shows that all components are correctly using the new structured type:
- The template in
qbd-direct-data-sync.component.html
properly accesses.attribute_type
and.count
properties - No instances of array-index or key-value map access patterns were found
- All components handle the type as an array of structured objects
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Find all files using SyncDataType to verify they handle the new structure
# Expected results: All usage sites should show the new property access pattern (.attribute_type, .count)
# Search for files importing or using SyncDataType
rg -l "SyncDataType"
# Search for old usage pattern (treating it as a key-value map)
rg -A 3 "SyncDataType.*\[.*\]"
Length of output: 2940
Script:
#!/bin/bash
# Check the implementation of components using SyncDataType
# Looking for property access patterns to verify compatibility with new structure
# Check qbd-direct-data-sync component
rg -A 10 "qbdFields:" "src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts"
# Check template usage in data-sync component
rg -A 10 "\.attribute_type|\.count" "src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.html"
# Check onboarding connector component usage
rg -A 10 "qbdFields:" "src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts"
Length of output: 2314
src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts (1)
1-15
: LGTM! Service structure follows Angular best practices.
The service is properly configured with dependency injection and follows Angular's recommended patterns.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (2)
24-24
: LGTM! Output property follows Angular best practices
The continueClick
EventEmitter is properly defined and follows Angular naming conventions.
16-22
: Verify parent component compatibility with input property changes
The change from single SyncDataType
to SyncDataType[]
array and addition of new required inputs could break parent components if not properly updated.
✅ Verification successful
Based on the shell script results, I can generate the final response as we have found clear evidence of the component's usage and its inputs.
Input property changes are properly handled in parent component
The parent component qbd-direct-onboarding-connector.component.html
correctly provides all the required inputs:
[qbdFields]="qbdFields"
for the array type[isLoading]="isDataSyncLoading"
[isCTAEnabled]="isDataSyncCTADisabled"
[showSection]="isConnectionStepCompleted"
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Find parent components using this component and verify they provide all required inputs
# Find component usage in templates
echo "Checking component usage in templates:"
rg -A 5 "app-qbd-direct-data-sync" --type html
# Find potential parent component references
echo "Checking TypeScript files for potential parent components:"
rg -A 10 "QbdDirectDataSyncComponent" --type ts
Length of output: 8451
src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.ts (1)
46-46
: Improve robustness of asset path construction.
The current path construction could be made more maintainable and type-safe.
- this.brandIcon = `assets/${brandingConfig.brandId === 'co' ? 'co' : 'fyle'}/favicon.png`;
+ const brandFolder = brandingConfig.brandId === 'co' ? 'co' : 'fyle';
+ this.brandIcon = `assets/${brandFolder}/favicon.png`;
Consider creating a type-safe utility function for asset path construction if this pattern is used elsewhere in the codebase.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (2)
39-51
: LGTM! Clean and focused event handler implementations
The event handler methods are well-implemented, each with a clear single responsibility and proper event emission.
26-32
: Verify template bindings and parent component handlers
Please ensure that:
- The template properly binds to these output events
- Parent components correctly handle all emitted events
✅ Verification successful
Let me generate one more verification script to check the parent component handlers since the previous ast-grep
pattern didn't show the implementations.
All event bindings and handlers are properly implemented
The verification shows that:
- All output events (
nextStep
,downloadClick
,retryClick
,manualDownload
) are correctly bound in the parent template - The parent component implements all corresponding handlers:
proceedToConnection()
fornextStep
triggerDownload($event)
fordownloadClick
retry()
forretryClick
triggerManualDownload()
formanualDownload
- Each handler has appropriate implementation with error handling, state management, and necessary business logic
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check template bindings and parent component usage
echo "Checking template bindings..."
rg -l "app-qbd-direct-download-file" | xargs rg -A 5 "(nextStep|downloadClick|retryClick|manualDownload)"
echo "Checking parent component handlers..."
ast-grep --pattern 'class $_ {
$$$
$_(nextStep|downloadClick|retryClick|manualDownload)($$$) {
$$$
}
$$$
}'
Length of output: 5731
Script:
#!/bin/bash
# Check parent component handler implementations
rg -A 5 "(proceedToConnection|triggerDownload|retry|triggerManualDownload)" src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts
Length of output: 1418
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts (2)
21-33
: LGTM! Well-structured input/output properties
Good use of required validation for inputs and properly typed event emitters.
45-46
: LGTM! Clean and focused method implementations
The event handling methods and password visibility toggle are well-implemented with clear, single responsibilities.
Also applies to: 49-50, 70-71
src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.html (1)
20-22
: LGTM!
The conditional rendering for the confirmation message is clean and follows proper spacing conventions.
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html (3)
1-2
: LGTM! Clean stepper implementation.
The stepper section is well-structured with appropriate padding and proper input binding.
17-25
: LGTM! Well-structured download component.
The download file component implementation is comprehensive with proper loading states, validation checks, and error handling through various event bindings.
7-7
: Consider standardizing margins across brands.
The margin differences between brands are quite significant (120px vs 60px), which could lead to inconsistent user experiences. Consider if such a large difference is intentionally designed for brand-specific requirements.
src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-onboarding.model.ts (1)
11-11
: LGTM! Consistent naming improvement.
The renaming from IN_CORRECT_PASSWORD
to INCORRECT_PASSWORD
improves code readability and maintains consistency with the enum changes.
Also applies to: 72-72
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.html (2)
Line range hint 1-17
: LGTM! Well-structured header with clear visual hierarchy.
The header section effectively combines step indication and completion status using semantic HTML and Tailwind CSS.
Line range hint 58-71
: LGTM! Well-implemented download states with good user experience.
The implementation provides clear feedback and fallback options:
- Loading indicator with text
- Manual download alternative
- Retry option for incorrect files
syncAttribuites(): Observable<SyncDataType[]> { | ||
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/qbd/attribute_stats/`, {}); | ||
} |
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
Fix typo in method name and improve method implementation.
- The method name has a typo:
syncAttribuites
should besyncAttributes
- Consider extracting the API endpoint path to a constant
- Remove unnecessary empty object parameter from get method
+private readonly QBD_ATTRIBUTE_STATS_ENDPOINT = 'qbd/attribute_stats/';
+
-syncAttribuites(): Observable<SyncDataType[]> {
+syncAttributes(): Observable<SyncDataType[]> {
- return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/qbd/attribute_stats/`, {});
+ return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/${this.QBD_ATTRIBUTE_STATS_ENDPOINT}`);
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
syncAttribuites(): Observable<SyncDataType[]> { | |
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/qbd/attribute_stats/`, {}); | |
} | |
private readonly QBD_ATTRIBUTE_STATS_ENDPOINT = 'qbd/attribute_stats/'; | |
syncAttributes(): Observable<SyncDataType[]> { | |
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/${this.QBD_ATTRIBUTE_STATS_ENDPOINT}`); | |
} |
postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> { | ||
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload); | ||
} |
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
Fix typo in method name and consider endpoint path constant.
- The method name has a typo:
postQbdDirectConntion
should bepostQbdDirectConnection
- Consider extracting the API endpoint path to a constant for better maintainability
+private readonly QBD_CONNECTOR_SETTINGS_ENDPOINT = 'connector_settings/';
+
-postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> {
+postQbdDirectConnection(payload: QbdConnectorPost): Observable<QbdConnectorGet> {
- return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload);
+ return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/${this.QBD_CONNECTOR_SETTINGS_ENDPOINT}`, payload);
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> { | |
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload); | |
} | |
private readonly QBD_CONNECTOR_SETTINGS_ENDPOINT = 'connector_settings/'; | |
postQbdDirectConnection(payload: QbdConnectorPost): Observable<QbdConnectorGet> { | |
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/${this.QBD_CONNECTOR_SETTINGS_ENDPOINT}`, payload); | |
} |
postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> { | ||
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload); | ||
} | ||
|
||
syncAttribuites(): Observable<SyncDataType[]> { | ||
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/qbd/attribute_stats/`, {}); | ||
} |
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.
💡 Codebase verification
Fix typos in method names and update all references
The methods with typos are only used in two files:
src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts
(method declarations)src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts
(method calls)
Required changes:
- Rename
postQbdDirectConntion
topostQbdDirectConnection
- Rename
syncAttribuites
tosyncAttributes
No other usages or interfaces were found in the codebase, and the correctly spelled versions of these methods don't exist elsewhere.
🔗 Analysis chain
Verify method name changes across the codebase.
The proposed method name corrections (postQbdDirectConntion
→ postQbdDirectConnection
and syncAttribuites
→ syncAttributes
) might be breaking changes. Please ensure all callers are updated accordingly.
The search results show that both methods with typos are used in the qbd-direct-onboarding-connector.component.ts
file. Let's verify if there are any other potential usages in test files or mocks by searching within the test files we found.
Let me try one more search with different flags to ensure we catch all possible usages and test mocks:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for current method names usage
echo "Searching for current method usage..."
rg "postQbdDirectConntion|syncAttribuites" --type ts
# Search for potential test files
echo "Searching for related test files..."
fd -e spec.ts -e test.ts qbd-direct
Length of output: 4713
Script:
#!/bin/bash
# Search within test files for these method names
echo "Searching in test files..."
rg "postQbdDirectConntion|syncAttribuites" $(fd -e spec.ts -e test.ts qbd-direct)
# Also search for similar method names to see if correct spelling exists elsewhere
echo "Searching for similar method names..."
rg "postQbdDirectConnection|syncAttributes" --type ts
Length of output: 3922
Script:
#!/bin/bash
# Search with context in test files
echo "Searching test files with context..."
rg -B2 -A2 "postQbdDirectConntion|syncAttribuites" src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.spec.ts src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.spec.ts
# Search for method declarations in interface files
echo "Searching interface files..."
fd -e interface.ts -e types.ts | xargs rg "postQbdDirectConntion|syncAttribuites|postQbdDirectConnection|syncAttributes"
Length of output: 1376
@Input() appName: string; | ||
|
||
@Input() subLable: string; | ||
|
||
@Input() redirectLink: string; |
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
Fix typo and enhance type safety of input properties.
- The property name 'subLable' contains a typo
- Input properties would benefit from explicit type annotations and documentation
Apply this diff to improve the code:
- @Input() appName: string;
+ /** The name of the application (e.g., QBD_DIRECT) */
+ @Input() appName!: AppName;
- @Input() subLable: string;
+ /** Secondary label text to display in the dialog */
+ @Input() subLabel!: string;
- @Input() redirectLink: string;
+ /** URL to redirect users for additional information */
+ @Input() redirectLink!: string;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
@Input() appName: string; | |
@Input() subLable: string; | |
@Input() redirectLink: string; | |
/** The name of the application (e.g., QBD_DIRECT) */ | |
@Input() appName!: AppName; | |
/** Secondary label text to display in the dialog */ | |
@Input() subLabel!: string; | |
/** URL to redirect users for additional information */ | |
@Input() redirectLink!: string; |
@@ -14,15 +16,21 @@ import { brandingConfig } from 'src/app/branding/branding-config'; | |||
}) | |||
export class QbdDirectSetupConnectionComponent { | |||
|
|||
password: string = '098765'; | |||
@Input({required: true}) password: string = '098765'; |
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.
Remove hardcoded password value
The password should not be hardcoded in the component. Consider removing the default value or using a more secure method to handle passwords.
- @Input({required: true}) password: string = '098765';
+ @Input({required: true}) password: string;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
@Input({required: true}) password: string = '098765'; | |
@Input({required: true}) password: string; |
<div *ngIf="!isStepCompleted && showSection && !isStepCompleted"> | ||
<app-configuration-step-footer [ctaText]="ConfigurationCtaText.NEXT" [isButtonDisabled]="!isCTAEnabled" (save)="onNextClick()"></app-configuration-step-footer> | ||
</div> | ||
</div> |
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
Remove redundant condition
The condition !isStepCompleted
is repeated unnecessarily in the *ngIf
directive.
-<div *ngIf="!isStepCompleted && showSection && !isStepCompleted">
+<div *ngIf="!isStepCompleted && showSection">
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<div *ngIf="!isStepCompleted && showSection && !isStepCompleted"> | |
<app-configuration-step-footer [ctaText]="ConfigurationCtaText.NEXT" [isButtonDisabled]="!isCTAEnabled" (save)="onNextClick()"></app-configuration-step-footer> | |
</div> | |
</div> | |
<div *ngIf="!isStepCompleted && showSection"> | |
<app-configuration-step-footer [ctaText]="ConfigurationCtaText.NEXT" [isButtonDisabled]="!isCTAEnabled" (save)="onNextClick()"></app-configuration-step-footer> | |
</div> | |
</div> |
<app-svg-icon *ngIf="!isPasswordShown" [svgSource]="'eye-slash'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(true)"></app-svg-icon> | ||
<app-svg-icon *ngIf="isPasswordShown" [svgSource]="'eye'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(false)"></app-svg-icon> | ||
</div> | ||
<div> | ||
<app-svg-icon [svgSource]="'duplicate'" [width]="'18px'" [height]="'18px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="onClipboardCopy()"></app-svg-icon> | ||
<app-svg-icon [svgSource]="'duplicate'" [width]="'22px'" [height]="'22px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="onClipboardCopy()"></app-svg-icon> |
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 password visibility toggle accessibility
The password visibility toggle buttons need ARIA labels and keyboard interaction support for better accessibility.
-<app-svg-icon *ngIf="!isPasswordShown" [svgSource]="'eye-slash'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(true)"></app-svg-icon>
-<app-svg-icon *ngIf="isPasswordShown" [svgSource]="'eye'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(false)"></app-svg-icon>
+<button
+ type="button"
+ [attr.aria-label]="isPasswordShown ? 'Hide password' : 'Show password'"
+ class="tw-border-0 tw-bg-transparent tw-p-0">
+ <app-svg-icon
+ [svgSource]="isPasswordShown ? 'eye' : 'eye-slash'"
+ [width]="'24px'"
+ [height]="'24px'"
+ [isTextColorAllowed]="true"
+ [styleClasses]="'tw-text-icon-muted'"
+ (iconClick)="showPassword(!isPasswordShown)">
+ </app-svg-icon>
+</button>
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<app-svg-icon *ngIf="!isPasswordShown" [svgSource]="'eye-slash'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(true)"></app-svg-icon> | |
<app-svg-icon *ngIf="isPasswordShown" [svgSource]="'eye'" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="showPassword(false)"></app-svg-icon> | |
</div> | |
<div> | |
<app-svg-icon [svgSource]="'duplicate'" [width]="'18px'" [height]="'18px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="onClipboardCopy()"></app-svg-icon> | |
<app-svg-icon [svgSource]="'duplicate'" [width]="'22px'" [height]="'22px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="onClipboardCopy()"></app-svg-icon> | |
<div> | |
<button | |
type="button" | |
[attr.aria-label]="isPasswordShown ? 'Hide password' : 'Show password'" | |
class="tw-border-0 tw-bg-transparent tw-p-0"> | |
<app-svg-icon | |
[svgSource]="isPasswordShown ? 'eye' : 'eye-slash'" | |
[width]="'24px'" | |
[height]="'24px'" | |
[isTextColorAllowed]="true" | |
[styleClasses]="'tw-text-icon-muted'" | |
(iconClick)="showPassword(!isPasswordShown)"> | |
</app-svg-icon> | |
</button> | |
</div> | |
<div> | |
<app-svg-icon [svgSource]="'duplicate'" [width]="'22px'" [height]="'22px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-icon-muted tw-cursor-pointer'" (iconClick)="onClipboardCopy()"></app-svg-icon> |
this.isDialogVisible = true; | ||
} else if (onboardingState === QbdDirectOnboardingState.INCORRECT_PASSWORD) { | ||
// Set connection status, open dialog, and stop polling | ||
this.connectionStatus = QBDConnectionStatus.IN_CORRECT_PASSWORD; |
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.
Correct the enum value for connection status
The enum value QBDConnectionStatus.IN_CORRECT_PASSWORD
appears to have a typo. It should be QBDConnectionStatus.INCORRECT_PASSWORD
to match the updated enum value and ensure consistency across the codebase.
Apply this change to correct the enum reference:
-this.connectionStatus = QBDConnectionStatus.IN_CORRECT_PASSWORD;
+this.connectionStatus = QBDConnectionStatus.INCORRECT_PASSWORD;
Committable suggestion skipped: line range outside the PR's diff.
this.qbdDirectConnectorService.syncAttribuites().subscribe((qbdAttribuites: SyncDataType[]) => { | ||
this.qbdFields = qbdAttribuites; | ||
this.isDataSyncLoading = false; | ||
this.isDataSyncCTADisabled = onboardingState === QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE ? false : true; |
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
Simplify the conditional assignment for clarity
The use of a ternary operator to assign a boolean value can be simplified. Directly assigning the negation improves readability and conciseness.
Simplify the assignment as follows:
-this.isDataSyncCTADisabled = onboardingState === QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE ? false : true;
+this.isDataSyncCTADisabled = onboardingState !== QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
this.isDataSyncCTADisabled = onboardingState === QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE ? false : true; | |
this.isDataSyncCTADisabled = onboardingState !== QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE; |
🧰 Tools
🪛 Biome
[error] 142-142: Unnecessary use of boolean literals in conditional expression.
Simplify your code by directly assigning the result without using a ternary operator.
If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
Check for more details about NOT operator.
Unsafe fix: Remove the conditional expression with
(lint/complexity/noUselessTernary)
this.isCompanyPathInvalid = filePathRegex.test(normalizedPath); | ||
if (this.isCompanyPathInvalid) { |
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.
Fix the logic error in company path validation
The variable isCompanyPathInvalid
is assigned the result of filePathRegex.test(normalizedPath)
, which returns true
when the path is valid, not invalid. This contradicts the variable name and leads to incorrect logic in the subsequent if
condition, potentially allowing invalid paths to proceed.
To correct this, invert the result to match the variable name or rename the variable to reflect its purpose accurately.
Option 1: Invert the test result
-this.isCompanyPathInvalid = filePathRegex.test(normalizedPath);
+this.isCompanyPathInvalid = !filePathRegex.test(normalizedPath);
Option 2: Rename the variable to isCompanyPathValid
and update the condition
-this.isCompanyPathInvalid = filePathRegex.test(normalizedPath);
-if (this.isCompanyPathInvalid) {
+this.isCompanyPathValid = filePathRegex.test(normalizedPath);
+if (this.isCompanyPathValid) {
Ensure all other references to this variable are updated accordingly to maintain consistency.
Committable suggestion skipped: line range outside the PR's diff.
private workspaceService: WorkspaceService | ||
) { } | ||
|
||
postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> { |
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.
postConnectorSettings
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload); | ||
} | ||
|
||
syncAttribuites(): Observable<SyncDataType[]> { |
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.
getSyncedAttributeStats
|
||
showDownloadLink: boolean; | ||
|
||
isDownloadfileLoading: boolean; |
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.
isDownloadInProgress
|
||
isConnectionLoading: boolean; | ||
|
||
isDataSyncLoading: boolean = true; |
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.
isDataSyncInProgress
triggerDownload(filePath: string) { | ||
const normalizedPath = filePath.replace(/\\\\/g, "\\"); | ||
const filePathRegex = /^(\/?|\.?\/?|[a-zA-Z]:\\)([a-zA-Z0-9_-]+[\\/])*[a-zA-Z0-9 _-]+\.qbw$/; | ||
this.isCompanyPathInvalid = filePathRegex.test(normalizedPath); |
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.
isCompanyPathValid
} | ||
} | ||
|
||
handleDataSyncState(status: QbdDirectWorkspace) { |
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.
updateDataSyncState
return [QbdDirectOnboardingState.DESTINATION_SYNC_IN_PROGRESS, QbdDirectOnboardingState.INCORRECT_PASSWORD, QbdDirectOnboardingState.INCORRECT_COMPANY_PATH, QbdDirectOnboardingState.DESTINATION_SYNC_COMPLETE].includes(status); | ||
} | ||
|
||
isTerminalStatusDataSync(status: QbdDirectOnboardingState): boolean { |
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.
checkDataSyncPollingTerminationState
takeWhile((status: any) => !this.isTerminalStatusDataSync(status[0].onboarding_state as QbdDirectOnboardingState), true) // Stop if terminal status is reached | ||
) | ||
.subscribe( | ||
(status) => this.handleDataSyncState(status[0]), |
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.
updateDataSyncStatus()
) | ||
.subscribe( | ||
(status) => this.handleDataSyncState(status[0]), | ||
(error) => console.error('Error polling workspace status:', error) |
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.
can remove
} | ||
|
||
|
||
closeDialog(event: any) { |
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.
_: any
PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive) |
PR description must contain a link to a ClickUp (case-insensitive) |
d4c7494
into
qbd-direct-step-connector-UI
* feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
* feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
* feat: qbd-direct-onboarding-pre-requisite implementation * styling changes * unit test fix * step footer contentt fix * pre requisite Ui updation * PR comments fix * PR comments fix * feat: Download qwd file UI changes (#1059) * feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
* feat: qbd direct onboarding landing page * feat: qbd-direct-onboarding-pre-requisite implementation * PR comments fix * PR fix * updateWorkspaceOnboardingState service return type update * qbd direct logo update * feat: qbd-direct onboarding prerequisite UI implementation (#1058) * feat: qbd-direct-onboarding-pre-requisite implementation * styling changes * unit test fix * step footer contentt fix * pre requisite Ui updation * PR comments fix * PR comments fix * feat: Download qwd file UI changes (#1059) * feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
* feat: onboarding basic setup * feat: qbd direct onboarding landing page (#1056) * feat: qbd direct onboarding landing page * feat: qbd-direct-onboarding-pre-requisite implementation * PR comments fix * PR fix * updateWorkspaceOnboardingState service return type update * qbd direct logo update * feat: qbd-direct onboarding prerequisite UI implementation (#1058) * feat: qbd-direct-onboarding-pre-requisite implementation * styling changes * unit test fix * step footer contentt fix * pre requisite Ui updation * PR comments fix * PR comments fix * feat: Download qwd file UI changes (#1059) * feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
* feat: checkbox button creation * PR comments fix * feat: onboarding basic setup (#1055) * feat: onboarding basic setup * feat: qbd direct onboarding landing page (#1056) * feat: qbd direct onboarding landing page * feat: qbd-direct-onboarding-pre-requisite implementation * PR comments fix * PR fix * updateWorkspaceOnboardingState service return type update * qbd direct logo update * feat: qbd-direct onboarding prerequisite UI implementation (#1058) * feat: qbd-direct-onboarding-pre-requisite implementation * styling changes * unit test fix * step footer contentt fix * pre requisite Ui updation * PR comments fix * PR comments fix * feat: Download qwd file UI changes (#1059) * feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]>
PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive) |
PR description must contain a link to a ClickUp (case-insensitive) |
PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive) |
PR description must contain a link to a ClickUp (case-insensitive) |
* fead: folder creation * PR comments fix * feat: Qbd checkbox button creation (#1054) * feat: checkbox button creation * PR comments fix * feat: onboarding basic setup (#1055) * feat: onboarding basic setup * feat: qbd direct onboarding landing page (#1056) * feat: qbd direct onboarding landing page * feat: qbd-direct-onboarding-pre-requisite implementation * PR comments fix * PR fix * updateWorkspaceOnboardingState service return type update * qbd direct logo update * feat: qbd-direct onboarding prerequisite UI implementation (#1058) * feat: qbd-direct-onboarding-pre-requisite implementation * styling changes * unit test fix * step footer contentt fix * pre requisite Ui updation * PR comments fix * PR comments fix * feat: Download qwd file UI changes (#1059) * feat: Download qwd file UI changes * download file Ui updation * download file Ui updation * download file Ui updation * download file Ui updation * feat: qbd connector setup UI changes (#1060) * feat: qbd connector setup UI changes * Merge branch qbd-direct-onboarding-download-file-UI into qbd-direct-step-connector-UI * feat: Qbd direct connection data sync UI changes (#1061) * feat: Qbd direct connection data sync UI changes * input made required * svg update * feat: qbd direct pre requisite ts changes (#1062) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes (#1063) * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes (#1064) * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes (#1065) * PR comment fix * PR comment fix * Qbd direct connector data sync up ts (#1070) * feat: qbd direct pre requisite ts changes * feat: qbd direct pre requisite ts changes * feat: qbd direct connector download file ts changes * feat: qbd direct connector setup connector ts changes * feat: qbd direct connector data sync up ts changes * feat: QBD direct main connection page business logic (#1066) * feat: QBD direct main connection page business logic * onboarding connection ts changes * onboarding connection ts changes --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> --------- Co-authored-by: ashwin1111 <[email protected]> * checkbox button fix * QA fixes * qa fixes * qa fixes * fix: qbd direct export settings onboarding changes and content changes (#1082) * qbd direct export settings onboarding changes and content changes * fix: qbd direct import settings onboarding changes and content changes (#1083) * qbd direct import settings onboarding changes and content changes * qbd direct advanced settings onboarding changes and content changes (#1084) * QA fixes * QBD direct bug fixes * QBD direct bug fixes * JE changes in export settings and mapping * PR comments fix --------- Co-authored-by: ashwin1111 <[email protected]>
Description
Please add PR description here, add screenshots if needed
Clickup
Please add link here
Summary by CodeRabbit
Release Notes
New Features
Improvements
Bug Fixes
Refactor