PromucFlow_constructor/app/client/src/pages/workspace/General.tsx
dependabot[bot] 037d2fabb0
chore(deps): bump axios from 0.27.2 to 1.6.0 in /app/client (#28776)
Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/releases">axios's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.6.0</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>CSRF:</strong> fixed CSRF vulnerability CVE-2023-45857 (<a
href="https://redirect.github.com/axios/axios/issues/6028">#6028</a>)
(<a
href="96ee232bd3">96ee232</a>)</li>
<li><strong>dns:</strong> fixed lookup function decorator to work
properly in node v20; (<a
href="https://redirect.github.com/axios/axios/issues/6011">#6011</a>)
(<a
href="5aaff532a6">5aaff53</a>)</li>
<li><strong>types:</strong> fix AxiosHeaders types; (<a
href="https://redirect.github.com/axios/axios/issues/5931">#5931</a>)
(<a
href="a1c8ad008b">a1c8ad0</a>)</li>
</ul>
<h3>PRs</h3>
<ul>
<li>CVE 2023 45857 ( <a
href="https://api.github.com/repos/axios/axios/pulls/6028">#6028</a>
)</li>
</ul>
<pre><code>
⚠️ Critical vulnerability fix. See
https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
</code></pre>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+449/-114
([#6032](https://github.com/axios/axios/issues/6032)
[#6021](https://github.com/axios/axios/issues/6021)
[#6011](https://github.com/axios/axios/issues/6011)
[#5932](https://github.com/axios/axios/issues/5932)
[#5931](https://github.com/axios/axios/issues/5931) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/valentin-panov" title="+4/-4
([#6028](https://github.com/axios/axios/issues/6028) )">Valentin
Panov</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/therealrinku"
title="+1/-1 ([#5889](https://github.com/axios/axios/issues/5889)
)">Rinku Chaudhari</a></li>
</ul>
<h2>Release v1.5.1</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>adapters:</strong> improved adapters loading logic to have
clear error messages; (<a
href="https://redirect.github.com/axios/axios/issues/5919">#5919</a>)
(<a
href="e4107797a7">e410779</a>)</li>
<li><strong>formdata:</strong> fixed automatic addition of the
<code>Content-Type</code> header for FormData in non-browser
environments; (<a
href="https://redirect.github.com/axios/axios/issues/5917">#5917</a>)
(<a
href="bc9af51b18">bc9af51</a>)</li>
<li><strong>headers:</strong> allow <code>content-encoding</code> header
to handle case-insensitive values (<a
href="https://redirect.github.com/axios/axios/issues/5890">#5890</a>)
(<a
href="https://redirect.github.com/axios/axios/issues/5892">#5892</a>)
(<a
href="4c89f25196">4c89f25</a>)</li>
<li><strong>types:</strong> removed duplicated code (<a
href="9e6205630e">9e62056</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+89/-18
([#5919](https://github.com/axios/axios/issues/5919)
[#5917](https://github.com/axios/axios/issues/5917) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/DavidJDallas"
title="+11/-5 ()">David Dallas</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/fb-sean"
title="+2/-8 ()">Sean Sattler</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/0o001"
title="+4/-4 ()">Mustafa Ateş Uzun</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/sfc-gh-pmotacki" title="+2/-1
([#5892](https://github.com/axios/axios/issues/5892) )">Przemyslaw
Motacki</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/Cadienvan"
title="+1/-1 ()">Michael Di Prisco</a></li>
</ul>
<h2>Release v1.5.0</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>adapter:</strong> make adapter loading error more clear by
using platform-specific adapters explicitly (<a
href="https://redirect.github.com/axios/axios/issues/5837">#5837</a>)
(<a
href="9a414bb6c8">9a414bb</a>)</li>
<li><strong>dns:</strong> fixed <code>cacheable-lookup</code>
integration; (<a
href="https://redirect.github.com/axios/axios/issues/5836">#5836</a>)
(<a
href="b3e327dcc9">b3e327d</a>)</li>
<li><strong>headers:</strong> added support for setting header names
that overlap with class methods; (<a
href="https://redirect.github.com/axios/axios/issues/5831">#5831</a>)
(<a
href="d8b4ca0ea5">d8b4ca0</a>)</li>
<li><strong>headers:</strong> fixed common Content-Type header merging;
(<a
href="https://redirect.github.com/axios/axios/issues/5832">#5832</a>)
(<a
href="8fda2766b1">8fda276</a>)</li>
</ul>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/axios/axios/compare/v1.5.1...v1.6.0">1.6.0</a>
(2023-10-26)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>CSRF:</strong> fixed CSRF vulnerability CVE-2023-45857 (<a
href="https://redirect.github.com/axios/axios/issues/6028">#6028</a>)
(<a
href="96ee232bd3">96ee232</a>)</li>
<li><strong>dns:</strong> fixed lookup function decorator to work
properly in node v20; (<a
href="https://redirect.github.com/axios/axios/issues/6011">#6011</a>)
(<a
href="5aaff532a6">5aaff53</a>)</li>
<li><strong>types:</strong> fix AxiosHeaders types; (<a
href="https://redirect.github.com/axios/axios/issues/5931">#5931</a>)
(<a
href="a1c8ad008b">a1c8ad0</a>)</li>
</ul>
<h3>PRs</h3>
<ul>
<li>CVE 2023 45857 ( <a
href="https://api.github.com/repos/axios/axios/pulls/6028">#6028</a>
)</li>
</ul>
<pre><code>
⚠️ Critical vulnerability fix. See
https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
</code></pre>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+449/-114
([#6032](https://github.com/axios/axios/issues/6032)
[#6021](https://github.com/axios/axios/issues/6021)
[#6011](https://github.com/axios/axios/issues/6011)
[#5932](https://github.com/axios/axios/issues/5932)
[#5931](https://github.com/axios/axios/issues/5931) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/valentin-panov" title="+4/-4
([#6028](https://github.com/axios/axios/issues/6028) )">Valentin
Panov</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/therealrinku"
title="+1/-1 ([#5889](https://github.com/axios/axios/issues/5889)
)">Rinku Chaudhari</a></li>
</ul>
<h2><a
href="https://github.com/axios/axios/compare/v1.5.0...v1.5.1">1.5.1</a>
(2023-09-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>adapters:</strong> improved adapters loading logic to have
clear error messages; (<a
href="https://redirect.github.com/axios/axios/issues/5919">#5919</a>)
(<a
href="e4107797a7">e410779</a>)</li>
<li><strong>formdata:</strong> fixed automatic addition of the
<code>Content-Type</code> header for FormData in non-browser
environments; (<a
href="https://redirect.github.com/axios/axios/issues/5917">#5917</a>)
(<a
href="bc9af51b18">bc9af51</a>)</li>
<li><strong>headers:</strong> allow <code>content-encoding</code> header
to handle case-insensitive values (<a
href="https://redirect.github.com/axios/axios/issues/5890">#5890</a>)
(<a
href="https://redirect.github.com/axios/axios/issues/5892">#5892</a>)
(<a
href="4c89f25196">4c89f25</a>)</li>
<li><strong>types:</strong> removed duplicated code (<a
href="9e6205630e">9e62056</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+89/-18
([#5919](https://github.com/axios/axios/issues/5919)
[#5917](https://github.com/axios/axios/issues/5917) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/DavidJDallas"
title="+11/-5 ()">David Dallas</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/fb-sean"
title="+2/-8 ()">Sean Sattler</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/0o001"
title="+4/-4 ()">Mustafa Ateş Uzun</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/sfc-gh-pmotacki" title="+2/-1
([#5892](https://github.com/axios/axios/issues/5892) )">Przemyslaw
Motacki</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/Cadienvan"
title="+1/-1 ()">Michael Di Prisco</a></li>
</ul>
<h3>PRs</h3>
<ul>
<li>CVE 2023 45857 ( <a
href="https://api.github.com/repos/axios/axios/pulls/6028">#6028</a>
)</li>
</ul>
<pre><code>
⚠️ Critical vulnerability fix. See
https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
</code></pre>
<h1><a
href="https://github.com/axios/axios/compare/v1.4.0...v1.5.0">1.5.0</a>
(2023-08-26)</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f7adacdbaa"><code>f7adacd</code></a>
chore(release): v1.6.0 (<a
href="https://redirect.github.com/axios/axios/issues/6031">#6031</a>)</li>
<li><a
href="9917e67cbb"><code>9917e67</code></a>
chore(ci): fix release-it arg; (<a
href="https://redirect.github.com/axios/axios/issues/6032">#6032</a>)</li>
<li><a
href="96ee232bd3"><code>96ee232</code></a>
fix(CSRF): fixed CSRF vulnerability CVE-2023-45857 (<a
href="https://redirect.github.com/axios/axios/issues/6028">#6028</a>)</li>
<li><a
href="7d45ab2e2a"><code>7d45ab2</code></a>
chore(tests): fixed tests to pass in node v19 and v20 with
<code>keep-alive</code> enabl...</li>
<li><a
href="5aaff532a6"><code>5aaff53</code></a>
fix(dns): fixed lookup function decorator to work properly in node v20;
(<a
href="https://redirect.github.com/axios/axios/issues/6011">#6011</a>)</li>
<li><a
href="a48a63ad82"><code>a48a63a</code></a>
chore(docs): added AxiosHeaders docs; (<a
href="https://redirect.github.com/axios/axios/issues/5932">#5932</a>)</li>
<li><a
href="a1c8ad008b"><code>a1c8ad0</code></a>
fix(types): fix AxiosHeaders types; (<a
href="https://redirect.github.com/axios/axios/issues/5931">#5931</a>)</li>
<li><a
href="2ac731d605"><code>2ac731d</code></a>
chore(docs): update readme.md (<a
href="https://redirect.github.com/axios/axios/issues/5889">#5889</a>)</li>
<li><a
href="88fb52b5fa"><code>88fb52b</code></a>
chore(release): v1.5.1 (<a
href="https://redirect.github.com/axios/axios/issues/5920">#5920</a>)</li>
<li><a
href="e4107797a7"><code>e410779</code></a>
fix(adapters): improved adapters loading logic to have clear error
messages; ...</li>
<li>Additional commits viewable in <a
href="https://github.com/axios/axios/compare/v0.27.2...v1.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=axios&package-manager=npm_and_yarn&previous-version=0.27.2&new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: Hetu Nandu <hetu@appsmith.com>
2023-11-23 18:12:28 +05:30

270 lines
7.3 KiB
TypeScript

import React from "react";
import {
deleteWorkspaceLogo,
saveWorkspace,
uploadWorkspaceLogo,
} from "@appsmith/actions/workspaceActions";
import type { SaveWorkspaceRequest } from "@appsmith/api/WorkspaceApi";
import { debounce } from "lodash";
import { Input } from "design-system";
import { useSelector, useDispatch } from "react-redux";
import {
getCurrentError,
getCurrentWorkspace,
getWorkspaceLoadingStates,
} from "@appsmith/selectors/workspaceSelectors";
import { useParams } from "react-router-dom";
import styled from "styled-components";
import type { SetProgress, UploadCallback } from "design-system-old";
import { FilePickerV2, FileType, Text, TextType } from "design-system-old";
import { Classes } from "@blueprintjs/core";
import { getIsFetchingApplications } from "@appsmith/selectors/applicationSelectors";
import { useMediaQuery } from "react-responsive";
import type { AxiosProgressEvent } from "axios";
// This wrapper ensures that the scroll behaviour is consistent with the other tabs
const ScrollWrapper = styled.div`
overflow: auto;
height: 100%;
width: 100%;
`;
// trigger tests
const GeneralWrapper = styled.div<{
isMobile?: boolean;
isPortrait?: boolean;
}>`
width: 320px;
/* padding: 20px 0px; */
/* margin: 0 auto; */
.upload-form-container {
.button-wrapper {
svg {
width: 40px;
height: 40px;
path {
fill: var(--ads-v2-color-fg);
}
}
}
}
.drag-drop-text {
color: var(--ads-v2-color-fg);
+ form a {
--button-padding: var(--ads-v2-spaces-3) var(--ads-v2-spaces-4);
background-color: var(--ads-v2-color-bg);
border: 1px solid var(--ads-v2-color-border);
width: 100%;
height: 100%;
padding: var(--button-padding);
border-radius: var(--ads-v2-border-radius);
text-transform: capitalize;
&:hover {
background-color: var(--ads-v2-color-bg-subtle);
color: var(--ads-v2-color-fg);
border-color: var(--ads-v2-color-border);
}
}
}
.remove-button {
a {
border-radius: var(--ads-v2-border-radius);
text-transform: capitalize !important;
}
}
`;
const InputLabelWrapper = styled.div`
display: flex;
align-items: center;
margin-bottom: 4px;
span {
color: var(--ads-v2-color-fg);
}
`;
const SettingWrapper = styled.div`
width: 100%;
display: flex;
margin-bottom: 15px;
`;
const Loader = styled.div`
height: 38px;
width: 320px;
border-radius: var(--ads-v2-border-radius);
`;
const FilePickerLoader = styled.div`
height: 190px;
width: 333px;
border-radius: var(--ads-v2-border-radius);
`;
// testing
export const Row = styled.div`
width: 100%;
`;
export function GeneralSettings() {
const { workspaceId } = useParams<{ workspaceId: string }>();
const dispatch = useDispatch();
const currentWorkspace = useSelector(getCurrentWorkspace).filter(
(el) => el.id === workspaceId,
)[0];
function saveChanges(settings: SaveWorkspaceRequest) {
dispatch(saveWorkspace(settings));
}
const timeout = 1000;
const onWorkspaceNameChange = debounce((newName: string) => {
saveChanges({
id: workspaceId as string,
name: newName,
});
}, timeout);
const onWebsiteChange = debounce((newWebsite: string) => {
saveChanges({
id: workspaceId as string,
website: newWebsite,
});
}, timeout);
const onEmailChange = debounce((newEmail: string) => {
saveChanges({
id: workspaceId as string,
email: newEmail,
});
}, timeout);
const { isFetchingWorkspace } = useSelector(getWorkspaceLoadingStates);
const logoUploadError = useSelector(getCurrentError);
const FileUploader = (
file: File,
setProgress: SetProgress,
onUpload: UploadCallback,
) => {
const progress = (progressEvent: AxiosProgressEvent) => {
if (progressEvent.total) {
const uploadPercentage = Math.round(
(progressEvent.loaded / progressEvent.total) * 100,
);
if (uploadPercentage === 100) {
onUpload(currentWorkspace.logoUrl || "");
}
setProgress(uploadPercentage);
}
};
dispatch(
uploadWorkspaceLogo({
id: workspaceId as string,
logo: file,
progress: progress,
}),
);
};
const DeleteLogo = () => {
dispatch(deleteWorkspaceLogo(workspaceId));
};
const isFetchingApplications = useSelector(getIsFetchingApplications);
const isMobile: boolean = useMediaQuery({ maxWidth: 767 });
const isPortrait: boolean = useMediaQuery({
query: "(orientation: portrait)",
});
return (
<ScrollWrapper>
<GeneralWrapper isMobile={isMobile} isPortrait={isPortrait}>
<SettingWrapper>
<Row>
{isFetchingApplications && <Loader className={Classes.SKELETON} />}
{!isFetchingApplications && (
<Input
data-testid="t--workspace-name-input"
defaultValue={currentWorkspace && currentWorkspace.name}
isRequired
label="Workspace name"
labelPosition="top"
onChange={onWorkspaceNameChange}
placeholder="Workspace name"
renderAs="input"
size="md"
type="text"
/>
)}
</Row>
</SettingWrapper>
<SettingWrapper>
<Row className="t--workspace-settings-filepicker">
<InputLabelWrapper>
<Text type={TextType.P1}>Upload logo</Text>
</InputLabelWrapper>
{isFetchingWorkspace && (
<FilePickerLoader className={Classes.SKELETON} />
)}
{!isFetchingWorkspace && (
<FilePickerV2
fileType={FileType.IMAGE}
fileUploader={FileUploader}
logoUploadError={logoUploadError.message}
onFileRemoved={DeleteLogo}
url={currentWorkspace && currentWorkspace.logoUrl}
/>
)}
</Row>
</SettingWrapper>
<SettingWrapper>
<Row>
{isFetchingApplications && <Loader className={Classes.SKELETON} />}
{!isFetchingApplications && (
<Input
data-testid="t--workspace-website-input"
defaultValue={
(currentWorkspace && currentWorkspace.website) || ""
}
label="Website"
labelPosition="top"
onChange={onWebsiteChange}
placeholder="Your website"
renderAs="input"
size="md"
type="text"
/>
)}
</Row>
</SettingWrapper>
<SettingWrapper>
<Row>
{isFetchingApplications && <Loader className={Classes.SKELETON} />}
{!isFetchingApplications && (
<Input
data-testid="t--workspace-email-input"
defaultValue={
(currentWorkspace && currentWorkspace.email) || ""
}
label="Email"
labelPosition="top"
onChange={onEmailChange}
placeholder="Email"
renderAs="input"
size="md"
type="text"
/>
)}
</Row>
</SettingWrapper>
</GeneralWrapper>
</ScrollWrapper>
);
}