Skip to content
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

Merged

Conversation

DhaaraniCIT
Copy link
Contributor

@DhaaraniCIT DhaaraniCIT commented Nov 13, 2024

Description

Please add PR description here, add screenshots if needed

Clickup

Please add link here

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced onboarding process with a new stepper and loading indicators in the QBD Direct integration.
    • Added support for dynamic confirmation dialogs based on application context.
  • Improvements

    • Improved error handling and user feedback mechanisms in the onboarding components.
    • Updated UI elements for better accessibility and user experience across various components.
    • Enhanced data presentation logic and control flow in the QBD Direct components.
  • Bug Fixes

    • Corrected naming inconsistencies in onboarding state enums to ensure accurate state mapping.
  • Refactor

    • Simplified data structures and component properties to enhance maintainability and clarity.

Copy link
Contributor

coderabbitai bot commented Nov 13, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

This 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 IN_CORRECT_PASSWORD to INCORRECT_PASSWORD, adjustments to type definitions, and the introduction of new input and output properties in various components to facilitate better event handling and data management.

Changes

File Path Change Summary
src/app/core/models/enum/enum.model.ts Enum value updated: IN_CORRECT_PASSWORDINCORRECT_PASSWORD in QbdDirectOnboardingState.
src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-connector.model.ts Type signature updated: SyncDataType from `{ [key: string]: number
src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-onboarding.model.ts Key updated in QbdOnboardingStepperMap and onboardingStateStepMap from IN_CORRECT_PASSWORD to INCORRECT_PASSWORD.
src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.spec.ts Removed a hyphen before the import statement for QbdDirectConnectorService.
src/app/core/services/qbd-direct/qbd-direct-configuration/qbd-direct-connector.service.ts Class QbdDirectConnectorService added with methods postQbdDirectConntion and syncAttribuites.
src/app/core/services/qbd-direct/qbd-direct-core/qbd-direct-connector.service.ts Class QbdDirectConnectorService removed.
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.html Complete overhaul of HTML structure, introducing a new layout with onboarding stepper and loading indicator.
src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts Class updated to implement OnInit, with new methods and properties for managing onboarding state.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.html Modifications to conditional rendering and data binding logic, enhancing loading state management.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-data-sync/qbd-direct-data-sync.component.ts Input property type updated to SyncDataType[], with new input properties isLoading and showSection.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.html Updates to conditional rendering logic and input field validation, improving user feedback mechanisms.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-download-file/qbd-direct-download-file.component.ts Added new output properties for enhanced event emission capabilities.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.html Modifications to conditional rendering and CSS classes for improved UI control flow.
src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-setup-connection/qbd-direct-setup-connection.component.ts New input property showSection added; updates to output properties for event handling.
src/app/integrations/qbd-direct/qbd-direct.component.ts Typo corrected in mapping of onboarding states: IN_CORRECT_PASSWORDINCORRECT_PASSWORD.
src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.html Conditional rendering added based on appName, with new content for QuickBooks Web Connector errors.
src/app/shared/components/configuration/configuration-confirmation-dialog/configuration-confirmation-dialog.component.ts New input properties added: appName, subLable, redirectLink, with updates to initialization logic.

Possibly related PRs

Suggested reviewers

  • ashwin1111

🐰 "In the meadow where changes bloom,
A typo fixed, dispelling gloom.
With connectors and states in line,
Our code now flows, oh so fine!
Let's hop along, with joy we sing,
For every fix, a brighter spring!" 🌼


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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 comments

Since 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. number

Add 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 handling

While 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 declarations

While 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 configurable

The 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 file

The 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 logic

The property name isCTAEnabled being used to disable the button seems counterintuitive. Consider renaming it to isCtaDisabled 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 duplication

The 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:

  1. Consider moving hard-coded strings like 'Connection failed' and 'Got it' to translation files for better i18n support
  2. 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.ts

Length of output: 4126

src/app/integrations/qbd-direct/qbd-direct.component.ts (1)

Line range hint 42-64: Consider refactoring the navigation logic

The 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:

  1. Required field validation
  2. 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 changes

The 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 using aria-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 rendering

The 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 accessibility

The YouTube iframe is missing important security and accessibility attributes:

  • title attribute for screen readers
  • loading="lazy" for performance
  • sandbox attribute for security
  • allow 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 state

Long 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 to app-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 name

There's a typo in the component name: chechbox-button should be checkbox-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" -l

Length of output: 419

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 7ba883e and 5ecf737.

⛔ 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:

  1. The template properly binds to these output events
  2. 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() for nextStep
    • triggerDownload($event) for downloadClick
    • retry() for retryClick
    • triggerManualDownload() for manualDownload
  • 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

Comment on lines +21 to +23
syncAttribuites(): Observable<SyncDataType[]> {
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/qbd/attribute_stats/`, {});
}
Copy link
Contributor

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.

  1. The method name has a typo: syncAttribuites should be syncAttributes
  2. Consider extracting the API endpoint path to a constant
  3. 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.

Suggested change
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}`);
}

Comment on lines +17 to +19
postQbdDirectConntion(payload: QbdConnectorPost): Observable<QbdConnectorGet> {
return this.apiService.post(`/workspaces/${this.workspaceService.getWorkspaceId()}/connector_settings/`, payload);
}
Copy link
Contributor

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.

  1. The method name has a typo: postQbdDirectConntion should be postQbdDirectConnection
  2. 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.

Suggested change
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);
}

Comment on lines +17 to +23
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/`, {});
}
Copy link
Contributor

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 to postQbdDirectConnection
  • Rename syncAttribuites to syncAttributes

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 (postQbdDirectConntionpostQbdDirectConnection and syncAttribuitessyncAttributes) 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

Comment on lines +25 to +29
@Input() appName: string;

@Input() subLable: string;

@Input() redirectLink: string;
Copy link
Contributor

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.

  1. The property name 'subLable' contains a typo
  2. 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.

Suggested change
@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';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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.

Suggested change
@Input({required: true}) password: string = '098765';
@Input({required: true}) password: string;

Comment on lines +98 to 101
<div *ngIf="!isStepCompleted && showSection && !isStepCompleted">
<app-configuration-step-footer [ctaText]="ConfigurationCtaText.NEXT" [isButtonDisabled]="!isCTAEnabled" (save)="onNextClick()"></app-configuration-step-footer>
</div>
</div>
Copy link
Contributor

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.

Suggested change
<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>

Comment on lines 45 to 49
<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>
Copy link
Contributor

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.

Suggested change
<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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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;
Copy link
Contributor

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.

Suggested change
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)

Comment on lines +88 to +89
this.isCompanyPathInvalid = filePathRegex.test(normalizedPath);
if (this.isCompanyPathInvalid) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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> {
Copy link
Contributor

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[]> {
Copy link
Contributor

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;
Copy link
Contributor

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;
Copy link
Contributor

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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isCompanyPathValid

}
}

handleDataSyncState(status: QbdDirectWorkspace) {
Copy link
Contributor

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 {
Copy link
Contributor

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]),
Copy link
Contributor

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)
Copy link
Contributor

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) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_: any

@ashwin1111 ashwin1111 changed the base branch from qbd-direct-pre-requisite-ts to qbd-direct-step-connector-UI November 13, 2024 08:01
@github-actions github-actions bot added the size/L Large PR label Nov 13, 2024
Copy link

PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive)

Copy link

PR description must contain a link to a ClickUp (case-insensitive)

@ashwin1111 ashwin1111 merged commit d4c7494 into qbd-direct-step-connector-UI Nov 13, 2024
2 of 4 checks passed
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
ashwin1111 added a commit that referenced this pull request Nov 13, 2024
* 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]>
Copy link

PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive)

Copy link

PR description must contain a link to a ClickUp (case-insensitive)

Copy link

PR title must start with "fix:", "feat:", "chore:", "refactor", or "test:" (case-insensitive)

Copy link

PR description must contain a link to a ClickUp (case-insensitive)

DhaaraniCIT added a commit that referenced this pull request Dec 3, 2024
* 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]>
@coderabbitai coderabbitai bot mentioned this pull request Dec 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size/L Large PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants