refactor to handle string array

pull/4767/head
Joseph Izang 9 months ago
parent a22733d251
commit 4c18117781
  1. 36
      libs/remix-ui/workspace/src/lib/components/file-explorer.tsx
  2. 12
      libs/remix-ui/workspace/src/lib/components/flat-tree-drop.tsx
  3. 8
      libs/remix-ui/workspace/src/lib/components/flat-tree.tsx
  4. 2
      libs/remix-ui/workspace/src/lib/contexts/index.ts
  5. 4
      libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx
  6. 10
      libs/remix-ui/workspace/src/lib/types/index.ts

@ -9,7 +9,7 @@ import '../css/file-explorer.css'
import { checkSpecialChars, extractNameFromKey, extractParentFromKey, getPathIcon, joinPath } from '@remix-ui/helper' import { checkSpecialChars, extractNameFromKey, extractParentFromKey, getPathIcon, joinPath } from '@remix-ui/helper'
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
import { ROOT_PATH } from '../utils/constants' import { ROOT_PATH } from '../utils/constants'
import { moveFileIsAllowed, moveFolderIsAllowed } from '../actions' import { moveFileIsAllowed, moveFilesIsAllowed, moveFolderIsAllowed, moveFoldersIsAllowed } from '../actions'
import { FlatTree } from './flat-tree' import { FlatTree } from './flat-tree'
export const FileExplorer = (props: FileExplorerProps) => { export const FileExplorer = (props: FileExplorerProps) => {
@ -299,11 +299,13 @@ export const FileExplorer = (props: FileExplorerProps) => {
* @param src path of the source * @param src path of the source
* @returns {void} * @returns {void}
*/ */
const moveFileSilently = async (dest: string, src: string) => { const moveFileSilently = async (dest: string, sourcesrc: string[]) => {
if (dest.length === 0 || src.length === 0) return if (dest.length === 0 || sourcesrc.length === 0) return
if (await moveFileIsAllowed(src, dest) === false) return if (await moveFilesIsAllowed(sourcesrc, dest) === false) return
const src = sourcesrc.length === 1 ? sourcesrc[0] : sourcesrc.join('\n')
try { try {
props.dispatchMoveFile(src, dest) props.dispatchMoveFiles(sourcesrc, dest)
} catch (error) { } catch (error) {
props.modal( props.modal(
intl.formatMessage({ id: 'filePanel.movingFileFailed' }), intl.formatMessage({ id: 'filePanel.movingFileFailed' }),
@ -321,11 +323,13 @@ export const FileExplorer = (props: FileExplorerProps) => {
* @param src path of the source * @param src path of the source
* @returns {void} * @returns {void}
*/ */
const moveFolderSilently = async (dest: string, src: string) => { const moveFolderSilently = async (dest: string, sourcesrc: string[]) => {
if (dest.length === 0 || src.length === 0) return if (dest.length === 0 || sourcesrc.length === 0) return
if (await moveFolderIsAllowed(src, dest) === false) return if (await moveFoldersIsAllowed(sourcesrc, dest) === false) return
const src = sourcesrc.length === 1 ? sourcesrc[0] : sourcesrc.join('\n')
try { try {
props.dispatchMoveFolder(src, dest) props.dispatchMoveFolders(sourcesrc, dest)
} catch (error) { } catch (error) {
props.modal( props.modal(
intl.formatMessage({ id: 'filePanel.movingFolderFailed' }), intl.formatMessage({ id: 'filePanel.movingFolderFailed' }),
@ -336,14 +340,15 @@ export const FileExplorer = (props: FileExplorerProps) => {
} }
} }
const handleFileMove = async (dest: string, src: string) => { const handleFileMove = async (dest: string, sourcesrc: string[]) => {
if (await moveFileIsAllowed(src, dest) === false) return if (await moveFilesIsAllowed(sourcesrc, dest) === false) return
const src = sourcesrc.length === 1 ? sourcesrc[0] : sourcesrc.join('\n')
try { try {
props.modal( props.modal(
intl.formatMessage({ id: 'filePanel.moveFile' }), intl.formatMessage({ id: 'filePanel.moveFile' }),
intl.formatMessage({ id: 'filePanel.moveFileMsg1' }, { src, dest }), intl.formatMessage({ id: 'filePanel.moveFileMsg1' }, { src, dest }),
intl.formatMessage({ id: 'filePanel.yes' }), intl.formatMessage({ id: 'filePanel.yes' }),
() => props.dispatchMoveFile(src, dest), () => props.dispatchMoveFiles(sourcesrc, dest),
intl.formatMessage({ id: 'filePanel.cancel' }), intl.formatMessage({ id: 'filePanel.cancel' }),
() => { } () => { }
) )
@ -357,14 +362,15 @@ export const FileExplorer = (props: FileExplorerProps) => {
} }
} }
const handleFolderMove = async (dest: string, src: string) => { const handleFolderMove = async (dest: string, sourcesrc: string[]) => {
if (await moveFolderIsAllowed(src, dest) === false) return if (await moveFoldersIsAllowed(sourcesrc, dest) === false) return
const src = sourcesrc.length === 1 ? sourcesrc[0] : sourcesrc.join('\n')
try { try {
props.modal( props.modal(
intl.formatMessage({ id: 'filePanel.moveFile' }), intl.formatMessage({ id: 'filePanel.moveFile' }),
intl.formatMessage({ id: 'filePanel.moveFileMsg1' }, { src, dest }), intl.formatMessage({ id: 'filePanel.moveFileMsg1' }, { src, dest }),
intl.formatMessage({ id: 'filePanel.yes' }), intl.formatMessage({ id: 'filePanel.yes' }),
() => props.dispatchMoveFolder(src, dest), () => props.dispatchMoveFolders(sourcesrc, dest),
intl.formatMessage({ id: 'filePanel.cancel' }), intl.formatMessage({ id: 'filePanel.cancel' }),
() => { } () => { }
) )

@ -69,20 +69,20 @@ export const FlatTreeDrop = (props: FlatTreeDropProps) => {
} }
if (dragDestination.isDirectory) { if (dragDestination.isDirectory) {
if (dragSource.isDirectory) { if (dragSource.isDirectory) {
moveFolder(dragDestination.path, dragSource.path) moveFolder(dragDestination.path, [dragSource.path])
await moveFoldersSilently(items, dragDestination.path) await moveFoldersSilently(items, dragDestination.path)
} else { } else {
moveFile(dragDestination.path, dragSource.path) moveFile(dragDestination.path, [dragSource.path])
await moveFilesSilently(items, dragDestination.path) await moveFilesSilently(items, dragDestination.path)
} }
} else { } else {
const path = extractParentFromKey(dragDestination.path) || '/' const path = extractParentFromKey(dragDestination.path) || '/'
if (dragSource.isDirectory) { if (dragSource.isDirectory) {
moveFolder(path, dragSource.path) moveFolder(path, [dragSource.path])
await moveFoldersSilently(items, dragDestination.path) await moveFoldersSilently(items, dragDestination.path)
} else { } else {
moveFile(path, dragSource.path) moveFile(path, [dragSource.path])
await moveFilesSilently(items, dragDestination.path) await moveFilesSilently(items, dragDestination.path)
} }
} }
@ -130,7 +130,7 @@ export const FlatTreeDrop = (props: FlatTreeDropProps) => {
const promises = items.filter(item => item.path !== targetPath) const promises = items.filter(item => item.path !== targetPath)
.map(async (item) => { .map(async (item) => {
if (item.type === 'file') { if (item.type === 'file') {
await props.moveFileSilently(targetPath, item.path) await props.moveFileSilently(targetPath, [item.path])
} }
}) })
await Promise.all(promises) await Promise.all(promises)
@ -147,7 +147,7 @@ export const FlatTreeDrop = (props: FlatTreeDropProps) => {
const promises = items.filter(item => item.path !== targetPath) const promises = items.filter(item => item.path !== targetPath)
.map(async (item) => { .map(async (item) => {
if (item.type === 'folder') { if (item.type === 'folder') {
await props.moveFolderSilently(targetPath, item.path) await props.moveFolderSilently(targetPath, [item.path])
} }
}) })
await Promise.all(promises) await Promise.all(promises)

@ -36,10 +36,10 @@ interface FlatTreeProps {
handleContextMenu: (pageX: number, pageY: number, path: string, content: string, type: string) => void handleContextMenu: (pageX: number, pageY: number, path: string, content: string, type: string) => void
handleTreeClick: (e: SyntheticEvent) => void handleTreeClick: (e: SyntheticEvent) => void
handleClickFolder: (path: string, type: string) => void handleClickFolder: (path: string, type: string) => void
moveFile: (dest: string, src: string) => void moveFile: (dest: string, src: string[]) => void
moveFolder: (dest: string, src: string) => void moveFolder: (dest: string, src: string[]) => void
moveFolderSilently: (dest: string, src: string) => Promise<void> moveFolderSilently: (dest: string, src: string[]) => Promise<void>
moveFileSilently: (dest: string, src: string) => Promise<void> moveFileSilently: (dest: string, src: string[]) => Promise<void>
fileState: fileDecoration[] fileState: fileDecoration[]
createNewFile?: any createNewFile?: any
createNewFolder?: any createNewFolder?: any

@ -39,6 +39,8 @@ export const FileSystemContext = createContext<{
dispatchCloneRepository: (url: string) => Promise<void>, dispatchCloneRepository: (url: string) => Promise<void>,
dispatchMoveFile: (src: string, dest: string) => Promise<void>, dispatchMoveFile: (src: string, dest: string) => Promise<void>,
dispatchMoveFolder: (src: string, dest: string) => Promise<void>, dispatchMoveFolder: (src: string, dest: string) => Promise<void>,
dispatchMoveFiles: (src: string[], dest: string) => Promise<void>,
dispatchMoveFolders: (src: string[], dest: string) => Promise<void>,
dispatchShowAllBranches: () => Promise<void>, dispatchShowAllBranches: () => Promise<void>,
dispatchSwitchToBranch: (branch: string) => Promise<void>, dispatchSwitchToBranch: (branch: string) => Promise<void>,
dispatchCreateNewBranch: (branch: string) => Promise<void>, dispatchCreateNewBranch: (branch: string) => Promise<void>,

@ -1251,7 +1251,9 @@ export function Workspace() {
dispatchAddInputField={global.dispatchAddInputField} dispatchAddInputField={global.dispatchAddInputField}
dispatchHandleExpandPath={global.dispatchHandleExpandPath} dispatchHandleExpandPath={global.dispatchHandleExpandPath}
dispatchMoveFile={global.dispatchMoveFile} dispatchMoveFile={global.dispatchMoveFile}
dispatchMoveFiles={global.dispatchMoveFiles}
dispatchMoveFolder={global.dispatchMoveFolder} dispatchMoveFolder={global.dispatchMoveFolder}
dispatchMoveFolders={global.dispatchMoveFolders}
handleCopyClick={handleCopyClick} handleCopyClick={handleCopyClick}
handlePasteClick={handlePasteClick} handlePasteClick={handlePasteClick}
addMenuItems={addMenuItems} addMenuItems={addMenuItems}
@ -1317,7 +1319,9 @@ export function Workspace() {
dispatchAddInputField={global.dispatchAddInputField} dispatchAddInputField={global.dispatchAddInputField}
dispatchHandleExpandPath={global.dispatchHandleExpandPath} dispatchHandleExpandPath={global.dispatchHandleExpandPath}
dispatchMoveFile={global.dispatchMoveFile} dispatchMoveFile={global.dispatchMoveFile}
dispatchMoveFiles={global.dispatchMoveFiles}
dispatchMoveFolder={global.dispatchMoveFolder} dispatchMoveFolder={global.dispatchMoveFolder}
dispatchMoveFolders={global.dispatchMoveFolders}
handleCopyClick={handleCopyClick} handleCopyClick={handleCopyClick}
handlePasteClick={handlePasteClick} handlePasteClick={handlePasteClick}
addMenuItems={addMenuItems} addMenuItems={addMenuItems}

@ -135,6 +135,8 @@ export interface FileExplorerProps {
dispatchAddInputField:(path: string, type: 'file' | 'folder') => Promise<void>, dispatchAddInputField:(path: string, type: 'file' | 'folder') => Promise<void>,
dispatchHandleExpandPath: (paths: string[]) => Promise<void>, dispatchHandleExpandPath: (paths: string[]) => Promise<void>,
dispatchMoveFile: (src: string, dest: string) => Promise<void>, dispatchMoveFile: (src: string, dest: string) => Promise<void>,
dispatchMoveFiles: (src: string[], dest: string) => Promise<void>,
dispatchMoveFolders: (src: string[], dest: string) => Promise<void>,
dispatchMoveFolder: (src: string, dest: string) => Promise<void>, dispatchMoveFolder: (src: string, dest: string) => Promise<void>,
handlePasteClick: (dest: string, destType: string) => void handlePasteClick: (dest: string, destType: string) => void
handleCopyClick: (path: string, type: WorkspaceElement) => void handleCopyClick: (path: string, type: WorkspaceElement) => void
@ -344,10 +346,10 @@ export type Actions = {[A in keyof ActionPayloadTypes]: Action<A>}[keyof ActionP
export type WorkspaceElement = 'folder' | 'file' | 'workspace' export type WorkspaceElement = 'folder' | 'file' | 'workspace'
export interface FlatTreeDropProps { export interface FlatTreeDropProps {
moveFile: (dest: string, src: string) => void moveFile: (dest: string, src: string[]) => void
moveFolder: (dest: string, src: string) => void moveFolder: (dest: string, src: string[]) => void
moveFolderSilently: (dest: string, src: string) => Promise<void> moveFolderSilently: (dest: string, src: string[]) => Promise<void>
moveFileSilently: (dest: string, src: string) => Promise<void> moveFileSilently: (dest: string, src: string[]) => Promise<void>
getFlatTreeItem: (path: string) => FileType getFlatTreeItem: (path: string) => FileType
handleClickFolder: (path: string, type: string) => void handleClickFolder: (path: string, type: string) => void
dragSource: FileType dragSource: FileType

Loading…
Cancel
Save