Skip to content

Conversation

@JustARatherRidiculouslyLongUsername
Copy link
Contributor

@JustARatherRidiculouslyLongUsername JustARatherRidiculouslyLongUsername commented Feb 20, 2025

Description

  • feat: add in-memory caching to the GET /integrations call
  • feat: fetch integrations and show options to navigate between connected integrations
  • refactor: centralize maps and a few helper functions to IntegrationsService
  • ui: highlight current integration and make the "Disconnect" option text-danger

Clickup

image

Summary by CodeRabbit

  • New Features

    • Improved integration management now enables dynamic navigation to integration pages.
    • The main menu dynamically populates integration options based on available integrations for a more responsive experience.
    • Added a new button in the main menu for disconnecting from a service, with conditional display based on user state.
    • Introduced configuration options for displaying a "more" dropdown in the main menu.
    • New properties added to enhance branding configurations, including options for displaying application logos and customizing icon usage.
  • Style

    • Enhanced dropdown styling provides clear visual cues for critical actions, such as disconnect, and highlights the active integration.
    • Updated styling for the info section, making it responsive to theme changes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 20, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This pull request refactors integration handling across the application. The primary service (IntegrationsService) now includes new mappings and methods for retrieving integration keys and URLs, along with navigation functionality via the injected router. The LandingV2 component has been updated to remove its own mapping logic, delegating these responsibilities to the service. Additionally, the MainMenu component now builds its dropdown options dynamically based on the integrations provided by the service and applies conditional styling for better visual feedback. The changes also introduce new properties and methods across various components and services to enhance their integration capabilities.

Changes

File(s) Change Summary
src/app/core/services/common/integrations.service.ts Added new imports, injected Router, defined readonly properties (tpaNameToIntegrationKeyMap, inAppIntegrationUrlMap), and implemented methods: getIntegrationKey, getIntegrationName, and navigateToIntegration. Also annotated getIntegrations with @Cacheable().
src/app/integrations/landing-v2/landing-v2.component.ts Removed local mapping properties and updated methods (openInAppIntegration, storeConnectedApps) to utilize new service methods for integration key retrieval and URL mapping.
src/app/shared/components/menu/main-menu/main-menu.component.html Added a button for disconnecting from a service and modified dropdown item rendering with conditional CSS classes.
src/app/shared/components/menu/main-menu/main-menu.component.ts Added new imports and methods (isCurrentIntegration, addDropdownOptions), updated dependency injection to include IntegrationsService, and modified ngOnInit to dynamically populate dropdown options from service integrations.
src/app/branding/c1-branding-config.ts Added new property showMoreDropdownInMainMenu initialized to false.
src/app/branding/fyle-branding-config.ts Added new property showMoreDropdownInMainMenu initialized to true.
src/app/core/models/branding/feature-configuration.model.ts Added new property showMoreDropdownInMainMenu of type boolean.

Possibly related PRs

  • feat: hide error section conditionally skip export v2 #1186: The changes in the main PR enhance the IntegrationsService with new properties and methods for managing integrations, which are related to modifications in the <app-dashboard-error-section> component, specifically adding new input properties that enhance its functionality.
  • feat: fixes for support of skip expense post import #1157: The changes in the main PR are related to modifications in the DashboardErrorSectionComponent and its handling of error visibility based on new input properties, which are utilized in the dashboard components.
  • feat: helper function for dynamic content #1158: The changes in the main PR are related to modifications in the HelperService that affect how branding and content transformations are handled in the application, aligning with updates in integration management.

Suggested labels

deploy

Suggested reviewers

  • ashwin1111
  • ruuushhh

Poem

Hop along through lines of code,
I’m a rabbit with a joyful node!
New maps and routes now pave the way,
Guiding integrations night and day.
With hops and binks, I celebrate the flow—
In our code garden, together we grow!

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ 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 generate docstrings to generate docstrings for this 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.

@github-actions github-actions bot added the size/M Medium PR label Feb 20, 2025
@github-actions
Copy link

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

1 similar comment
@github-actions
Copy link

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

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

🧹 Nitpick comments (3)
src/app/shared/components/menu/main-menu/main-menu.component.ts (2)

79-129: Consider refactoring addDropdownOptions for readability.
While the approach is clear, this large method could be split into smaller helpers to make it even more maintainable (e.g., extracting “Add more integrations” item creation to its own function).


132-136: Handle potential subscription cleanup or errors.
In ngOnInit, make sure the subscription is properly handled (e.g., unsubscribing in OnDestroy if relevant) and consider error-handling for the getIntegrations() call.

src/app/core/services/common/integrations.service.ts (1)

21-32: Map definition is clear but consider externalizing configuration.
Placing these static mappings in a config file or environment-based constants could reduce code duplication and improve maintainability as the integration list grows.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 45d94f0 and e4de664.

📒 Files selected for processing (4)
  • src/app/core/services/common/integrations.service.ts (1 hunks)
  • src/app/integrations/landing-v2/landing-v2.component.ts (2 hunks)
  • src/app/shared/components/menu/main-menu/main-menu.component.html (1 hunks)
  • src/app/shared/components/menu/main-menu/main-menu.component.ts (5 hunks)
🧰 Additional context used
🪛 ESLint
src/app/shared/components/menu/main-menu/main-menu.component.ts

[error] 52-52: Unexpected trailing comma.

(comma-dangle)

🪛 GitHub Check: lint
src/app/shared/components/menu/main-menu/main-menu.component.ts

[failure] 52-52:
Unexpected trailing comma

🪛 GitHub Actions: TypeScript Lint Check
src/app/shared/components/menu/main-menu/main-menu.component.ts

[error] 52-52: Unexpected trailing comma comma-dangle

🪛 Biome (1.9.4)
src/app/core/services/common/integrations.service.ts

[error] 48-48: Do not access Object.prototype method 'hasOwnProperty' from target object.

It's recommended using Object.hasOwn() instead of using Object.hasOwnProperty().
See MDN web docs for more details.

(lint/suspicious/noPrototypeBuiltins)

🔇 Additional comments (7)
src/app/shared/components/menu/main-menu/main-menu.component.ts (4)

6-7: New imports look good.
These additions are consistent with the new integration handling approach.


9-9: Dependency injection is appropriate.
Injecting IntegrationsService is a clear approach to centralizing integration logic.


42-42: Dynamic dropdown options property.
Switching from a static array to a dynamically populated property is an excellent improvement for scalability.


73-78: Validate the route matching logic for isCurrentIntegration.
Consider verifying that partial route matches won't cause false positives if there are similarly named routes or query parameters.

src/app/core/services/common/integrations.service.ts (1)

2-8: New imports are consistent with the service’s expanded functionality.
Thank you for keeping dependencies cohesive and relevant.

src/app/integrations/landing-v2/landing-v2.component.ts (2)

164-164: Navigation to integrations through service usage looks good.
Relying on this.integrationService.inAppIntegrationUrlMap ensures consistent routing across the application.


218-224: Verify behavior of null keys when storing connected apps.
You are ignoring unknown TPA names by filtering out null. Confirm that this silent discard is intended or if logging/warning would be beneficial.

Comment on lines +51 to +52
private router: Router,
private integrationsService: IntegrationsService,
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 the trailing comma to fix lint errors.
The trailing comma on line 52 triggers the lint rule “comma-dangle”. Below is the suggested fix:

-    private integrationsService: IntegrationsService,
+    private integrationsService: IntegrationsService
📝 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
private router: Router,
private integrationsService: IntegrationsService,
private router: Router,
private integrationsService: IntegrationsService
🧰 Tools
🪛 ESLint

[error] 52-52: Unexpected trailing comma.

(comma-dangle)

🪛 GitHub Check: lint

[failure] 52-52:
Unexpected trailing comma

🪛 GitHub Actions: TypeScript Lint Check

[error] 52-52: Unexpected trailing comma comma-dangle

Comment on lines +47 to +52
getIntegrationKey(tpaName: string): IntegrationAppKey | null {
if (this.tpaNameToIntegrationKeyMap.hasOwnProperty(tpaName)) {
return this.tpaNameToIntegrationKeyMap[tpaName as keyof typeof this.tpaNameToIntegrationKeyMap];
}
return null;
}
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

Use Object.hasOwn() instead of hasOwnProperty.
Accessing hasOwnProperty directly from objects is discouraged. Here's a suggested fix:

-    if (this.tpaNameToIntegrationKeyMap.hasOwnProperty(tpaName)) {
+    if (Object.hasOwn(this.tpaNameToIntegrationKeyMap, tpaName)) {
📝 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
getIntegrationKey(tpaName: string): IntegrationAppKey | null {
if (this.tpaNameToIntegrationKeyMap.hasOwnProperty(tpaName)) {
return this.tpaNameToIntegrationKeyMap[tpaName as keyof typeof this.tpaNameToIntegrationKeyMap];
}
return null;
}
getIntegrationKey(tpaName: string): IntegrationAppKey | null {
- if (this.tpaNameToIntegrationKeyMap.hasOwnProperty(tpaName)) {
+ if (Object.hasOwn(this.tpaNameToIntegrationKeyMap, tpaName)) {
return this.tpaNameToIntegrationKeyMap[tpaName as keyof typeof this.tpaNameToIntegrationKeyMap];
}
return null;
}
🧰 Tools
🪛 Biome (1.9.4)

[error] 48-48: Do not access Object.prototype method 'hasOwnProperty' from target object.

It's recommended using Object.hasOwn() instead of using Object.hasOwnProperty().
See MDN web docs for more details.

(lint/suspicious/noPrototypeBuiltins)

Comment on lines +40 to +45
<span [class]="{
'tw-text-text-danger': option.label === 'Disconnect',
'tw-text-mandatory-field-color': isCurrentIntegration(option.label),
}">
{{option.label}}
</span>
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

Use [ngClass] for Conditional Class Binding

The new changes correctly introduce conditional styling for dropdown items. However, instead of binding an object to the plain [class] attribute, consider using Angular’s [ngClass] directive. This is the standard approach for conditionally applying multiple classes and ensures better readability and maintainability.

For example, update the code as follows:

-                    <span [class]="{
-                        'tw-text-text-danger': option.label === 'Disconnect',
-                        'tw-text-mandatory-field-color': isCurrentIntegration(option.label),
-                    }">
-                        {{option.label}}
-                    </span>
+                    <span [ngClass]="{
+                        'tw-text-text-danger': option.label === 'Disconnect',
+                        'tw-text-mandatory-field-color': isCurrentIntegration(option.label)
+                    }">
+                        {{option.label}}
+                    </span>
📝 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
<span [class]="{
'tw-text-text-danger': option.label === 'Disconnect',
'tw-text-mandatory-field-color': isCurrentIntegration(option.label),
}">
{{option.label}}
</span>
<span [ngClass]="{
'tw-text-text-danger': option.label === 'Disconnect',
'tw-text-mandatory-field-color': isCurrentIntegration(option.label)
}">
{{option.label}}
</span>

}

navigateToIntegration(inAppIntegration: InAppIntegration) {
this.router.navigate([this.inAppIntegrationUrlMap[inAppIntegration]]);
Copy link
Contributor

Choose a reason for hiding this comment

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

for apps with different tpa I think we'll have to write few more logic - we can discuss over a call, little complex to type it here - can discuss in our afternoon call

* fix: hide dropdown changes for c1

* fix: add a feature flag for the 'More' dropdown
@github-actions
Copy link

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

1 similar comment
@github-actions
Copy link

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

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

♻️ Duplicate comments (1)
src/app/shared/components/menu/main-menu/main-menu.component.ts (1)

51-52: ⚠️ Potential issue

Remove the trailing comma to fix lint errors.

The trailing comma after integrationsService is causing linting errors in the CI pipeline.

-    private integrationsService: IntegrationsService,
+    private integrationsService: IntegrationsService
🧰 Tools
🪛 ESLint

[error] 52-52: Unexpected trailing comma.

(comma-dangle)

🪛 GitHub Check: lint

[failure] 52-52:
Unexpected trailing comma

🧹 Nitpick comments (3)
src/app/shared/components/menu/main-menu/main-menu.component.ts (3)

73-77: Consider making isCurrentIntegration method private.

This method appears to be used only internally within the component for highlighting the current integration. Since it's not called from the template or exposed to other components, it should be declared as private for better encapsulation.

-  isCurrentIntegration(integrationName: InAppIntegration) {
+  private isCurrentIntegration(integrationName: InAppIntegration) {

99-111: Apply conditional styling to highlight the current integration.

The code fetches and displays integrations but doesn't highlight which one is currently active. Consider using the isCurrentIntegration method to style the current integration in the dropdown.

      options[0].items.unshift({
        label: integrationName,
+       styleClass: this.isCurrentIntegration(integrationName) ? 'current-integration' : '',
        handler: () => {
          this.integrationsService.navigateToIntegration(integrationName);
        }
      });

Don't forget to add the corresponding CSS class in your component's stylesheet.


120-125: Apply text-danger class to the Disconnect option.

According to the PR objectives, the "Disconnect" option should be styled with a text-danger class for better visibility.

        {
          label: 'Disconnect',
+         styleClass: 'text-danger',
          handler: () => {
            this.disconnect();
          }
        }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4de664 and 434bc82.

📒 Files selected for processing (5)
  • src/app/branding/c1-branding-config.ts (1 hunks)
  • src/app/branding/fyle-branding-config.ts (1 hunks)
  • src/app/core/models/branding/feature-configuration.model.ts (1 hunks)
  • src/app/shared/components/menu/main-menu/main-menu.component.html (3 hunks)
  • src/app/shared/components/menu/main-menu/main-menu.component.ts (5 hunks)
🧰 Additional context used
🪛 ESLint
src/app/shared/components/menu/main-menu/main-menu.component.ts

[error] 52-52: Unexpected trailing comma.

(comma-dangle)

🪛 GitHub Check: lint
src/app/shared/components/menu/main-menu/main-menu.component.ts

[failure] 52-52:
Unexpected trailing comma

🪛 GitHub Actions: TypeScript Lint Check
src/app/shared/components/menu/main-menu/main-menu.component.ts

[error] 52-53: Lint error: Unexpected trailing comma (comma-dangle)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: unit-test
🔇 Additional comments (8)
src/app/branding/c1-branding-config.ts (1)

17-17: LGTM: Feature flag added for C1 branding configuration.

The showMoreDropdownInMainMenu property has been correctly added to the c1FeatureConfig object and set to false, which means C1-branded applications won't show the "More" dropdown in the main menu.

src/app/core/models/branding/feature-configuration.model.ts (1)

10-10: LGTM: Model updated to support new feature configuration.

The showMoreDropdownInMainMenu property has been properly added to the FeatureConfiguration type definition, enabling configurable behavior across different branding profiles.

src/app/branding/fyle-branding-config.ts (1)

17-17: LGTM: Feature flag added for Fyle branding configuration.

The showMoreDropdownInMainMenu property has been correctly added to the fyleFeatureConfig object and set to true, which means Fyle-branded applications will show the "More" dropdown in the main menu, consistent with the overall architecture.

src/app/shared/components/menu/main-menu/main-menu.component.html (3)

5-9: LGTM: Conditional disconnect button implemented.

The disconnect button is correctly implemented to appear only when isDisconnectRequired is true and the branding configuration doesn't show the "More" dropdown, providing an alternative access to the disconnect feature.


28-28: LGTM: Dropdown conditionally displayed based on branding configuration.

The dropdown menu is now properly controlled by the brandingFeatureConfig.showMoreDropdownInMainMenu flag, which aligns with the branding-specific configurations added in this PR.


47-52: Use [ngClass] for conditional styling.

The implementation correctly applies conditional styling, but using Angular's [ngClass] directive would be more idiomatic than binding to the plain [class] attribute.

-                    <span [class]="{
-                        'tw-text-text-danger': option.label === 'Disconnect',
-                        'tw-text-mandatory-field-color': isCurrentIntegration(option.label),
-                    }">
-                        {{option.label}}
-                    </span>
+                    <span [ngClass]="{
+                        'tw-text-text-danger': option.label === 'Disconnect',
+                        'tw-text-mandatory-field-color': isCurrentIntegration(option.label)
+                    }">
+                        {{option.label}}
+                    </span>
src/app/shared/components/menu/main-menu/main-menu.component.ts (2)

79-130: Well-structured implementation of dynamic dropdown options.

The addDropdownOptions method effectively constructs the dropdown menu with proper navigation capabilities. The code is well-commented, particularly explaining the backwards iteration logic.


132-138: Consider handling dropdown options for non-Fyle brand IDs.

The dropdown options are only initialized for the 'fyle' brand ID. If other brand IDs need dropdown options, this implementation may be limiting.

Is there a specific reason why dropdown options are only initialized for the 'fyle' brand? If other brands need similar functionality, consider adding a fallback or alternative initialization strategy.

Comment on lines +132 to +138
ngOnInit(): void {
if (brandingConfig.brandId === 'fyle') {
this.integrationsService.getIntegrations().subscribe(integrations => {
this.addDropdownOptions(integrations);
});
}
}
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

Potential memory leak due to unmanaged subscription.

The subscription to getIntegrations() is not being stored or unsubscribed from when the component is destroyed, which could lead to memory leaks.

Consider implementing OnDestroy and unsubscribing:

-export class MainMenuComponent implements OnInit {
+export class MainMenuComponent implements OnInit, OnDestroy {
+  private subscription: Subscription;

   ngOnInit(): void {
     if (brandingConfig.brandId === 'fyle') {
-      this.integrationsService.getIntegrations().subscribe(integrations => {
+      this.subscription = this.integrationsService.getIntegrations().subscribe(integrations => {
         this.addDropdownOptions(integrations);
       });
     }
   }
+
+  ngOnDestroy(): void {
+    if (this.subscription) {
+      this.subscription.unsubscribe();
+    }
+  }

Don't forget to import OnDestroy and Subscription:

import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, viewChild } from '@angular/core';
import { Subscription } from 'rxjs';

* fix: login before navigating to an app from the dropdown (wip)

* fix: directly navigate to apps that have been logged in to

* fix: set the correct base api before connecting to travelperk

* fix: listen for postEvents globally

* fix: hide duplicate options in dropdown (#1196)

* fix: use latest `workspaceId` from localstorage everywhere (#1197)

* feat: branding based conditions to feature flag (#1179)

* feat: branding based conditions to feature flag

* fix: casing bug in field initialization making the field display 'null' (#1187)

* feat: hide error section conditionally skip export v2 (#1186)

* fix: branding condition for import settings page (#1188)

* fix: vulnerability fixes (#1189)

* fix:esbult vulnerbility fix

* remove storybook workflow

* fix:browserTarget to buildTraget conversion (#1190)

* fix: payload for fetching account types in qbd direct export settings (#1191)

* fix: payload for fetching account types in qbd direct export settings (wip)

* refactor: remove console.log

* fix: update account types based on the field we are searching options for

* refactor: remove console.log, repeated code

* fix: Article links (#1195)

* fix: Article links

* fix test

* fix test

* fix test

* test

* asd

* asd

* few more

* asd

* fix

* fix

* few more links

* fix: use latest `workspaceId` from localstorage everywhere

* refactor: lint

* test: disable flaky tests

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>
@github-actions github-actions bot added the size/XL Extra Large PR label Mar 5, 2025
@github-actions
Copy link

github-actions bot commented Mar 5, 2025

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

@github-actions github-actions bot removed the size/M Medium PR label Mar 5, 2025
@JustARatherRidiculouslyLongUsername JustARatherRidiculouslyLongUsername merged commit 7f7171b into add-main-menu-dropdown Mar 5, 2025
3 of 4 checks passed
@github-actions
Copy link

github-actions bot commented Mar 5, 2025

Unit Test Coverage % values
Statements 32.89% ( 4171 / 12681 )
Branches 26.39% ( 1180 / 4470 )
Functions 25.4% ( 890 / 3503 )
Lines 33.08% ( 4106 / 12410 )

@github-actions
Copy link

github-actions bot commented Mar 5, 2025

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

JustARatherRidiculouslyLongUsername added a commit that referenced this pull request Mar 5, 2025
…ection (#1183)

* feat: add a dropdown menu to the main menu for navigation and disconnection

* feat: navigate between previously connected integrations (#1184)

* feat: navigate between previously connected integrations

* fix: hide dropdown changes for c1 (#1185)

* fix: hide dropdown changes for c1

* fix: add a feature flag for the 'More' dropdown

* fix: login before navigating to an app from the dropdown (wip) (#1193)

* fix: login before navigating to an app from the dropdown (wip)

* fix: directly navigate to apps that have been logged in to

* fix: set the correct base api before connecting to travelperk

* fix: listen for postEvents globally

* fix: hide duplicate options in dropdown (#1196)

* fix: use latest `workspaceId` from localstorage everywhere (#1197)

* feat: branding based conditions to feature flag (#1179)

* feat: branding based conditions to feature flag

* fix: casing bug in field initialization making the field display 'null' (#1187)

* feat: hide error section conditionally skip export v2 (#1186)

* fix: branding condition for import settings page (#1188)

* fix: vulnerability fixes (#1189)

* fix:esbult vulnerbility fix

* remove storybook workflow

* fix:browserTarget to buildTraget conversion (#1190)

* fix: payload for fetching account types in qbd direct export settings (#1191)

* fix: payload for fetching account types in qbd direct export settings (wip)

* refactor: remove console.log

* fix: update account types based on the field we are searching options for

* refactor: remove console.log, repeated code

* fix: Article links (#1195)

* fix: Article links

* fix test

* fix test

* fix test

* test

* asd

* asd

* few more

* asd

* fix

* fix

* few more links

* fix: use latest `workspaceId` from localstorage everywhere

* refactor: lint

* test: disable flaky tests

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>
JustARatherRidiculouslyLongUsername added a commit that referenced this pull request Mar 8, 2025
…ection (#1183)

* feat: add a dropdown menu to the main menu for navigation and disconnection

* feat: navigate between previously connected integrations (#1184)

* feat: navigate between previously connected integrations

* fix: hide dropdown changes for c1 (#1185)

* fix: hide dropdown changes for c1

* fix: add a feature flag for the 'More' dropdown

* fix: login before navigating to an app from the dropdown (wip) (#1193)

* fix: login before navigating to an app from the dropdown (wip)

* fix: directly navigate to apps that have been logged in to

* fix: set the correct base api before connecting to travelperk

* fix: listen for postEvents globally

* fix: hide duplicate options in dropdown (#1196)

* fix: use latest `workspaceId` from localstorage everywhere (#1197)

* feat: branding based conditions to feature flag (#1179)

* feat: branding based conditions to feature flag

* fix: casing bug in field initialization making the field display 'null' (#1187)

* feat: hide error section conditionally skip export v2 (#1186)

* fix: branding condition for import settings page (#1188)

* fix: vulnerability fixes (#1189)

* fix:esbult vulnerbility fix

* remove storybook workflow

* fix:browserTarget to buildTraget conversion (#1190)

* fix: payload for fetching account types in qbd direct export settings (#1191)

* fix: payload for fetching account types in qbd direct export settings (wip)

* refactor: remove console.log

* fix: update account types based on the field we are searching options for

* refactor: remove console.log, repeated code

* fix: Article links (#1195)

* fix: Article links

* fix test

* fix test

* fix test

* test

* asd

* asd

* few more

* asd

* fix

* fix

* few more links

* fix: use latest `workspaceId` from localstorage everywhere

* refactor: lint

* test: disable flaky tests

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>

---------

Co-authored-by: Dhaarani <[email protected]>
Co-authored-by: Anish Kr Singh <[email protected]>
Co-authored-by: Ashwin Thanaraj <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Extra Large PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants