mirror of
https://github.com/gravitational/teleport.git
synced 2026-11-04 02:03:53 +08:00
* update storybook dependencies to resolve some dependabot issues. * remove config that's already set to the default * Resolve prettier issues after dep update. * Pin x-default-browser version to resolve dependabot vulnerability.
72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
/**
|
|
* Copyright 2022 Gravitational, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import React, { useContext, useState, FC } from 'react';
|
|
|
|
import { FileTransferDialogDirection } from './FileTransferStateless';
|
|
|
|
const FileTransferContext =
|
|
React.createContext<{
|
|
openedDialog: FileTransferDialogDirection;
|
|
openDownloadDialog(): void;
|
|
openUploadDialog(): void;
|
|
closeDialog(): void;
|
|
}>(null);
|
|
|
|
export const FileTransferContextProvider: FC<{
|
|
openedDialog?: FileTransferDialogDirection;
|
|
}> = props => {
|
|
const [openedDialog, setOpenedDialog] = useState<
|
|
FileTransferDialogDirection | undefined
|
|
>(props.openedDialog);
|
|
|
|
function openDownloadDialog(): void {
|
|
setOpenedDialog(FileTransferDialogDirection.Download);
|
|
}
|
|
|
|
function openUploadDialog(): void {
|
|
setOpenedDialog(FileTransferDialogDirection.Upload);
|
|
}
|
|
|
|
function closeDialog(): void {
|
|
setOpenedDialog(undefined);
|
|
}
|
|
|
|
return (
|
|
<FileTransferContext.Provider
|
|
value={{
|
|
openedDialog,
|
|
openDownloadDialog,
|
|
openUploadDialog,
|
|
closeDialog,
|
|
}}
|
|
children={props.children}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export const useFileTransferContext = () => {
|
|
const context = useContext(FileTransferContext);
|
|
|
|
if (!context) {
|
|
throw new Error(
|
|
'FileTransfer requires FileTransferContextProvider context.'
|
|
);
|
|
}
|
|
|
|
return context;
|
|
};
|