- {formattedBreadcrumbs.map((crumb: any, idx: number) => (
+ {formattedBreadcrumbs.map((crumb, idx: number) => (
{idx !== 0 &&
}
column.name)
+ const breadcrumbs = columns.map((column) => column.name)
const backDisabled = columns.length <= 1
const canUpdateStorage = useCheckPermissions(PermissionAction.STORAGE_ADMIN_WRITE, '*')
@@ -225,7 +235,7 @@ const FileExplorerHeader = ({
onSetPathByString(compact(pathString.split('/')))
}
- const onSetPathByString = async (paths: any[]) => {
+ const onSetPathByString = async (paths: string[]) => {
if (paths.length === 0) {
popColumnAtIndex(0)
clearOpenedFolders()
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRow.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRow.tsx
index 6ece67a3f983f..0e8d7c4c53698 100644
--- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRow.tsx
+++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRow.tsx
@@ -40,10 +40,21 @@ import {
STORAGE_VIEWS,
URL_EXPIRY_DURATION,
} from '../Storage.constants'
+import { StorageItem, StorageItemWithColumn } from '../Storage.types'
import FileExplorerRowEditing from './FileExplorerRowEditing'
import { copyPathToFolder } from './StorageExplorer.utils'
-export const RowIcon = ({ view, status, fileType, mimeType }: any) => {
+export const RowIcon = ({
+ view,
+ status,
+ fileType,
+ mimeType,
+}: {
+ view: STORAGE_VIEWS
+ status: STORAGE_ROW_STATUS
+ fileType: string
+ mimeType: string | undefined
+}) => {
if (view === STORAGE_VIEWS.LIST && status === STORAGE_ROW_STATUS.LOADING) {
return
}
@@ -81,22 +92,22 @@ export const RowIcon = ({ view, status, fileType, mimeType }: any) => {
}
export interface FileExplorerRowProps {
- view: string
+ view: STORAGE_VIEWS
columnIndex: number
- selectedItems: any[]
- openedFolders: any[]
- selectedFilePreview: any
+ selectedItems: StorageItemWithColumn[]
+ openedFolders: StorageItem[]
+ selectedFilePreview: (StorageItemWithColumn & { previewUrl: string | undefined }) | null
onCopyUrl: (name: string, url: string) => void
}
-const FileExplorerRow: ItemRenderer = ({
+const FileExplorerRow: ItemRenderer = ({
index: itemIndex,
- item = {},
+ item,
view = STORAGE_VIEWS.COLUMNS,
columnIndex = 0,
selectedItems = [],
openedFolders = [],
- selectedFilePreview = {},
+ selectedFilePreview,
onCopyUrl,
}) => {
const storageExplorerStore = useStorageStore()
@@ -122,22 +133,22 @@ const FileExplorerRow: ItemRenderer = ({
const isPublic = selectedBucket.public
const itemWithColumnIndex = { ...item, columnIndex }
- const isSelected = find(selectedItems, item) !== undefined
+ const isSelected = !!selectedItems.find((i) => i.id === item.id)
const isOpened =
openedFolders.length > columnIndex ? isEqual(openedFolders[columnIndex], item) : false
- const isPreviewed = !isEmpty(selectedFilePreview) && isEqual(selectedFilePreview.id, item.id)
+ const isPreviewed = !isEmpty(selectedFilePreview) && isEqual(selectedFilePreview?.id, item.id)
const canUpdateFiles = useCheckPermissions(PermissionAction.STORAGE_ADMIN_WRITE, '*')
const { show } = useContextMenu()
- const onSelectFile = async (columnIndex: number, file: any) => {
+ const onSelectFile = async (columnIndex: number, file: StorageItem) => {
popColumnAtIndex(columnIndex)
popOpenedFoldersAtIndex(columnIndex - 1)
- setFilePreview(file)
+ setFilePreview(itemWithColumnIndex)
clearSelectedItems()
}
- const onSelectFolder = async (columnIndex: number, folder: any) => {
+ const onSelectFolder = async (columnIndex: number, folder: StorageItem) => {
closeFilePreview()
clearSelectedItems(columnIndex + 1)
popOpenedFoldersAtIndex(columnIndex - 1)
@@ -151,9 +162,9 @@ const FileExplorerRow: ItemRenderer = ({
selectRangeItems(columnIndex, itemIndex)
return
}
- if (find(selectedItems, (item: any) => itemWithColumnIndex.id === item.id) !== undefined) {
+ if (find(selectedItems, (item) => itemWithColumnIndex.id === item.id) !== undefined) {
setSelectedItems(
- selectedItems.filter((selectedItem: any) => itemWithColumnIndex.id !== selectedItem.id)
+ selectedItems.filter((selectedItem) => itemWithColumnIndex.id !== selectedItem.id)
)
} else {
setSelectedItems([...selectedItems, itemWithColumnIndex])
@@ -283,7 +294,7 @@ const FileExplorerRow: ItemRenderer = ({
const createdAt = item.created_at ? new Date(item.created_at).toLocaleString() : '-'
const updatedAt = item.updated_at ? new Date(item.updated_at).toLocaleString() : '-'
- const displayMenu = (event: any, rowType: any) => {
+ const displayMenu = (event: any, rowType: STORAGE_ROW_TYPES) => {
show(event, {
id:
rowType === STORAGE_ROW_TYPES.FILE
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRowEditing.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRowEditing.tsx
index 176f0388d6ac7..d447371d726b2 100644
--- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRowEditing.tsx
+++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerRowEditing.tsx
@@ -1,12 +1,13 @@
-import { has } from 'lodash'
-import { useState, useEffect, useRef } from 'react'
import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore'
-import { STORAGE_ROW_TYPES } from '../Storage.constants'
+import { has } from 'lodash'
+import { useEffect, useRef, useState } from 'react'
+import { STORAGE_ROW_TYPES, STORAGE_VIEWS } from '../Storage.constants'
+import { StorageItem } from '../Storage.types'
import { RowIcon } from './FileExplorerRow'
export interface FileExplorerRowEditingProps {
- item: any
- view: string
+ item: StorageItem
+ view: STORAGE_VIEWS
columnIndex: number
}
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/ItemContextMenu.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/ItemContextMenu.tsx
index 07971cd72e4d5..9716d69e101d3 100644
--- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/ItemContextMenu.tsx
+++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/ItemContextMenu.tsx
@@ -8,6 +8,7 @@ import { useCheckPermissions } from 'hooks'
import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore'
import { IconChevronRight, IconClipboard, IconDownload, IconEdit, IconMove, IconTrash2 } from 'ui'
import { URL_EXPIRY_DURATION } from '../Storage.constants'
+import { StorageItemWithColumn } from '../Storage.types'
interface ItemContextMenuProps {
id: string
@@ -28,7 +29,7 @@ const ItemContextMenu = ({ id = '', onCopyUrl = noop }: ItemContextMenuProps) =>
const isPublic = selectedBucket.public
const canUpdateFiles = useCheckPermissions(PermissionAction.STORAGE_ADMIN_WRITE, '*')
- const onHandleClick = async (event: any, item: any, expiresIn?: number) => {
+ const onHandleClick = async (event: any, item: StorageItemWithColumn, expiresIn?: number) => {
if (item.isCorrupted) return
switch (event) {
case 'copy':
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/MoveItemsModal.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/MoveItemsModal.tsx
index 6bbef3529863e..8e6625eeb157a 100644
--- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/MoveItemsModal.tsx
+++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/MoveItemsModal.tsx
@@ -1,11 +1,12 @@
import { noop } from 'lodash'
import { useEffect, useState } from 'react'
import { Button, Input, Modal } from 'ui'
+import { StorageItemWithColumn } from '../Storage.types'
interface MoveItemsModalProps {
bucketName: string
visible: boolean
- selectedItemsToMove: any[]
+ selectedItemsToMove: StorageItemWithColumn[]
onSelectCancel: () => void
onSelectMove: (path: string) => void
}
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/PreviewPane.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/PreviewPane.tsx
index 3e4ea73b71bbe..d12a2c4dfcd8f 100644
--- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/PreviewPane.tsx
+++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/PreviewPane.tsx
@@ -24,7 +24,7 @@ import { useCheckPermissions } from 'hooks'
import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore'
import { URL_EXPIRY_DURATION } from '../Storage.constants'
-const PreviewFile = ({ mimeType, previewUrl }: { mimeType: string; previewUrl: string }) => {
+const PreviewFile = ({ mimeType, previewUrl }: { mimeType?: string; previewUrl?: string }) => {
if (!mimeType || !previewUrl) {
return (