diff --git a/src/components/ExpandIcon.tsx b/src/components/ExpandIcon.tsx
index cb9902b..17c708a 100644
--- a/src/components/ExpandIcon.tsx
+++ b/src/components/ExpandIcon.tsx
@@ -1,5 +1,4 @@
import classNames from "classnames";
-import { ReactNode } from "react";
import { ChevronRight } from "src/assets/icons";
@@ -8,22 +7,15 @@ type Props = {
hideIcon: boolean;
};
const ExpandIcon = ({ isExpanded, hideIcon }: Props) => {
- let content: ReactNode;
- if (hideIcon) {
- content = null;
- } else {
- content = (
-
- );
- }
-
return (
diff --git a/src/components/Folder/Content.tsx b/src/components/Folder/Content.tsx
index 995f98e..7bbd43c 100644
--- a/src/components/Folder/Content.tsx
+++ b/src/components/Folder/Content.tsx
@@ -10,13 +10,10 @@ import { useShowFolderIcon } from "src/hooks/useSettingsHandler";
import { FOLDER_OPERATION_COPY } from "src/locales";
import { ExplorerStore } from "src/store";
-
import { FolderListModal } from "../FolderListModal";
-
import FilesCount from "./FilesCount";
-
export type FolderProps = {
folder: TFolder;
};
@@ -29,7 +26,7 @@ const FolderContent = ({ folder, onToggleExpandState }: Props) => {
const {
focusedFolder,
- setFocusedFolder,
+ changeFocusedFolder,
expandedFolderPaths,
createNewFolder,
createFile,
@@ -44,7 +41,7 @@ const FolderContent = ({ folder, onToggleExpandState }: Props) => {
} = useExplorerStore(
useShallow((store: ExplorerStore) => ({
focusedFolder: store.focusedFolder,
- setFocusedFolder: store.setFocusedFolder,
+ changeFocusedFolder: store.changeFocusedFolder,
expandedFolderPaths: store.expandedFolderPaths,
createNewFolder: store.createNewFolder,
createFile: store.createFile,
@@ -161,7 +158,7 @@ const FolderContent = ({ folder, onToggleExpandState }: Props) => {
item.setTitle(FOLDER_OPERATION_COPY.createFile[language]);
item.onClick(async () => {
if (folder.path !== focusedFolder?.path) {
- await setFocusedFolder(folder);
+ await changeFocusedFolder(folder);
}
await createFile(folder);
});
@@ -175,7 +172,7 @@ const FolderContent = ({ folder, onToggleExpandState }: Props) => {
onToggleExpandState();
}
if (newFolder) {
- await setFocusedFolder(newFolder);
+ await changeFocusedFolder(newFolder);
}
});
});
diff --git a/src/components/Folder/ExpandIcon.tsx b/src/components/Folder/ExpandIcon.tsx
index 71c8bf9..d035870 100644
--- a/src/components/Folder/ExpandIcon.tsx
+++ b/src/components/Folder/ExpandIcon.tsx
@@ -12,9 +12,9 @@ type Props = {
const FolderExpandIcon = ({ folder }: Props) => {
const { useExplorerStore } = useExplorer();
- const { hasSubFolders, expandedFolderPaths } = useExplorerStore(
+ const { hasSubFolder, expandedFolderPaths } = useExplorerStore(
useShallow((store: ExplorerStore) => ({
- hasSubFolders: store.hasSubFolders,
+ hasSubFolder: store.hasSubFolder,
expandedFolderPaths: store.expandedFolderPaths,
}))
);
@@ -24,7 +24,7 @@ const FolderExpandIcon = ({ folder }: Props) => {
return (
);
};
diff --git a/src/components/Folder/index.tsx b/src/components/Folder/index.tsx
index 4d83aac..82dbd52 100644
--- a/src/components/Folder/index.tsx
+++ b/src/components/Folder/index.tsx
@@ -28,19 +28,19 @@ const Folder = ({
const { language } = plugin;
const {
- setFocusedFolder,
+ changeFocusedFolder,
expandFolder,
collapseFolder,
expandedFolderPaths,
focusedFolder,
- hasSubFolders,
+ hasSubFolder,
getFilesinFolder,
getSubFolders,
changeViewMode,
} = useExplorerStore(
useShallow((store: ExplorerStore) => ({
- setFocusedFolder: store.setFocusedFolder,
- hasSubFolders: store.hasSubFolders,
+ changeFocusedFolder: store.changeFocusedFolder,
+ hasSubFolder: store.hasSubFolder,
expandedFolderPaths: store.expandedFolderPaths,
expandFolder: store.expandFolder,
collapseFolder: store.collapseFolder,
@@ -132,7 +132,7 @@ const Folder = ({
return classNames(
"ffs__folder-container tree-item-self nav-folder-title is-clickable",
{
- "mod-collapsible": hasSubFolders(folder),
+ "mod-collapsible": hasSubFolder(folder),
"is-active": isFocused,
"ffs__is-over": isOver && !disableDrag,
}
@@ -145,7 +145,7 @@ const Folder = ({
ref={setDropRef}
onClick={async () => {
onToggleExpandState();
- setFocusedFolder(folder);
+ changeFocusedFolder(folder);
await changeViewMode("folder");
}}
style={getIndentStyle()}
diff --git a/src/components/FolderAndTagActions/CreateFolder.tsx b/src/components/FolderAndTagActions/CreateFolder.tsx
index 5bbd953..26d186e 100644
--- a/src/components/FolderAndTagActions/CreateFolder.tsx
+++ b/src/components/FolderAndTagActions/CreateFolder.tsx
@@ -18,7 +18,7 @@ const CreateFolder = () => {
focusedFolder,
createNewFolder,
changeExpandedFolderPaths,
- setFocusedFolder,
+ changeFocusedFolder,
expandedFolderPaths,
initOrder,
getNameOfFolder,
@@ -28,7 +28,7 @@ const CreateFolder = () => {
focusedFolder: store.focusedFolder,
createNewFolder: store.createNewFolder,
changeExpandedFolderPaths: store.changeExpandedFolderPaths,
- setFocusedFolder: store.setFocusedFolder,
+ changeFocusedFolder: store.changeFocusedFolder,
expandedFolderPaths: store.expandedFolderPaths,
initOrder: store.initFoldersManualSortOrder,
getNameOfFolder: store.getNameOfFolder,
@@ -55,7 +55,7 @@ const CreateFolder = () => {
const newFolder = await createNewFolder(parentFolder);
if (newFolder) {
await expandParentFolders(parentFolder);
- await setFocusedFolder(newFolder);
+ await changeFocusedFolder(newFolder);
}
await initOrder();
};
diff --git a/src/components/FolderAndTagActions/SortFoldersAndTags.tsx b/src/components/FolderAndTagActions/SortFoldersAndTags.tsx
index e3395db..13fc22c 100644
--- a/src/components/FolderAndTagActions/SortFoldersAndTags.tsx
+++ b/src/components/FolderAndTagActions/SortFoldersAndTags.tsx
@@ -1,110 +1,59 @@
import { useShallow } from "zustand/react/shallow";
import { useExplorer } from "src/hooks/useExplorer";
-import { FOLDER_SORT_RULES_COPY } from "src/locales";
+import { FOLDER_SORT_RULES_COPY, SORT_TIPS_COPY } from "src/locales";
import { ExplorerStore } from "src/store";
import { FOLDER_MANUAL_SORT_RULE, FolderSortRule } from "src/store/folder/sort";
import { ManualSortFoldersModal } from "../ManualSortFoldersModal";
import SortAction from "../SortAction";
-type FolderSortRuleItem = {
- text: string;
- rule: FolderSortRule;
-};
-type FolderSortRuleGroup = FolderSortRuleItem[];
-
const SortFolders = () => {
const { useExplorerStore, plugin } = useExplorer();
const { language } = plugin;
const {
folderSortRule,
- changeFolderSortRule,
- isFoldersInAscendingOrder,
- initFoldersManualSortOrder,
+ folderSortRulesGroup,
+ changeFolderSortRuleAndUpdateOrder,
} = useExplorerStore(
useShallow((store: ExplorerStore) => ({
folderSortRule: store.folderSortRule,
- isFoldersInAscendingOrder: store.isFoldersInAscendingOrder,
- changeFolderSortRule: store.changeFolderSortRule,
- initFoldersManualSortOrder: store.initFoldersManualSortOrder,
+ folderSortRulesGroup: store.folderSortRulesGroup,
+ changeFolderSortRuleAndUpdateOrder:
+ store.changeFolderSortRuleAndUpdateOrder,
}))
);
- const getRuleGroups = () => {
- const {
- folderNameAscending,
- folderNameDescending,
- filesCountAscending,
- filesCountDescending,
- manualOrder,
- } = FOLDER_SORT_RULES_COPY;
- const folderSortByNameRules: FolderSortRuleGroup = [
- {
- text: folderNameAscending[language],
- rule: "FolderNameAscending",
- },
- {
- text: folderNameDescending[language],
- rule: "FolderNameDescending",
- },
- ];
- const folderSortByFilesCountRules: FolderSortRuleGroup = [
- {
- text: filesCountAscending[language],
- rule: "FilesCountAscending",
- },
- {
- text: filesCountDescending[language],
- rule: "FilesCountDescending",
- },
- ];
- const folderManualSortRules: FolderSortRuleGroup = [
- {
- text: manualOrder[language],
- rule: "FolderManualOrder",
- },
- ];
- return [
- folderSortByNameRules,
- folderSortByFilesCountRules,
- folderManualSortRules,
- ];
- };
+ const getRuleGroups = () =>
+ folderSortRulesGroup.map((rules) =>
+ rules.map((rule) => ({
+ rule,
+ text: FOLDER_SORT_RULES_COPY[rule][language],
+ }))
+ );
+
+ const onChangeSortRule = async (rule: FolderSortRule) => {
+ await changeFolderSortRuleAndUpdateOrder(rule);
- const onChangeSortRule = (rule: FolderSortRule) => {
if (rule === FOLDER_MANUAL_SORT_RULE) {
- initFoldersManualSortOrder();
const modal = new ManualSortFoldersModal(
plugin,
- plugin.app.vault.getRoot(),
- useExplorerStore
+ useExplorerStore,
+ plugin.app.vault.getRoot()
);
modal.open();
}
- if (rule !== folderSortRule) {
- changeFolderSortRule(rule as FolderSortRule);
- }
- };
-
- const getAriaLabel = () => {
- return language === "zh"
- ? "对文件夹和标签排序"
- : "Sort folders and tags";
};
return (
);
};
diff --git a/src/components/FolderAndTagActions/ToggleFoldersAndTags.tsx b/src/components/FolderAndTagActions/ToggleFoldersAndTags.tsx
index 6ff12e4..9b4fadb 100644
--- a/src/components/FolderAndTagActions/ToggleFoldersAndTags.tsx
+++ b/src/components/FolderAndTagActions/ToggleFoldersAndTags.tsx
@@ -36,10 +36,10 @@ const ToggleFolders = () => {
const [isExpanded, setIsExpanded] = useState
(false);
useEffect(() => {
- const isFolderExpanded =
+ const hassFolderExpanded =
showFolderView && expandedFolderPaths.length > 0;
- const isTagExpanded = showTagView && expandedTagPaths.length > 0;
- setIsExpanded(isFolderExpanded || isTagExpanded);
+ const hasTagExpanded = showTagView && expandedTagPaths.length > 0;
+ setIsExpanded(hassFolderExpanded || hasTagExpanded);
}, [expandedFolderPaths, expandedTagPaths, showFolderView, showTagView]);
const onToggleAllFolders = () => {
diff --git a/src/components/FolderAndTagTree/index.tsx b/src/components/FolderAndTagTree/index.tsx
index 01c9f63..76d8de2 100644
--- a/src/components/FolderAndTagTree/index.tsx
+++ b/src/components/FolderAndTagTree/index.tsx
@@ -28,7 +28,7 @@ const FolderAndTagTree = ({ onOpenFilesPane = () => {} }: Props) => {
const {
rootFolder,
folderSortRule,
- hasSubFolders,
+ hasSubFolder,
getSubFolders,
sortFolders,
expandedFolderPaths,
@@ -37,14 +37,14 @@ const FolderAndTagTree = ({ onOpenFilesPane = () => {} }: Props) => {
sortTags,
expandedTagPaths,
getTagsByParent,
- hasTagChildren,
+ hasSubTag,
focusedTag,
isTopLevelTag,
} = useExplorerStore(
useShallow((store: ExplorerStore) => ({
rootFolder: store.rootFolder,
folderSortRule: store.folderSortRule,
- hasSubFolders: store.hasSubFolders,
+ hasSubFolder: store.hasSubFolder,
getSubFolders: store.getSubFolders,
sortFolders: store.sortFolders,
expandedFolderPaths: store.expandedFolderPaths,
@@ -55,7 +55,7 @@ const FolderAndTagTree = ({ onOpenFilesPane = () => {} }: Props) => {
sortTags: store.sortTags,
expandedTagPaths: store.expandedTagPaths,
getTagsByParent: store.getTagsByParent,
- hasTagChildren: store.hasTagChildren,
+ hasSubTag: store.hasSubTag,
focusedTag: store.focusedTag,
isTopLevelTag: store.isTopLevelTag,
}))
@@ -127,7 +127,7 @@ const FolderAndTagTree = ({ onOpenFilesPane = () => {} }: Props) => {
>
{renderFolder(folder)}
{isExpanded &&
- hasSubFolders(folder) &&
+ hasSubFolder(folder) &&
renderSubfolders(renderFolders(getSubFolders(folder)))}
);
@@ -195,7 +195,7 @@ const FolderAndTagTree = ({ onOpenFilesPane = () => {} }: Props) => {
>
{renderTag(tag)}
{isExpanded &&
- hasTagChildren(tag) &&
+ hasSubTag(tag) &&
renderSubTags(
renderTags(getTagsByParent(tag.fullPath))
)}
diff --git a/src/components/ManualSortFilesModal/ManualSortFiles.tsx b/src/components/ManualSortFilesModal/ManualSortFiles.tsx
index 60c8c32..3dd56f8 100644
--- a/src/components/ManualSortFilesModal/ManualSortFiles.tsx
+++ b/src/components/ManualSortFilesModal/ManualSortFiles.tsx
@@ -30,16 +30,14 @@ type Props = {
plugin: FolderFileSplitterPlugin;
};
const ManualSortFiles = ({ parentFolder, useExplorerStore, plugin }: Props) => {
- const { getFilesInFolder, sortFiles, fileSortRule, changeOrder } =
- useExplorerStore(
- useShallow((store: ExplorerStore) => ({
- order: store.filesManualSortOrder,
- getFilesInFolder: store.getFilesInFolder,
- sortFiles: store.sortFiles,
- fileSortRule: store.fileSortRule,
- changeOrder: store.changeFilesManualOrderAndSave,
- }))
- );
+ const { getFilesInFolder, sortFiles, changeOrder } = useExplorerStore(
+ useShallow((store: ExplorerStore) => ({
+ order: store.filesManualSortOrder,
+ getFilesInFolder: store.getFilesInFolder,
+ sortFiles: store.sortFiles,
+ changeOrder: store.moveFileInManualOrder,
+ }))
+ );
const [activeFile, setActiveFile] = useState