Commit Graph

1238 Commits

Author SHA1 Message Date
Rishabh Rathod
d6372d0b81
feat: JSObject variable as a state (JSObject variable mutation) (#19926)
Fixes #19653 
Fixes #14568 
Fixes #17199
Fixes #14989

In this PR, we introduce a new feature in JSObject where the `variables`
are now state and widgets are reactive to the change in the variable
value.
- It means that `JSObject.myVar1 = "Hello world"` would show `Hello
world` where ever a binding `{{JSObject.myVar1}}` is used.

Further changes
- JSObject run functionality, executes all the functions in async
evaluation.
    - `executeSyncJS` flow is removed 
-  `resolvedFunctions` state is moved to JSCollection class.
- unEval JSObject value i.e., currentJSCollectionState is moved to
JSCollection class.
- `evalTreeWithChanges` is introduced - A new flow to trigger evaluation
from the worker and send the updated dataTree to mainThread.
- This would open up a new possibility of features in evaluation
mentioned
[here](https://www.notion.so/appsmith/RFC-Dependent-Property-in-Widgets-f3b29ad652b549dd8c49189f48dbbc4b)
- Introduction of `updateDataTreeHandler` to accept new dataTree from
the worker.
## Type of change

- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?

### Jest Test
- `Mutation.test.ts` 
- `JSVariableProxy.test.ts`
-  `removeProxy.test.ts`

### Cypress test
- Mutation with 
   - numbers
   - array
   - object
   - map
   - set

### Test Plan
- https://github.com/appsmithorg/TestSmith/issues/2186

### Issues raised during DP testing

- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1453275688
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1478975487
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1482929425
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1486611858

Co-authored-by: Rimil Dey <rimildeyjsr@gmail.com>
Co-authored-by: Rimil Dey <rimil@appsmith.com>
Co-authored-by: arunvjn <32433245+arunvjn@users.noreply.github.com>
2023-04-07 13:11:36 +05:30
sneha122
67f7571f1e
fix: specific sheets to whole drive issue fixed (#21968)
This PR fixes the issue:
- Spreadsheet dropdown does not show all sheets, when google sheet
datasource is edited from specific sheets to all sheets.
- If files are picked in the file picker, no error message is shown on
datasource review page, but if files are not picked, error message is
shown on review page.

Fixes #21916
2023-04-07 07:31:27 +05:30
Ravi Kumar Prasad
6ac99037b0
feat: Action selector (#21582)
## Description
Replaces the old boring action selector dropdown with a much more
sophisticated UI that is capable of going above and beyond. Users with
an aversion to code can now build their more complex workflows with a
click of a few buttons.

Consider this code snippet 
```javascript
Api1.run(() => {
  showAlert("Hello");
  navigateTo('Page1', {}, 'SAME_WINDOW');
}, () => {
  removeValue("test");
});
```
|**Old action selector** |**New action selector**|
|:-:|:-:|
|<img width="250" alt="Screenshot 2023-03-29 at 16 54 14"
src="https://user-images.githubusercontent.com/32433245/228520661-a639b580-8986-4aec-a0f5-e2786d1a0f56.png">|
<img width="250" alt="Screenshot 2023-03-29 at 16 55 15"
src="https://user-images.githubusercontent.com/32433245/228521043-5025aa42-af95-4574-b586-bc4c721240bc.png">|

**Click on an action block to edit its parameters.**
<img width="500" alt="Screenshot 2023-03-29 at 17 01 18"
src="https://user-images.githubusercontent.com/32433245/228522479-493769d0-9d2c-4b67-b493-a79e3bb9c947.png">

**Switch to JS mode to get the raw code**
<img width="273" alt="Screenshot 2023-03-29 at 17 05 51"
src="https://user-images.githubusercontent.com/32433245/228523458-13bc0302-4c94-4176-b5aa-3ec208122f57.png">

### Code changes
**New UI components**
  - ActionCreator component splits the code into block statements.
  - Each block statement is represented by ActionTree.tsx UI component.
  - ActionTree.tsx represents an action and its chains.
- ActionCard.tsx is the block that represents the individual action on
the UI.
- ActionSelector.tsx component is popover that contains the form for
editing individual action.
- TabView, TextView, SelectorView, ActionSelectorView and KeyValueView
are components that represent configurable fields in ActionSelector
form.
  
**AST methods**
  - Added methods to get/set function names, expressions, arguments.
- Added methods to get/set then/catch blocks to allow chaining of
actions.
  - Added methods to check if code is convertible to UI.

Fixes #10160
Fixes #21588 
Fixes #21392
Fixes #21393
Fixes #7903
Fixes #15895
Fixes #17765
Fixes #14562

Depends on https://github.com/appsmithorg/design-system/pull/306

## Type of change
- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?
- Manual
- Jest
- Cypress

### Test Plan
https://github.com/appsmithorg/TestSmith/issues/2296

### 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
- [x] 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
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


### QA activity:
- [x] Test plan has been approved by relevant developers
- [x] Test plan has been peer reviewed by QA
- [x] Cypress test cases have been added and approved by either SDET or
manual QA
- [x] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [x] Added Test Plan Approved label after reveiwing all Cypress test

---------

Co-authored-by: Rimil Dey <rimil@appsmith.com>
Co-authored-by: arunvjn <arun@appsmith.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
2023-04-06 22:19:12 +05:30
Hetu Nandu
8dd33068ab Remove server error cases 2023-04-05 14:09:00 +05:30
sneha122
c8cd459f39
feat: Added file id mapping in datasource config (#21699)
## Description

This PR adds:
- File Id mapping of the google sheets selected by user, in datasource
configuration, so that when creating queries on top of such gsheet
datasource, only the selected spreadsheets can be seen in the
spreadsheet dropdown.

Changes done on client side:
- As soon as user selects file in file picker popup, the callback will
get the file ids and update the datasource to contain file ids as a part
of datasource configuration properties.
- If user cancels the file selection, file ids is sent as empty array
and datasource is updated.

Changes done on server side:
- In `GoogleSheetPlugin.java` where we have defined execute and trigger
methods for gsheet query, here I have added a new variable
allowedFileIds, which gets the list of authorised file ids from
datasource configuration object and the same list is passed to functions
like `transformTriggerResponse` and `transformExecutionResponse`, which
returns file list data based on the allowedFileIds. In FileListMethod
class, these methods contain the logic to send only authorised file
data.
- Since these two methods are a part of triggerMethod and
executionMethod interfaces, all gsheet query operation classes that
extend this method, their function definition needed to be updated with
this third allowedFileIds parameter.
- Similarly all gsheet query operations test classes were using these
two methods, and hence this third parameter needed to be added there as
well.

How to test:
- With this improvement, when we select `file1` and `file2` for one
datasource and `file3` and `file4` for another datasource, In the query
dropdown for first ds, we should only see `file1` and `file2`, for
second datasource, we should only see `file3` and `file4`.
- Please check following gsheet operations:
    - Fetch Many
    - Fetch Details
    - Update One
    - Update Many
    - Insert Many

> Add a TL;DR when description is extra long (helps content team)

Fixes #21074


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.

- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual
- JUnit

### 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
- [x] 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
- [x] 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
- [x] 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: “sneha122” <“sneha@appsmith.com”>
2023-04-04 13:43:49 +05:30
Hetu Nandu
0094aab735
fix: [Git] Avoid 404 when checking out a branch (#21894)
## Description

After checkout, we will now check if the resource the user was accessing
is available in the incoming branch. Instead of calling the apis to
check this, we will listen to the success action and then handle check
if the current resource is still available in the branch. If not, we
will navigate the user to the home page of the app so that they do not
see a 404 error


> Don't show a 404 error when a resource is not available in the checked
out branch, instead take them to the home page of the app

Fixes #17234
Fixes #20883


Media



## Type of change

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?

- Manual
   - Have a git connected app
   - Create a new branch 
   - Create a new API/Query/Page on the new branch
   - Switch back to the original branch
- Test: The app should not show 404 error but be navigated to the home
page of the app

- Cypress
Updated the existing cypress tests that avoided the error to make sure
they test the fix instead

### 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
- [ ] 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
- [ ] 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
2023-04-04 10:29:00 +05:30
Favour Ohanekwu
b80b0ca3fa
feat: show lint errors in async functions bound to sync fields (#21187)
## Description

This PR improves the error resolution journey for users. Lint warnings
are added to async JS functions which are bound to data fields (sync
fields).

- JSObjects are "linted" by individual properties (as opposed to being
"linted" as a whole)
- Only edited jsobject properties get "linted", improving jsObject
linting by ~35%.(This largely depends on the size of the JSObject)
<img width="500" alt="Screenshot 2023-04-03 at 11 17 45"
src="https://user-images.githubusercontent.com/46670083/229482424-233f3950-ffec-46f5-8c42-680dff6a412f.png">
<img width="500" alt="Screenshot 2023-03-14 at 11 26 00"
src="https://user-images.githubusercontent.com/46670083/224975572-b2d8d404-aac6-43fb-be14-20edf7c56117.png">
<img width="500" alt="Screenshot 2023-03-14 at 11 41 11"
src="https://user-images.githubusercontent.com/46670083/224975952-c40848b1-69d8-489d-9b62-24127ea1a2f1.png">

Fixes #20289
Fixes #20008


## Type of change

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?

- CYPRESS
- JEST

### 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
- [ ] 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
- [ ] 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
- [x] Test plan has been peer reviewed by QA
- [x] 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
2023-04-03 16:11:15 +05:30
Hetu Nandu
1b92f97d61
chore: Move error from saga to action creator (#21944)
## Description

Improve error reporting for missing page id

Fixes # (issue)
> if no issue exists, please create an issue and ask the maintainers
about this first


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- Chore (housekeeping or task changes that don't impact user perception)
- This change requires a documentation update


## How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Provide
instructions, so we can reproduce.
> Please also list any relevant details for your test configuration.
> Delete anything that is not important

- Manual
- Jest
- Cypress

### 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
- [ ] 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
- [ ] 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
2023-04-03 15:11:30 +05:30
Ayangade Adeoluwa
977eda6388
fix: handle 413 errors on the client (#21565)
This PR introduces client side error handling. Certain errors cannot be
handled by the server for example, 413 errors (Content Too Large), this
is because they get rejected by NGINX before it reaches the server code.
Hence why they have to be handled on the client side.


Fixes #20641

## Type of change

- Bug fix (non-breaking change which fixes an issue)

- Manual


## 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
- [ ] 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: ChandanBalajiBP <104058110+ChandanBalajiBP@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2023-04-03 09:56:18 +05:30
Hetu Nandu
c234474b89 Capture sentry error if update page api is called without an id 2023-03-30 16:59:52 +05:30
Hetu Nandu
7786c4215a Use generic error page by default 2023-03-30 16:50:26 +05:30
Ankita Kinger
47c09cef92
chore: Code splitting FE files to support app level invites on Business edition (#21783)
## Description

> Code splitting FE files to support app level invites on Business
edition.

Fixes [#21018](https://github.com/appsmithorg/appsmith/issues/21018)
[#21015](https://github.com/appsmithorg/appsmith/issues/21015)

## Type of change

- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?
> Nothing is affected on CE by this change.

- Manual

## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] 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
2023-03-29 17:07:06 +00:00
Druthi Polisetty
93ab966e92
fix: ENTITY_BINDING_SUCCESS event added which is fired whenever there is a successful binding created by the user. (#21227)
## Description
Adding another event called ENTITY_BINDING_SUCCESS which is fired
whenever there is a successful binding created by the user. The
BINDING_SUCCESS event was firing more events than actual binding and
therefore we created a new event to capture the right data.

Fixes #20468 

## Type of change
- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?
- Manual


### Test Plan
> Add Testsmith test cases links that relate to this PR

### Issues raised during DP testing
When table widget 'data table' is cleared, ENTITY_BINDING_SUCCESS event
is triggered
https://www.loom.com/share/280ab5165b684d59948ae1bc9fe0c074

Templates automatically triggers entitybindingsuccess
https://www.loom.com/share/16be5ae834b44d7bacc73a6d89a99fbd


## Checklist:
### Dev activity
- [ ] 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
- [ ] 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
2023-03-24 15:45:11 +05:30
Dhruvik Neharia
099859134d
feat: Improved App Navigation (#19312)
## TL;DR
A new revamped experience for navigation for Appsmith users.

## Description 
Introduces new navigation styles with better default navigation - Top
(Stacked), a variant for Top (Inline), and a collapsible Sidebar.
Configure your app's navigation by navigating to the navigation settings
tab inside the app settings pane and observe how your app with the
selected navigation settings will look side by side as you change them.

This PR pushes the v1 for EPIC #17766.

Fixes #19157
Fixes #19158
Fixes #19174
Fixes #19173
Fixes #19160
Fixes #20712
Fixes #19161
Fixes #20554
Fixes #20938
Fixes #21129

## Media
<video
src="https://user-images.githubusercontent.com/22471214/227187245-84e4e3fa-18e4-4690-8237-cfce29f432e5.mp4"></video>

## Type of change
- New feature (non-breaking change which adds functionality)
- This change requires a documentation update

## How Has This Been Tested?
- Manual
- Cypress

### Test Plan

https://www.notion.so/appsmith/Test-Plan-a7883ae4980d470690de5c62a41dd168

### Issues raised during DP testing

https://docs.google.com/spreadsheets/d/1Kocq8h1H3EXlbqDgiNruzBr9MeNPyY26zct8IWYEY40/edit#gid=0

## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] 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: Pawan Kumar <pawan@appsmith.com>
2023-03-23 17:11:58 +05:30
Hetu Nandu
c28bea180c
fix: Selected Widget Visibility (#21317)
## Description

### Part 3 of selected widget refactor

As part of context switching and selected widget refactor, we saw that
widgets that are inside modals or tabs and are hidden cannot be switched
to without updating some meta properties. The meta properties are
actually owned by the end user and the developer user would create some
default values for it as well. This becomes a problem soon when the
platform also tries to update it. So as part of this refactor, we will
use the selected widget ancestry (the chain of widgets from the top to
the currently selected widget) to handle if widgets need to be visible
or not. It will also indicate the widgets in the path of selection to
"make way" for the selected widget to be seen.

Media


https://user-images.githubusercontent.com/12022471/224916943-b10e8694-0c95-4157-bb93-288d7c0bf60a.mov

- This works on any number of levels of hirarchy
- The logic is supposed to handled by each widget that can potentially
hide other widgets inside it
- Improves some platform perf as the handing so widget meta is not done
by the platform anymore

Affected widgets:
- Modal Widget
- Tabs Widget

> tl;dr: Update the platform's way to show widgets that can be hidden.
Makes sure a selected widget is always shown.

Fixes #1282
Resolves #18173


## Type of change

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?

- Manual
- Cypress

### Test Plan
> Test case link:-
[#2202](https://github.com/appsmithorg/TestSmith/issues/2202)

### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity:-
https://github.com/appsmithorg/appsmith/issues/1282#issuecomment-1472204952


## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] 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
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


### QA activity:
- [x] Test plan has been approved by relevant developers
- [x] 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
2023-03-23 11:13:07 +05:30
Ayangade Adeoluwa
5f59ed8bdb
feat: Add plugin info to analytics (#21414)
This PR adds plugin information to the SAVE_DATA_SOURCE and
SAVE_DATA_SOURCE_CLICK events, so they can be observed.

- Chore (housekeeping or task changes that don't impact user perception)
2023-03-21 13:46:46 +05:30
sneha122
86cbda5a8b
fix: fetch gsheet project id from cs added (#21361)
## Description

File picker implementation for Limiting Gsheet Access requires google
sheet project id. The changes in this PR gets the gsheet project id from
cloud-services and returns it back to client. Client then uses this
project id to open file picker and select required files.

Fixes https://github.com/appsmithorg/appsmith/issues/21298,
https://github.com/appsmithorg/appsmith/issues/21362


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?
- Manual

### 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
- [x] I have performed a self-review of my own code
- [x] 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
- [x] 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: “sneha122” <“sneha@appsmith.com”>
2023-03-21 12:53:05 +05:30
Apeksha Bhosale
2b25e1e9b0
fix: Improving performance of JS evaluations by splitting the data tree (#21547)
## Description
This is the second phase of the split data tree. In the previous version, we collected all config paths in each entity and put them in the `__config__` property. All those config properties do get inserted into final data tree which we don't need at all. 
As part of this change, we will be creating another tree i.e **'configTree'**  which will contain all config of each entity. 

unEvalTree is split into 2 trees => 
1. unEvalTree 
2.  configTree

Example: 
previous unEvalTree Api1 content 
<img width="1766" alt="image" src="https://user-images.githubusercontent.com/7846888/215990868-0b095421-e7b8-44bc-89aa-065b35e237d6.png">


After this change
unEvalTree Api1 content
<img width="1758" alt="image" src="https://user-images.githubusercontent.com/7846888/215991045-506fb10a-645a-4aad-8e77-0f3786a86977.png">
Note- above example doesn't have '__config__' property

configTree Api1 content 
<img width="1760" alt="image" src="https://user-images.githubusercontent.com/7846888/215991169-a2e03443-5d6a-4ff1-97c5-a12593e46395.png">


## Type of change
- Chore (housekeeping or task changes that don't impact user perception)
- #11351


## How Has This Been Tested?
- Manual
- Jest
- Cypress

### 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
- [ ] 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
- [ ] 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: Aishwarya UR <aishwarya@appsmith.com>
2023-03-20 16:34:02 +05:30
Anagh Hegde
3b1b73e7bb
chore: refactor discard flow for git (#21477) 2023-03-17 10:21:00 +05:30
Ivan Akulov
424d2f6965
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
7cbb12af88,
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 17:11:47 +05:30
ChandanBalajiBP
4d484c4962
chore: Add multiple toast for DS testing (#21304)
## Description

> Add toast messages for each invalid in case of testing a data source
configuration.

Fixes #21287 

## Type of change

- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?

- Manual
- Cypress - not adding because we will be removing toast messages in
error handling upcoming phases.

### 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
- [x] 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
- [x] 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
2023-03-15 12:45:01 +05:30
ChandanBalajiBP
f2e1df7e2d
chore: Add telemetry for error handling phase1 (#21011)
## Description

> Telemetry for error handling phase 1 

- [x] Error log opened - **OPEN_DEBUGGER**
- [x] Error log entry expanded - **DEBUGGER_LOG_ITEM_EXPAND**
- [x] Entity link clicked - **DEBUGGER_ENTITY_NAVIGATION**
- [x] Help clicked - **DEBUGGER_HELP_CLICK**
- [x] Documentation clicked - **OPEN_OMNIBAR**
- [x] Error log entry resolved - **DEBUGGER_RESOLVED_ERROR_MESSAGE**


Fixes #20623

## Type of change

> Please delete options that are not relevant.

- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?

- Manual

## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
2023-03-14 19:17:06 +05:30
sneha122
0f838535c3
feat: file picker added and access token generation (#20778)
## Description

This PR includes following changes:

- In case of limiting google sheet access project, when user selects specific sheets as an option, they should be shown file picker UI once the authorisation is complete, In this file picker UI, users can select the google sheet files that they want to use with appsmith application and allow access to only those files.
- This PR contains the changes for file picker UI and updating datasource auth state based on the files selected by user.


TL;DR
Steps to test this PR:

- Create Google Sheet datasource
- In the datasource config form, select specific sheets as an option from the scope dropdown.
- Click on save and authorise
- This will take you to google oauth process

<img width="467" alt="Screenshot 2023-02-20 at 1 24 24 PM" src="https://user-images.githubusercontent.com/30018882/220045493-57b0ca6c-3f08-4963-af55-d603cf79bc43.png">

- Select the google account
- This will take you to google oauth2 consent screen

<img width="451" alt="Screenshot 2023-02-20 at 1 24 55 PM" src="https://user-images.githubusercontent.com/30018882/220045641-9f70dd29-6664-489a-b77b-df65445491df.png">

- Click on allow for all requested permissions
- This will take you back to appsmith's datasource config page in view mode and load the file picker UI
<img width="425" alt="Screenshot 2023-02-20 at 1 25 47 PM" src="https://user-images.githubusercontent.com/30018882/220045828-8b3e3e46-4ddc-4e30-b2f8-f12865395817.png">
- Select the files that you want to share with appsmith app
- Click on select
- You should see the new query button in enabled state, as datasource authorisation is complete

<img width="800" alt="Screenshot 2023-02-20 at 1 27 28 PM" src="https://user-images.githubusercontent.com/30018882/220046131-6ce99a85-cddc-4529-ae45-f9833aefd71b.png">

- In case you select cancel on google oauth2 consent screen, you should error message on datasource config page with new query button being disabled

<img width="810" alt="Screenshot 2023-02-20 at 1 28 49 PM" src="https://user-images.githubusercontent.com/30018882/220046385-6b8d636c-b517-44c3-a596-b52bc0084b94.png">

- In case you do give all the permissions but do not select any files in google file picker, then also you should see error message on datasource config page with new query button disabled.

Fixes #20163, #20290, #20160, #20162


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.

- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual

### 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
- [x] I have performed a self-review of my own code
- [x] 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
- [x] 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: “sneha122” <“sneha@appsmith.com”>
2023-03-08 10:55:17 +05:30
Preet Sidhu
75cf47b8c5
feat: Auto layout appsmith editor and mobile responsiveness (#21151)
## Description

Core features of Auto Layout and mobile responsiveness, hidden under a feature flag.

> Add a TL;DR when description is extra long (helps content team)



Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.


- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?
> Manual regression and sanity tests for all fixed canvas functionality.

- Manual
- Jest
- Cypress



## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] 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
- [x] New and existing unit tests pass locally with my changes
- [x] PR is being merged under a feature flag


---------

Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: Arsalan <arsalanyaldram0211@outlook.com>
Co-authored-by: Aswath K <aswath.sana@gmail.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2023-03-04 12:55:54 +05:30
Hetu Nandu
e2c2996bc2
fix: Optimise Modal open performance (#21103)
## Description

#20202 had caused a performance regression in widget selection
specifically around opening and closing modals. It was noticed that
focusing on widget caused the increased rendering time.
Focusing involved:
- scrolling a widget into view
- flashing the widget

These two functions are not really needed when a modal is selected since
the modal already comes top and centre. Removing these two functions for
widgets solved the rendering performance issue.

Numbers:

| Test Case | Before Widget Selection | With Widget Selection | Current
PR |

|--------------------------|-------------------------|-----------------------|------------|
| Misc Open Complex Modal | 2035.65 | 2267.84 | 2101.03 |
| Misc Open Simple Modal | 1191.92 | 1156.78 | 1082.88 |
| Open Modal | 558.62 | 813.64 | 576.45 |
| Misc Close Complex Modal | 294.21 | 431.76 | 278.43 |
| Misc Close Simple Modal | 953.42 | 963.77 | 938.77 |
| Close Modal | 384.86 | 673 | 674.61 |


> Reverse performance regression introduced in #20202

Fixes #20901

## Type of change

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?

- Performance Tests

### 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
- [ ] 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
- [ ] 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
2023-03-03 13:43:17 +05:30
akash-codemonk
7816897891
fix: onboarding widget selection (#21050) 2023-03-01 09:48:58 +05:30
Druthi Polisetty
6ea0afe15c
fix: JSObjects | Sync methods | Not run consistently when Page is cloned (#20841)
## Description
fix: JSObjects | Sync methods | Not run consistently when Page is cloned

We used to not wait for all the calls to fetch the entities to run
evaluations however we changed this with some performance improvements.
This seems to have been missed for when we clone a page.

Fixes #20814 

## Type of change
- Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?
- Manual
- Cypress

### 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
- [ ] 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
- [ ] 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: Aishwarya UR <aishwarya@appsmith.com>
2023-02-28 23:58:20 +05:30
Ankita Kinger
1f5d64adba
fix: Adding anonymous user and page not found check to avoid showing error before redirection to login page (#20855)
## Description

> Adding anonymous user and page not found check to avoid showing error
before redirection to login page

Fixes [#20714](https://github.com/appsmithorg/appsmith/issues/20714)

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?
> Tested this out locally in both the scenarios: user logged in but has
no access to app, and user not logged in. Error is seen in first case as
expected and no error is seen in second case after which the page is
redirected to login screen.

- Manual

## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] 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
2023-02-27 20:12:37 +05:30
Favour Ohanekwu
e235776103
chore: Add application Id to INSTALL_LIBRARY event (#20946)
## Description

This PR tracks the current application id as part of the INSTALL_LIBRARY
event


Fixes #20821 

## Type of change

- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?
Nil

### 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
- [ ] 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
- [ ] 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
2023-02-27 17:10:51 +05:30
Ayangade Adeoluwa
6a096464fa
fix: Auto-generated header Refactor (#19873)
API content type refactor flow. More information can be found
[here](https://www.notion.so/appsmith/API-Content-type-Header-Refactor-07f2f944e13f43148210c2461cf3fcda?d=339958cf1d374fefadfa437f86d95627)

Fixes #18473

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)


### 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
- [ ] 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
- [ ] 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: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: PiyushPushkar02 <118709669+PiyushPushkar02@users.noreply.github.com>
Co-authored-by: Sumit Kumar <sumit@appsmith.com>
Co-authored-by: Aishwarya-U-R <91450662+Aishwarya-U-R@users.noreply.github.com>
2023-02-24 12:18:48 +00:00
sneha122
7c8daef738
feat: gsheet form config changes (#20395)
## Description
As a part of Limiting Google Sheets access project, we are modifying the
UI of datasource configuration form for google sheets datasource as per
[figma
link](https://www.figma.com/file/TcFhqEbAc8ymHTRF5wR1qv/Limited-GSheet-Access?node-id=7%3A8&t=FN3j084OyCErlu67-0)
This PR contains the code changes required for this new flow. Please
check https://github.com/appsmithorg/appsmith/issues/20159 for more
information.
This improvement was suggested in form config for feature flag, I have
created https://github.com/appsmithorg/appsmith/issues/20925 to track
it, will be fixing it.

Steps to test:

1. Create new google sheet datasource, you should see first option in
the dropdown as `Read/Write | Selected Sheets` selected by default.
2. In this case if we click on save and authorise, it should take us to
google accounts page, where we can select the account.
3. Once account is selected, we should land on permissions page, where
we can check the new permission of `See, edit, create, and delete only
the specific Google Drive files you use with this app`, click on allow.
4. This will take us back to datasource config page in appsmith.
5. Other two options in dropdown are for providing Read/Write or Read
only access to all files in google drive. For Read Only option we should
see permissions as before, where as for read/write option we should see
two permissions: `See, edit, create, and delete all of your Google Drive
files` and `https://www.googleapis.com/auth/spreadsheets`.
7. Since this feature is hidden behind feature flag, we would also need
to test the flow for normal user and ensure that current implementation
is working as is without any issues


Fixes #20158 , #20159 
> if no issue exists, please create an issue and ask the maintainers
about this first


## Type of change

- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual
- Cypress

### 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
- [x] I have performed a self-review of my own code
- [x] 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
- [x] 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
- [x] 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: “sneha122” <“sneha@appsmith.com”>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2023-02-24 15:42:28 +05:30
Hetu Nandu
721767d742
feat: URL Navigation for Widgets (#20202)
## Description

Widget selection is driven by URL changes. This would fix browser
navigation for users as they can use browser back/forward buttons to
travel across older contexts on Appsmith.

> Fixing browser URL navigation for widgets

Fixes #19571


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.

- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual
- Jest
- Cypress

### Test Plan
> Add Testsmith [test
cases](https://github.com/appsmithorg/TestSmith/issues/2171) links that
relate to this PR

### Issues raised during DP testing
- [X] When a selected widget is below viewport and user refreshes the
page, then the widget property pane is open but the page does not
navigate to the selected widget
https://loom.com/share/09f1eda2f02d474981a0d48e4a6419ec

- [ ] Drop 2 widgets one at a time > Delete both the widgets > Now click
on back button of the browser > Observe the url it shows the widget id
in the URL but the canvas remains empty
https://loom.com/share/53cae28a5d224e67b783c8ccf53745f5
Dev Response: This issue is valid but not a major inconvenience. We will
try to track it and see if it needed to be addressed. Many other web
tools do not handle such cases


- [X] Canvas scrolls down when all widgets are selected.
https://loom.com/share/c8a68dadcdb040779abd3a73bde2b06c

- [X] Widget is not getting highlighted when added from the API editor
page. Please refer to the attached
video:-https://jiju8jbmwa.vmaker.com/record/IkwiAqFgafK9dVmu



## Checklist:
### Dev activity
- [ ] 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
- [ ] 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
- [x] 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: Aishwarya UR <aishwarya@appsmith.com>
2023-02-21 19:08:16 +05:30
Druthi Polisetty
bf3502166b
fix: Error log on a widget property not clearing out when the widget property is deleted (#20486)
## Description
fix: Error log on a widget property not clearing out when the widget
property is deleted

Fixes #12894 

## Type of change
- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?
- Cypress

### 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
- [ ] 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
- [ ] 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
2023-02-21 09:57:56 +05:30
Tolulope Adetula
d2af098746
fix: Limit List widget nesting to a maximum of 3 levels (#20506)
## Description

Limit the amount of nesting in the List widget to 3 levels.

The List widget could be nested in 2 ways.
1. Drag and Drop from Explorer
2. Copy and Paste.
3. Drag and Drop from Canvas

To cater to all these cases, I created 3 more blueprint operations that
serve as a life cycle for the widget.
1. BEFORE_ADD
2. BEFORE_PASTE
3. BEFORE_DROP

This would enable validation of the level/nesting before the DSL is
updated

Fixes #20585

## Type of change
- New feature (non-breaking change which adds functionality)
- This change requires a documentation update


## How Has This Been Tested?
- Cypress

### Test Plan
> [Nested List Widget Test
Plan](https://github.com/appsmithorg/TestSmith/issues/2187)

## Checklist:
### Dev activity
- [ ] 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
- [ ] 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: Ashit Rath <ashit@appsmith.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
2023-02-21 09:43:25 +05:30
Druthi Polisetty
4851e9754a
fix: User gets an error even when table widget is added from the API … (#20593)
## Description
fix: User gets an error even when table widget is added from the API
page successfully

Fixes #14037 

## Type of change
- Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?
- Manual

### 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
- [ ] 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
- [ ] 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
- [x] 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
- [x] Added Test Plan Approved label after reveiwing all Cypress test
2023-02-20 17:33:54 +05:30
Anand Srinivasan
93f0a6bff0
chore: add cloud hosting variable global scope (#20743)
## Description
Passed in `cloudHosting` env variable to worker for certain actions.
This will be used to filter `PlatformFunctions` and
`ActionTriggerFunctionNames` in EE.
So we can have EE exclusive platform functions and the necessary linting
for those.

eval worker actions:
- SETUP (uses and assigns variable to global worker scope)
- evalTree, evalTrigger uses the variable from global scope

lint worker action(s):
- LINT_TREE (uses variable directly)

Fixes https://github.com/appsmithorg/appsmith-ee/issues/1024


## Type of change
- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?
- Jest
- Cypress


## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
2023-02-20 17:26:40 +05:30
Anagh Hegde
002b77656e
chore: Undo the git actions queue changes (#20749)
Changes made in the PR -
https://github.com/appsmithorg/appsmith/pull/20258 were reverted by file
lock PR to test a few scenarios but forgot to undo them and got merged
to release.
So this PR adds the changes done by the original PR
2023-02-20 13:19:35 +05:30
ChandanBalajiBP
b72dea33f3
feat: Error handling phase 1 (#20629)
## Description
This PR updates the error logs 
- Establishing a consistent format for all error messages.
- Revising error titles and details for improved understanding.
- Compiling internal documentation of all error categories,
subcategories, and error descriptions.

Updated Error Interface:
https://www.notion.so/appsmith/Error-Interface-for-Plugin-Execution-Error-7b3f5323ba4c40bfad281ae717ccf79b

PRD:
https://www.notion.so/appsmith/PRD-Error-Handling-Framework-4ac9747057fd4105a9d52cb8b42f4452?pvs=4#008e9c79ff3c484abf0250a5416cf052

>TL;DR 

Fixes # 


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video


## Type of change

- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual
- Jest
- Cypress

### Test Plan


### Issues raised during DP testing


## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] 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: subrata <subrata@appsmith.com>
2023-02-18 18:25:46 +05:30
ashit-rath
a47dba5e26
feat: List V2 (#15839)
## Description

TL;DR
This is a complete architectural change of of List widget works to
support all widgets we currently have and should automatically support
any future widgets.
It also introduces nested List widgets i.e a list widget can have a
another list widget which in turn can have another list widget.

Fixes #18206
Fixes #6775
Fixes #13211
Fixes #16582
Fixes #11739
Fixes #15094
Fixes #6840
Fixes #10841
Fixes #17386
Fixes #18340
Fixes #16898
Fixes #17555
Fixes #6858
Fixes #9568
Fixes #17480
Fixes #18523
Fixes #18206  
Fixes #16586
Fixes #18106
Fixes #16576
Fixes #14697
Fixes #9607
Fixes #19648 
Fixes #19739
Fixes #19652 
Fixes #18730 
Fixes #19503 
Fixes #19498
Fixes #19437
Fixes #5245 
Fixes #19150
Fixes #18638
Fixes #11332
Fixes #17901
Fixes #19043
Fixes #17777
Fixes #8237
Fixes #15487
Fixes #15988
Fixes #18621
Fixes #16788
Fixes #18110
Fixes #18382
Fixes #17427
Fixes #18105
Fixes #18287
Fixes #19808
Fixes #14655

## Type of change

- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?
- Cypress
- Jest
- Manual

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] 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
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes

---------

Co-authored-by: Tolulope Adetula <31691737+Tooluloope@users.noreply.github.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
2023-02-14 17:07:31 +01:00
Anagh Hegde
34822d563a
fix: Add file system locks after the git operation (#12174)
## Description

> Add file locking using redis with retry. Helpful when multiple users
are trying to perform git actions in the Appsmith UI.

Fixes #10856 
Fixes #14366

## Type of change


- Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?

- Test A
- Test B

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] 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

---------

Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Sidhant Goel <sidhant@appsmith.com>
Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
Co-authored-by: System Administrator <root@Parthvis-MacBook-Pro.local>
2023-02-14 20:58:25 +05:30
Abhinav Jha
55cf16ae9d
feat: Non auto height invisible widgets (#20118)
## Description
This PR adds another feature update we had planned for Auto Height
- [ ] For new applications, in View and Preview mode, any widget which
is invisible will let go of its space and collapse if it's either on the
main Canvas or a container-like widget which has Auto-height enabled.
- [ ] Widgets within a container-like Widget, say Tabs, that doesn't
have Auto-height enabled, will now let go of their space if they're
invisible.
- [ ] The experience in Edit mode has not changed.

TL;DR: In new applications, in the Preview and Published _AKA_ View
modes, if a widget is invisible and within an Auto-height-enabled
container like a Tab, a Modal, a Form, or the main Canvas, it will fully
collapse, allowing widgets below it to move up and take its space. This
changes the behavior today prior to the release of this PR for
Auto-height-enabled widgets.

Fixes #19983
Fixes #18681
2023-02-14 19:06:19 +05:30
Ankita Kinger
68bb28792b
chore: Adding a soft trigger for login with SSO in embedded apps as a BE feature only (#20587)
Fixes [#19527](https://github.com/appsmithorg/appsmith/issues/19527)
2023-02-14 07:04:53 +05:30
arunvjn
091dcab60d
chore: Add missing imports errors for ee repo sync (#20575) 2023-02-12 05:15:34 +01:00
arunvjn
1d9d5bb197
fix: access outer scope variables inside callbacks (#20168)
## Description
Any platform function that accepts a callback were unable to access the
variables declared in its parent scopes. This was a implementation miss
when we originally designed platform functions and again when we turned
almost every platform function into a Promise. This PR fixes this
limitation along with some other edge cases.

- Access outer scope variables inside the callback of run, postMessage,
setInterval, getGeoLocation and watchGeolocation functions.
- Fixes certain edge cases where functions with callbacks when called
inside the then block doesn't get executed. Eg `showAlert.then(() => /*
Doesn't execute */ Api1.run(() => {}))`
- Changes the implementation of all the platform function in appsmith to
maintain the execution metadata (info on from where a function was
invoked, event associated with it etc)

#### Refactor changes
- Added a new folder **_fns_** that would now hold all the platform
functions.
- Introduced a new ExecutionMetadata singleton class that is now
responsible for hold all the meta data related to the current
evaluation.
- Remove TRIGGER_COLLECTOR array where all callback based platform
functions were batched and introduced an Event Emitter based
implementation to handle batched fn calls.
- All callback based functions now emits event when invoked. These
events have handlers attached to the TriggerEmitter object. These
handler does the job of batching these invocations and telling the main
thread. It also ensures that platform fn calls that gets triggered out
the the context of a request/response cycle work.

#### Architecture
<img width="751" alt="Screenshot 2023-02-07 at 10 04 26"
src="https://user-images.githubusercontent.com/32433245/217259200-5eac71bc-f0d3-4d3c-9b69-2a8dc81351bc.png">

Fixes #13156
Fixes #20225 

## Type of change
- Bug fix (non-breaking change which fixes an issue)
- Refactor

## How Has This Been Tested?
- Jest
- Cypress
- Manual


### Test Plan
  - [ ] https://github.com/appsmithorg/TestSmith/issues/2181
  - [ ] https://github.com/appsmithorg/TestSmith/issues/2182
- [ ] Post message -
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/post-msg-app/page1-635fcfba2987b442a739b938/edit
- [ ] Apps:
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/earworm-1/home-630c9d85b4658d0f257c4987/edit
- [ ]
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/automation-test-cases/page-1-630c6b90d4ecd573f6bb01e9/edit#0hmn8m90ei

### 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
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] 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 reviewing all Cypress test
2023-02-12 00:03:20 +05:30
Ayangade Adeoluwa
3b4aff7ab9
fix: Fix annoying error with text input control (#20411) 2023-02-10 17:41:17 +07:00
Druthi Polisetty
923e34fbde
fix: Objects that start with an underscore _JSObject1 fail to be navigated from the debugger (#20020)
## Description
fix: Objects that start with an underscore `_JSObject1` fail to be
navigated from the debugger

Fixes #19115

Media
<img width="616" alt="image"
src="https://user-images.githubusercontent.com/20187542/214258877-797fc095-e523-486e-8674-b9a06f3cc8f8.png">



## Type of change
- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?
- Cypress

### Test Plan


### Issues raised during DP testing



## Checklist:
### Dev activity
- [ ] 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
- [ ] 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: Aishwarya UR <aishwarya@appsmith.com>
2023-02-06 13:08:09 +05:30
akash-codemonk
4db9f6d13f
chore: Revert "feat: move the widget creation CTA off the Entity explorer (#… (#20335)
…19844)"

This reverts commit 280000834c.


## Description
https://theappsmith.slack.com/archives/C02JT9CSE6L/p1675380583041469
2023-02-03 14:47:01 +06:00
Abhinav Jha
20de52000d
feat: Auto height instant update (#19082)
## Description
This PR adds one of the promised updates to the auto height feature. 
More specifically, we wanted to add was the ability to see the
containers change height as we drag and drop widgets within them instead
of after dropping (when auto height is enabled)
This PR does that.


Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2023-02-03 11:17:40 +05:30
Hetu Nandu
fb72dd72ed
feat: Git actions queue (#20258)
## Description

We will queue all requests to the git api to match the implementation on
the server. This way we do not have parallel git related requests to the
server which could cause weird ui behaviour.

> Queue git related actions from client to improve stability

Fixes #20218


Media


https://user-images.githubusercontent.com/12022471/215749012-9b76cbd0-bcdd-4a3d-8f71-5253af8374f5.mov


## Type of change
- New feature (non-breaking change which adds functionality)


## How Has This Been Tested?

- Manual

### 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
- [ ] 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
- [ ] 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
2023-02-01 17:25:50 +05:30
akash-codemonk
280000834c
feat: move the widget creation CTA off the Entity explorer (#19844) 2023-02-01 17:03:15 +05:30