PromucFlow_constructor/app/client/src/utils/bootIntercom.ts

28 lines
812 B
TypeScript
Raw Normal View History

chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type { User } from "constants/userConstants";
chore: git sync cypress tests (#10006) * Fix connect test * check api response * [wip] test comments across branches (#8704) * Intercept only connect api * chore: update switch branches tests (#9005) * test switch branches from the query params * test flow wip * . * fix merge status update * change mergeAble to isMergeAble * wip * fix: show error popup if pulled from bottom bar * fix: append branch query to notification links * fix: disable git connection during onboarding * fix: typo * fix: typo * fix: typo * fix: z-index bottom bar cout * fix: pull button minor fix * fix: reset conflicts when the git sync modal is opened * fix * feat: enable search for branch dropdown * fix * fix: typo * added merge conflicting on merge tab * updated gitsyncsaga for git sync error action * added generate ssh key on init and updated git changed count message * removed git sync error action from error processing module(toast and log) * commented push button on bottom git action bar temperory * added option to use git global config * Added latest deploy preview time: didn't appear until the duration was in minutes * Link open repo button with repo link * fixed of commented code part * upated tooltip of push button on bottom quick git sync toolbar * Update banner styles for error and warning * updated repo publish url pattern and last deployed view part * when the user clicks on the push icon the deploy tab should open * when branch name is too big and user hover on it the tooltip is not displayed * The dropdown alignment displayed for the git connect should be polished * update tests * fix: minor git sync fixes (#9228) * fixed of Under the merge tab when the user searches for the branch name which is not present the pop up closes all of a sudden * fix: update merge api, use message from api response * fix: update field * added tooltip of long dropdown option and updated merge tab dropdowns * removed log * chore: add connection cypress tests * temp update for running tests locally * fixed long branch name on branch list popup * Use _ as the branch name separator, instead of - * Use large buttons as CTAs * Remove the % from the progress bar * Fix alignment for the skeletons on the deploy tab * Merge CTA moves down when the status is rendered, add offset to prevent that and error branch dropdown on merge tab * Show progress bar after clicking on Merge CTA as the loading state and generate key button * after generating the deploy key before clicking on connect close the pop-up and open it again the Remote URL is not visible in the input box * fixing of conflicting issue * updated git connection design * Provide more spacing between the lines * Learn more does not have a hover state * Heading Merge Changes should be sentence cased like headings on other tabs * Button can trigger CTA call when in loading state * disabled clickable icon on git connect bottom bar * Git connection tab: on error the window doesn't scroll all the way to the bottom * updated temp remote url values on action and reducer * updated ellipsis functions of text * fix: prune branch flag * fix: update page level roomId to include branch name * fix * fix * feat: add a separate feature flag for git import * feat: branch section headers bottom bar branch list * fixed branch list comments * fixed merge issue * fix * feat: hotkey for commit and push * remove pull button on git conflict info * move tempRemoteUrl redux to gitSyncreducer and added messages * splited git error as individual action * removed push button from git sync bottom buttons * feat: section header at the merge dropdown * added comment of converting ssh to https * feat: show connected to git badge * feat: show asterisk when we have uncommitted changes * fix: upate segment header for dropdown * t fix: remove redundant success toasts * removed tempory git repo url from app data * wrapped tooltip with elipsis text * fix: rm unused vars * fix: bottom bar icon updates * updated dropdown option with ellipsis text * added new props named "wrappedOption" on dropdown for wrapping ellipsis option * rename wrappedOption to truncateOption on dropdown component * updated dropdown option with disabled props of tooltip * fix: remove remote branches from merge branch dropdown * reset yarn lock * reset yarn * fix: keeping it same as the existing value * fix: remove branch dropdown border * fix: show merge success indicator * feat: init repo limit error modal * fix: disconnect git wip * added git user config test * removed test data * fix: checkout api * fix: lint * chore: pre connection test specs * added revoking git workflow * renamed revoke to disconnectGit * added setting on git sync action over bottom bar * added analytic on git connection * added learn more for remote url and init module of temp remote url when select new application * . * chore: test learn more ssh url * Verify the functionality of Read documantation link * added git connect with onboarding workflow * Validate the Input Box displayed below Commit to master Text * updated test module for deploy tab with commit comment and deploy preview * test of prune branch name * Validate the error faced when user switches between the branches * verify the functionality when user click on "+" Icon * Verify the functionality of serach input box inside the serach dropdown * Verify the display of the Merge Button * advanced of disconnect git ui * added git disconnect modal test case * updated repo limit error condition * added learn more link test on git disconnect modal * for review of repo limit error modal test script. * fix: issue with intercept * fixes * fixes * add key, misc fixes * fix * revert changes * fix * fix imports * Fix import * Yarn lock update * fix * fix imports * chore: remove timeout for a test run * Increase timeout for jgit APIs * chore: try increasing timeout * try increasing timeout further * Handle git connect error on the basis of error type * Add env variable to CI build script * Fix bad commit for adding env var in workflow * Refactor * FAdd env var for local repo path * fix import * fix specs * fix * fix * try * fix * fix * fix * fix * fix: don't validate error msgs * fix spec * improve spec * chore: rm unused code * chore: update descriptions * rm commented out code * fix * rm comment * chore: rm comments * fix: lint * chore: update comment * fix: wait for widget switch transition * spec updates * fix * fix imports * try waiting for getPagesForViewApp * fix: rm unused file * fix: remove spec * fix: add js collection, comment out repo limit exceeded error since it seems not limited on appsmith instances * Fix server failure * chore: correct bootIntercom import and sort lines Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: haojin111 <haojin828@outlook.com> Co-authored-by: Arpit Mohan <arpit@appsmith.com> Co-authored-by: Abhijeet <abhijeet@appsmith.com> Co-authored-by: Abhijeet <41686026+abhvsn@users.noreply.github.com> Co-authored-by: Anagh Hegde <anagh@appsmith.com> Co-authored-by: f0c1s <anubhav@appsmith.com>
2022-02-25 06:13:16 +00:00
import { getAppsmithConfigs } from "@appsmith/configs";
import { sha256 } from "js-sha256";
const { cloudHosting, intercomAppID } = getAppsmithConfigs();
export default function bootIntercom(user?: User) {
if (intercomAppID && window.Intercom) {
let { email, username } = user || {};
let name;
if (!cloudHosting) {
username = sha256(username || "");
// keep email undefined so that users are prompted to enter it when they reach out on intercom
email = undefined;
} else {
name = user?.name;
}
window.Intercom("boot", {
app_id: intercomAppID,
user_id: username,
email,
// keep name undefined instead of an empty string so that intercom auto assigns a name
name,
});
}
}