-
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
feat: qbd direct pre requisite ts changes #1062
feat: qbd direct pre requisite ts changes #1062
Conversation
Caution Review failedThe pull request is closed. WalkthroughThis pull request introduces several modifications across various components related to the QBD Direct onboarding process. Key changes include the commenting out of the Changes
Possibly related PRs
Suggested reviewers
Warning Rate limit exceeded@DhaaraniCIT has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 16 minutes and 13 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 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 (
|
private toastService: IntegrationsToastService, | ||
private workspaceService: WorkspaceService, | ||
private storageService: StorageService | ||
private workspaceService: WorkspaceService | ||
) { } | ||
|
||
qbdWebConnectorStatus(status: checkBoxEmit): void { |
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.
updateConnectorStatus()
private toastService: IntegrationsToastService, | ||
private workspaceService: WorkspaceService, | ||
private storageService: StorageService | ||
private workspaceService: WorkspaceService | ||
) { } | ||
|
||
qbdWebConnectorStatus(status: checkBoxEmit): void { |
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.
call the type as CheckBoxUpdate
, update the name
} | ||
|
||
continueToNextStep(): void{ | ||
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: 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.
"" not required in onboarding_state
} | ||
|
||
continueToNextStep(): void{ | ||
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | ||
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | ||
this.saveInProgress = false; |
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.
mark saveInProgress as true before the call
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: 4
🧹 Outside diff range and nitpick comments (11)
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (2)
20-20
: Consider adding type safety to EventEmitterWhile the EventEmitter works as is, it's a TypeScript best practice to explicitly define the event payload type, even if it's void.
- @Output() continueClick = new EventEmitter(); + @Output() continueClick = new EventEmitter<void>();
Line range hint
1-38
: Consider adding component documentationSince this component is part of a larger feature implementation (QBD Direct pre-requisite changes), it would be helpful to add JSDoc comments describing:
- The component's purpose in the QBD Direct flow
- The expected format/structure of qbdFields
- The conditions that control isCTAEnabled
- When continueClick is emitted and what the parent should do
+/** + * Component responsible for handling QBD Direct data synchronization configuration. + * Used in the pre-requisite setup flow for QuickBooks Desktop integration. + */ @Component({ selector: 'app-qbd-direct-data-sync',src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (2)
26-32
: Consider adding type parameters to EventEmitters for better type safety.While the EventEmitters are correctly declared, adding type parameters would improve type safety and make the component's API more explicit.
- @Output() nextStep = new EventEmitter(); - @Output() downloadClick = new EventEmitter(); - @Output() retryClick = new EventEmitter(); - @Output() manualDownload = new EventEmitter(); + @Output() nextStep = new EventEmitter<void>(); + @Output() downloadClick = new EventEmitter<void>(); + @Output() retryClick = new EventEmitter<void>(); + @Output() manualDownload = new EventEmitter<void>();
Line range hint
1-51
: Well-structured component following Angular best practices.The component demonstrates good architecture with:
- Clear separation of inputs and outputs
- Proper use of standalone components
- Well-defined responsibilities
- Good modularity
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts (2)
21-27
: Consider adding JSDoc comments for input propertiesThese required inputs would benefit from documentation explaining their purpose and expected values.
Example:
/** * Current loading state of the connection setup */ @Input({required: true}) isLoading: boolean;
Based on the analysis of the code, I can now provide the final response:
Password handling implementation needs security improvements
The current implementation has several security considerations:
- The password is hardcoded with a default value (
098765
)- The clipboard copy mechanism uses an insecure approach with
document.execCommand
- No automatic timeout for password visibility
- No input sanitization is implemented
Recommended changes:
- Remove the hardcoded default password value
- Use the modern
navigator.clipboard.writeText()
API for clipboard operations- Add a timeout to automatically hide the password after a period
- Consider using Angular's
DomSanitizer
for input sanitization🔗 Analysis chain
Line range hint
1-71
: Consider security implications of password handlingSince this component handles sensitive data (password):
- Ensure the password is not logged or stored in browser storage
- Consider adding a timeout to automatically hide the password after display
- Add proper input sanitization if the password comes from an external source
Let me gather more information about password handling by checking for any password-related storage or validation logic.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check for potential password logging or storage rg -i "console\.(log|debug|info)" --type ts rg -i "localStorage|sessionStorage" --type tsLength of output: 2904
Script:
#!/bin/bash # Check for password-related patterns in the codebase rg -i "password" --type ts -g "!*.spec.ts" -A 3 # Check if there are any input sanitization utilities ast-grep --pattern 'import { $_ } from "@angular/platform-browser"'Length of output: 15123
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts (1)
68-71
: Refactor suggestion: Improve type naming and method concisenessWhile the logic is correct, consider these improvements:
- Rename the
checkBoxEmit
type toCheckBoxUpdate
as suggested in the previous review- Simplify the state check logic
- qbdWebConnectorStatus(status: checkBoxEmit): void { + qbdWebConnectorStatus(status: CheckBoxUpdate): void { this.preRequisitesteps[status.id-1].state = status.value ? QBDPreRequisiteState.COMPLETE : QBDPreRequisiteState.INCOMPLETE; - if (this.preRequisitesteps[0].state === QBDPreRequisiteState.COMPLETE && this.preRequisitesteps[1].state === QBDPreRequisiteState.COMPLETE) { - this.isContinueDisabled = false; - } + this.isContinueDisabled = !this.preRequisitesteps.every(step => step.state === QBDPreRequisiteState.COMPLETE); }src/app/integrations/qbd-direct/qbd-direct.component.ts (2)
Line range hint
44-58
: Consider externalizing the route mapping configuration.The
onboardingStateComponentMap
object contains a large number of route mappings. Consider moving this to a separate configuration file to improve maintainability and reusability.+ // Create a new file: qbd-direct-routes.config.ts + export const QBD_DIRECT_ROUTES = { + [QbdDirectOnboardingState.YET_TO_START]: '/integrations/qbd_direct/onboarding/landing', + [QbdDirectOnboardingState.CONFIRM_PRE_REQUISITES]: '/integrations/qbd_direct/onboarding/pre_requisite', + // ... other mappings + }; - const onboardingStateComponentMap = { - [QbdDirectOnboardingState.YET_TO_START]: '/integrations/qbd_direct/onboarding/landing', - // ... current mappings - }; + this.router.navigateByUrl(QBD_DIRECT_ROUTES[this.workspace.onboarding_state]);
Line range hint
74-84
: Add error handling for workspace operations.The workspace setup operations lack error handling. Consider adding error handlers to manage API failures gracefully.
private setupWorkspace(): void { this.helperService.setBaseApiURL(AppUrl.QBD_DIRECT); this.workspaceService.getWorkspace(this.user.org_id).subscribe({ + next: (workspaces: QbdDirectWorkspace[]) => { if (workspaces.length) { this.storeWorkspaceAndNavigate(workspaces[0]); } else { this.workspaceService.postWorkspace().subscribe((workspace: QbdDirectWorkspace) => { this.storeWorkspaceAndNavigate(workspace); + }, + error: (error) => { + console.error('Failed to create workspace:', error); + // Handle error appropriately (e.g., show user notification) }); } + }, + error: (error) => { + console.error('Failed to fetch workspaces:', error); + // Handle error appropriately (e.g., show user notification) + } }); }src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html (2)
Line range hint
71-73
: Enhance iframe accessibility.Consider adding title and loading attributes to the YouTube iframe for better accessibility.
-<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" + title="QuickBooks Web Connector Setup Guide" + loading="lazy"> +</iframe>
Line range hint
89-95
: Add ARIA attributes to success message.Consider adding ARIA attributes to improve accessibility of the success message.
-<div class="tw-text-center"> +<div class="tw-text-center" role="alert" aria-live="polite"> <app-svg-icon svgSource="check-circle-outline" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-success-toast tw-pr-6-px'"></app-svg-icon> </div> -<div> +<div aria-label="Connection successful"> <p class="tw-pt-4-px tw-text-text-tertiary tw-text-16-px tw-font-500">Success!</p> <span class="tw-pt-8-px tw-text-text-muted tw-text-12-px tw-font-400">You're now connected to QuickBooks Desktop.</span> </div>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (9)
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-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.spec.ts
(1 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.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html
(1 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/core/svg-icon/svg-icon.component.ts
(1 hunks)
✅ Files skipped from review due to trivial changes (3)
- src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html
- src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.spec.ts
- src/app/shared/components/core/svg-icon/svg-icon.component.ts
🔇 Additional comments (9)
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (1)
2-2
: LGTM: Import statement is correctly organized
The EventEmitter import is appropriately added to the existing import statement from @angular/core, maintaining clean import organization.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (1)
39-51
: LGTM! Event handlers are well-implemented.
The event handler methods are concise, follow a consistent pattern, and correctly emit their respective events.
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts (3)
8-8
: LGTM: Import additions are appropriate
The new imports for QbdDirectOnboardingState
and QbdDirectWorkspace
align with the component's enhanced functionality for state management and workspace handling.
Also applies to: 10-10
64-64
: LGTM: Proper cleanup of unused dependencies
Good job removing unused service dependencies from the constructor, keeping it minimal and focused.
50-50
: Verify the impact of initial INCOMPLETE state
The change to initialize both prerequisite steps as INCOMPLETE is logically sound, ensuring explicit user acknowledgment. However, let's verify this doesn't affect returning users who might have already completed these steps.
Also applies to: 58-58
✅ Verification successful
Let me gather more information about how the prerequisite states are managed, particularly focusing on any persistence or initialization logic.
Let me check the enum definition and the actual implementation to understand how these states are managed.
Based on the code analysis, I can now generate the final response as I have sufficient information to verify the concern about the initial INCOMPLETE state's impact.
Initial INCOMPLETE state is safe and properly handled
The change to initialize prerequisite steps with INCOMPLETE state is safe and won't affect returning users because:
- The state is managed entirely in-memory within the component and is not persisted
- The state is only used to control the "Continue" button's disabled state
- When both steps are marked complete, the workspace's onboarding state is updated to CONNECTION, which is properly persisted through the WorkspaceService
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check if there's any persistence or caching of prerequisite states that might be affected
rg -A 5 "QBDPreRequisiteState.COMPLETE"
Length of output: 1366
Script:
#!/bin/bash
# Check for state initialization and persistence logic
ast-grep --pattern 'class QBDDirectOnboardingPreRequisiteComponent {
$$$
ngOnInit() {
$$$
}
$$$
}'
# Also check for any service calls or state management
rg -l "QBDPreRequisiteState"
Length of output: 405
Script:
#!/bin/bash
# Check the enum definition
cat src/app/core/models/enum/enum.model.ts
# Check the component implementation for state management
cat src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts
# Check if there's any persistence in the connector model
cat src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-connector.model.ts
Length of output: 27003
src/app/integrations/qbd-direct/qbd-direct.component.ts (2)
44-44
: LGTM! Path check correctly updated for QBD Direct integration.
The pathname check has been appropriately updated to match the QBD Direct integration context.
47-47
: LGTM! Route mapping aligns with prerequisite confirmation flow.
The route mapping for CONFIRM_PRE_REQUISITES
state has been logically updated to direct users to the prerequisites page before proceeding to connector setup.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html (2)
45-46
: LGTM! Password visibility toggle icons look good.
The increased icon dimensions (24px) and simplified icon names improve visual clarity while maintaining functionality.
49-49
: LGTM! Clipboard copy icon looks good.
The adjusted icon dimension (22px) maintains visual consistency with other icons in the interface.
fieldLength: number; | ||
|
||
ConfigurationCtaText = ConfigurationCta; | ||
|
||
onContinueClick() { | ||
// Emit output | ||
this.continueClick.emit(); |
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
Event handler missing for commented component
The component is currently commented out in qbd-direct-onboarding-connector.component.html
and the parent component (QbdDirectOnboardingConnectorComponent
) has no implementation to handle the continueClick
event. When uncommenting this component, you'll need to:
- Add the
(continueClick)
event binding in the template - Implement the corresponding event handler in the component class
🔗 Analysis chain
Verify the parent component handles this event
The event emission is implemented correctly, but since the AI summary mentions this component is commented out in the parent template, we should verify the event handling is properly set up when this component is re-enabled.
Let me gather more information about the parent component to understand how this event was handled before being commented out.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for parent components that might use this component and verify event binding
rg -l "app-qbd-direct-data-sync" | xargs rg -A 2 -B 2 "(continueClick)"
# Check if there are any commented instances of this component
rg -l "app-qbd-direct-data-sync" | xargs rg "<!--.*app-qbd-direct-data-sync.*-->"
Length of output: 1584
Script:
#!/bin/bash
# Check the parent component's typescript file for any continueClick handlers
cat src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts
# Check if there are any other instances of this component being used (uncommented)
rg "<app-qbd-direct-data-sync" --type html
Length of output: 895
@@ -14,15 +16,19 @@ 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 default value
Having a hardcoded password as a default value poses a security risk, even if it's just a placeholder. Consider removing the default value since it's a required input anyway.
- @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; |
onClipboardCopy() { | ||
// Copy password to clipboard | ||
const selBox = document.createElement('textarea'); | ||
selBox.value = this.password; | ||
document.body.appendChild(selBox); | ||
selBox.select(); | ||
selBox.click(); | ||
document.execCommand('copy'); | ||
|
||
this.messageService.add({ | ||
severity: 'success', | ||
summary: 'Password copied to clipboard' | ||
}); | ||
|
||
document.body.removeChild(selBox); | ||
event?.stopPropagation(); |
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
Refactor clipboard functionality to use modern Clipboard API
The current implementation has several issues:
- Uses deprecated
document.execCommand('copy')
- References undefined
event
parameter - Unnecessarily manipulates DOM
Consider refactoring to use the modern Clipboard API:
- onClipboardCopy() {
- const selBox = document.createElement('textarea');
- selBox.value = this.password;
- document.body.appendChild(selBox);
- selBox.select();
- selBox.click();
- document.execCommand('copy');
-
- this.messageService.add({
- severity: 'success',
- summary: 'Password copied to clipboard'
- });
-
- document.body.removeChild(selBox);
- event?.stopPropagation();
- }
+ async onClipboardCopy() {
+ try {
+ await navigator.clipboard.writeText(this.password);
+ this.messageService.add({
+ severity: 'success',
+ summary: 'Password copied to clipboard'
+ });
+ } catch (err) {
+ this.messageService.add({
+ severity: 'error',
+ summary: 'Failed to copy password'
+ });
+ }
+ }
📝 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.
onClipboardCopy() { | |
// Copy password to clipboard | |
const selBox = document.createElement('textarea'); | |
selBox.value = this.password; | |
document.body.appendChild(selBox); | |
selBox.select(); | |
selBox.click(); | |
document.execCommand('copy'); | |
this.messageService.add({ | |
severity: 'success', | |
summary: 'Password copied to clipboard' | |
}); | |
document.body.removeChild(selBox); | |
event?.stopPropagation(); | |
async onClipboardCopy() { | |
try { | |
await navigator.clipboard.writeText(this.password); | |
this.messageService.add({ | |
severity: 'success', | |
summary: 'Password copied to clipboard' | |
}); | |
} catch (err) { | |
this.messageService.add({ | |
severity: 'error', | |
summary: 'Failed to copy password' | |
}); | |
} | |
} |
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | ||
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | ||
this.saveInProgress = false; | ||
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | ||
}); |
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.
Set saveInProgress before making the API call
As mentioned in the previous review, set saveInProgress = true
before making the API call to properly indicate the loading state.
continueToNextStep(): void{
+ this.saveInProgress = true;
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => {
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state);
this.saveInProgress = false;
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]);
});
}
📝 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.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | |
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | |
this.saveInProgress = false; | |
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | |
}); | |
continueToNextStep(): void{ | |
this.saveInProgress = true; | |
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | |
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | |
this.saveInProgress = false; | |
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | |
}); | |
} |
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: 5
🧹 Outside diff range and nitpick comments (8)
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (1)
20-20
: Add type parameter to EventEmitter for better type safetyWhile the implementation works, it's recommended to explicitly specify the type parameter for EventEmitter.
- @Output() continueClick = new EventEmitter(); + @Output() continueClick = new EventEmitter<void>();src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (1)
38-52
: Add return type annotations to methodsThe implementation is clean and follows good practices. Consider adding return type annotations for better type safety.
Apply this diff:
- continueToNextStep() { + continueToNextStep(): void { this.nextStep.emit(); } - onDownloadClick() { + onDownloadClick(): void { this.downloadClick.emit(); } - onManualDownload() { + onManualDownload(): void { this.manualDownload.emit(); } - onRetryClick() { + onRetryClick(): void { this.retryClick.emit(); }src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts (1)
Line range hint
1-71
: Consider additional security measuresSince this component handles sensitive data (password):
- Consider implementing password masking in logs
- Add rate limiting for clipboard operations
- Consider adding automatic clipboard clearing after a timeout
Would you like assistance in implementing these security enhancements?
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts (2)
49-51
: Update placeholder URLs with actual QuickBooks Web Connector documentation links.The external links are currently set to placeholder URLs ('https://qbd.com'). Please update these with the actual QuickBooks Web Connector documentation links to ensure users can access the correct resources.
Also applies to: 57-59
67-72
: Enhance checkbox status handling and type naming.The method could be more concise and the type name could be more descriptive.
Consider this refactoring:
-qbdWebConnectorStatus(status: checkBoxEmit): void { +qbdWebConnectorStatus(status: CheckBoxUpdate): void { this.preRequisitesteps[status.id-1].state = status.value ? QBDPreRequisiteState.COMPLETE : QBDPreRequisiteState.INCOMPLETE; - if (this.preRequisitesteps[0].state === QBDPreRequisiteState.COMPLETE && this.preRequisitesteps[1].state === QBDPreRequisiteState.COMPLETE) { - this.isContinueDisabled = false; - } + this.isContinueDisabled = !this.preRequisitesteps.every(step => step.state === QBDPreRequisiteState.COMPLETE); }src/app/integrations/qbd-direct/qbd-direct.component.ts (1)
Line range hint
44-59
: Consider enhancing error handling and simplifying routing logicThe current implementation could benefit from:
- Error handling for invalid onboarding states
- A more maintainable approach to route mapping, such as moving the state-to-route mapping to a separate configuration file
- Type safety for the route mapping object
Consider refactoring like this:
// Create a separate config file for routes const QBD_ROUTES: Record<QbdDirectOnboardingState, string> = { [QbdDirectOnboardingState.YET_TO_START]: '/integrations/qbd_direct/onboarding/landing', // ... other routes } as const; // In the component private navigate(): void { if (this.windowReference.location.pathname === '/integrations/qbd_direct') { const route = QBD_ROUTES[this.workspace.onboarding_state] ?? '/integrations/qbd_direct/error'; this.router.navigateByUrl(route); } }src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html (2)
45-46
: Consider adding ARIA labels for password visibility toggle.The icon size increase improves visibility. However, for better accessibility, consider adding ARIA labels.
- <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> + <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)" aria-label="Show password"></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)" aria-label="Hide password"></app-svg-icon>
49-49
: Consider adding a tooltip for copy action.The icon size increase improves visibility. Consider adding a tooltip to provide visual feedback for the copy action.
- <app-svg-icon [svgSource]="'duplicate'" [width]="'22px'" [height]="'22px'" [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()" pTooltip="Copy to clipboard" tooltipPosition="top"></app-svg-icon>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (9)
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-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.spec.ts
(1 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.ts
(2 hunks)src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html
(1 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/core/svg-icon/svg-icon.component.ts
(1 hunks)
✅ Files skipped from review due to trivial changes (3)
- src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html
- src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.spec.ts
- src/app/shared/components/core/svg-icon/svg-icon.component.ts
🔇 Additional comments (7)
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts (2)
2-2
: LGTM: Import statement correctly updated
The addition of EventEmitter
and Output
imports is appropriate for the new output event implementation.
26-28
: Verify component integration and event handling
The event handler implementation is correct, but since the AI summary indicates this component is commented out in the parent template, we should verify the integration.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts (1)
Line range hint 1-54
: Verify event handler implementation in parent component
The component's event-based communication looks good. Let's verify that these events are properly handled in the parent component.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts (2)
2-2
: LGTM: Import statements are properly organized
The necessary imports have been added to support the new functionality.
Also applies to: 7-8
21-21
: LGTM: Well-structured component interface
The Input/Output decorators are properly implemented:
- Required inputs enforce proper component usage
- Event emitters follow Angular naming conventions
Also applies to: 23-23, 25-25, 27-27, 29-29, 31-31
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts (1)
63-65
: Verify error handling after service removals.
The removal of IntegrationsToastService
suggests that error notifications might not be properly handled. Consider how errors will be communicated to users, especially during state updates and navigation.
src/app/integrations/qbd-direct/qbd-direct.component.ts (1)
44-44
: LGTM! Critical path check correction
The path check has been correctly updated to '/integrations/qbd_direct' from '/integrations/qbo', fixing a critical routing issue.
@Output() nextStep = new EventEmitter(); | ||
|
||
@Output() downloadClick = new EventEmitter(); | ||
|
||
@Output() retryClick = new EventEmitter(); | ||
|
||
@Output() manualDownload = new EventEmitter(); |
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
Add type parameters to EventEmitters for better type safety
The EventEmitters should specify their emitted value types for better type safety and developer experience.
Apply this diff:
- @Output() nextStep = new EventEmitter();
+ @Output() nextStep = new EventEmitter<void>();
- @Output() downloadClick = new EventEmitter();
+ @Output() downloadClick = new EventEmitter<void>();
- @Output() retryClick = new EventEmitter();
+ @Output() retryClick = new EventEmitter<void>();
- @Output() manualDownload = new EventEmitter();
+ @Output() manualDownload = new EventEmitter<void>();
📝 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.
@Output() nextStep = new EventEmitter(); | |
@Output() downloadClick = new EventEmitter(); | |
@Output() retryClick = new EventEmitter(); | |
@Output() manualDownload = new EventEmitter(); | |
@Output() nextStep = new EventEmitter<void>(); | |
@Output() downloadClick = new EventEmitter<void>(); | |
@Output() retryClick = new EventEmitter<void>(); | |
@Output() manualDownload = new EventEmitter<void>(); |
@@ -14,15 +16,19 @@ 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.
Security Issue: Remove hardcoded password
The default password value should not be hardcoded in the source code as it poses a security risk.
- @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; |
onClipboardCopy() { | ||
// Copy password to clipboard | ||
const selBox = document.createElement('textarea'); | ||
selBox.value = this.password; | ||
document.body.appendChild(selBox); | ||
selBox.select(); | ||
selBox.click(); | ||
document.execCommand('copy'); | ||
|
||
this.messageService.add({ | ||
severity: 'success', | ||
summary: 'Password copied to clipboard' | ||
}); | ||
|
||
document.body.removeChild(selBox); | ||
event?.stopPropagation(); |
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
Modernize clipboard implementation
The current clipboard implementation has several issues:
- Uses deprecated
document.execCommand('copy')
- Creates unnecessary DOM elements
- Has undefined event usage
Consider using the modern Clipboard API:
- onClipboardCopy() {
- const selBox = document.createElement('textarea');
- selBox.value = this.password;
- document.body.appendChild(selBox);
- selBox.select();
- selBox.click();
- document.execCommand('copy');
-
- this.messageService.add({
- severity: 'success',
- summary: 'Password copied to clipboard'
- });
-
- document.body.removeChild(selBox);
- event?.stopPropagation();
- }
+ async onClipboardCopy(event?: Event) {
+ try {
+ await navigator.clipboard.writeText(this.password);
+ this.messageService.add({
+ severity: 'success',
+ summary: 'Password copied to clipboard'
+ });
+ } catch (err) {
+ this.messageService.add({
+ severity: 'error',
+ summary: 'Failed to copy password'
+ });
+ }
+ event?.stopPropagation();
+ }
📝 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.
onClipboardCopy() { | |
// Copy password to clipboard | |
const selBox = document.createElement('textarea'); | |
selBox.value = this.password; | |
document.body.appendChild(selBox); | |
selBox.select(); | |
selBox.click(); | |
document.execCommand('copy'); | |
this.messageService.add({ | |
severity: 'success', | |
summary: 'Password copied to clipboard' | |
}); | |
document.body.removeChild(selBox); | |
event?.stopPropagation(); | |
async onClipboardCopy(event?: Event) { | |
try { | |
await navigator.clipboard.writeText(this.password); | |
this.messageService.add({ | |
severity: 'success', | |
summary: 'Password copied to clipboard' | |
}); | |
} catch (err) { | |
this.messageService.add({ | |
severity: 'error', | |
summary: 'Failed to copy password' | |
}); | |
} | |
event?.stopPropagation(); | |
} |
continueToNextStep(): void{ | ||
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | ||
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | ||
this.saveInProgress = false; | ||
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | ||
}); |
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 state management and add error handling.
Several issues need to be addressed:
saveInProgress
should be set before the operation starts- No error handling for failed state updates
- The onboarding_state property doesn't need quotes
Consider this implementation:
continueToNextStep(): void {
+ this.saveInProgress = true;
- this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => {
+ this.workspaceService.updateWorkspaceOnboardingState({onboarding_state: QbdDirectOnboardingState.CONNECTION}).subscribe({
+ next: (workspaceResponse: QbdDirectWorkspace) => {
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state);
this.saveInProgress = false;
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]);
- });
+ },
+ error: (error: any) => {
+ this.saveInProgress = false;
+ console.error('Failed to update workspace state:', error);
+ }
+ });
}
📝 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.
continueToNextStep(): void{ | |
this.workspaceService.updateWorkspaceOnboardingState({"onboarding_state": QbdDirectOnboardingState.CONNECTION}).subscribe((workspaceResponse: QbdDirectWorkspace) => { | |
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | |
this.saveInProgress = false; | |
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | |
}); | |
continueToNextStep(): void { | |
this.saveInProgress = true; | |
this.workspaceService.updateWorkspaceOnboardingState({onboarding_state: QbdDirectOnboardingState.CONNECTION}).subscribe({ | |
next: (workspaceResponse: QbdDirectWorkspace) => { | |
this.workspaceService.setOnboardingState(workspaceResponse.onboarding_state); | |
this.saveInProgress = false; | |
this.router.navigate([`/integrations/qbd_direct/onboarding/connector`]); | |
}, | |
error: (error: any) => { | |
this.saveInProgress = false; | |
console.error('Failed to update workspace state:', error); | |
} | |
}); | |
} |
const onboardingStateComponentMap = { | ||
[QbdDirectOnboardingState.YET_TO_START]: '/integrations/qbd_direct/onboarding/landing', | ||
[QbdDirectOnboardingState.CONFIRM_PRE_REQUISITES]: '/integrations/qbd_direct/onboarding/connector', | ||
[QbdDirectOnboardingState.CONFIRM_PRE_REQUISITES]: '/integrations/qbd_direct/onboarding/pre_requisite', |
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
Route inconsistency detected - Action required
The verification revealed inconsistencies in route usage that need to be addressed:
qbd-direct-export-settings.component.ts
uses/integrations/qbd_direct/onboarding/connector
as a navigation target innavigateToPreviousStep()
qbd-direct-onboarding-pre-requisite.component.ts
navigates to/integrations/qbd_direct/onboarding/connector
qbd-direct-onboarding-landing.component.ts
uses/integrations/qbd_direct/onboarding/pre_requisite/
(note the trailing slash)- The routing module defines the route as just
pre_requisite
These inconsistencies could lead to navigation issues:
- Some components are still using the old connector route
- Inconsistent use of trailing slash in the pre_requisite route
- The route path in the routing module doesn't match the full paths used in navigation
🔗 Analysis chain
Verify route consistency across the application
The route for CONFIRM_PRE_REQUISITES state has been changed to '/pre_requisite'. Let's ensure this route change is consistently implemented across the application.
Let me check the specific content of these files to better understand the route usage and potential inconsistencies.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for any hardcoded references to the old route and verify the new route implementation
# Search for any remaining references to the old route pattern
echo "Checking for old route pattern..."
rg -l "qbd_direct/onboarding/connector" --type ts
# Search for consistent usage of the new route pattern
echo "Checking new route pattern implementation..."
rg -l "qbd_direct/onboarding/pre_requisite" --type ts
# Look for potential route definitions in routing modules
echo "Checking route definitions..."
rg -l "path.*pre_requisite" --type ts
Length of output: 977
Script:
#!/bin/bash
# Check the content of files that reference the routes
echo "Content of qbd-direct.component.ts:"
rg -A 2 -B 2 "qbd_direct/onboarding/(connector|pre_requisite)" src/app/integrations/qbd-direct/qbd-direct.component.ts
echo -e "\nContent of qbd-direct-export-settings.component.ts:"
rg -A 2 -B 2 "qbd_direct/onboarding/connector" src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.ts
echo -e "\nContent of qbd-direct-onboarding-pre-requisite.component.ts:"
rg -A 2 -B 2 "qbd_direct/onboarding/connector" src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-pre-requisite/qbd-direct-onboarding-pre-requisite.component.ts
echo -e "\nContent of qbd-direct-onboarding-landing.component.ts:"
rg -A 2 -B 2 "qbd_direct/onboarding/pre_requisite" src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-landing/qbd-direct-onboarding-landing.component.ts
echo -e "\nContent of routing module:"
rg -A 2 -B 2 "path.*pre_requisite" src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-routing.module.ts
Length of output: 3079
|
* 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]>
* 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
feat: qbd direct pre requisite ts changes
Clickup
https://app.clickup.com/t/86cwzcep3
Summary by CodeRabbit
Release Notes
New Features
Improvements
Bug Fixes
Style