Skip to content

Commit e8795fd

Browse files
sumomomomomolinedoestrolling
authored andcommitted
Revert rename of persistenceObject to persistenceFile, add dispatches in fileSystemView related files
1 parent a335af8 commit e8795fd

15 files changed

+222
-53
lines changed

src/commons/application/ApplicationTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,8 @@ export const createDefaultStoriesEnv = (
550550

551551
export const defaultFileSystem: FileSystemState = {
552552
inBrowserFileSystem: null,
553-
githubSaveInfoArray: []
553+
githubSaveInfoArray: [],
554+
persistenceFileArray: []
554555
};
555556

556557
export const defaultSideContent: SideContentState = {

src/commons/controlBar/ControlBarGoogleDriveButtons.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { IconNames } from '@blueprintjs/icons';
33
import { Popover2, Tooltip2 } from '@blueprintjs/popover2';
44
import React from 'react';
55

6-
import { PersistenceObject, PersistenceState } from '../../features/persistence/PersistenceTypes';
6+
import { PersistenceFile, PersistenceState } from '../../features/persistence/PersistenceTypes';
77
import ControlButton from '../ControlButton';
88
import { useResponsive } from '../utils/Hooks';
99

@@ -17,7 +17,7 @@ type Props = {
1717
isFolderModeEnabled: boolean;
1818
loggedInAs?: string;
1919
accessToken?: string;
20-
currentObject?: PersistenceObject;
20+
currentObject?: PersistenceFile;
2121
isDirty?: boolean;
2222
onClickOpen?: () => any;
2323
onClickSave?: () => any;

src/commons/fileSystem/FileSystemActions.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import {
77
DELETE_ALL_GITHUB_SAVE_INFO,
88
DELETE_GITHUB_SAVE_INFO,
99
SET_IN_BROWSER_FILE_SYSTEM,
10-
UPDATE_GITHUB_SAVE_INFO } from './FileSystemTypes';
10+
UPDATE_GITHUB_SAVE_INFO,
11+
ADD_PERSISTENCE_FILE,
12+
DELETE_PERSISTENCE_FILE,
13+
DELETE_ALL_PERSISTENCE_FILES } from './FileSystemTypes';
14+
import { PersistenceFile } from 'src/features/persistence/PersistenceTypes';
1115

1216
export const setInBrowserFileSystem = createAction(
1317
SET_IN_BROWSER_FILE_SYSTEM,
@@ -33,4 +37,19 @@ export const updateGithubSaveInfo = createAction(
3337
(repoName: string,
3438
filePath: string,
3539
lastSaved: Date) => ({ payload: {repoName, filePath, lastSaved} })
36-
)
40+
);
41+
42+
export const addPersistenceFile = createAction(
43+
ADD_PERSISTENCE_FILE,
44+
( persistenceFile: PersistenceFile ) => ({ payload: persistenceFile })
45+
);
46+
47+
export const deletePersistenceFile = createAction(
48+
DELETE_PERSISTENCE_FILE,
49+
(persistenceFile: PersistenceFile) => ({ payload: persistenceFile })
50+
);
51+
52+
export const deleteAllPersistenceFiles = createAction(
53+
DELETE_ALL_PERSISTENCE_FILES,
54+
() => ({ payload: {} })
55+
);

src/commons/fileSystem/FileSystemReducer.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import {
77
setInBrowserFileSystem,
88
addGithubSaveInfo,
99
deleteAllGithubSaveInfo,
10-
deleteGithubSaveInfo } from './FileSystemActions';
10+
deleteGithubSaveInfo,
11+
addPersistenceFile,
12+
deletePersistenceFile,
13+
deleteAllPersistenceFiles } from './FileSystemActions';
1114
import { FileSystemState } from './FileSystemTypes';
1215

1316
export const FileSystemReducer: Reducer<FileSystemState, SourceActionType> = createReducer(
@@ -36,6 +39,24 @@ export const FileSystemReducer: Reducer<FileSystemState, SourceActionType> = cre
3639
})
3740
.addCase(deleteAllGithubSaveInfo, (state, action) => {
3841
state.githubSaveInfoArray = [];
39-
});
42+
})
43+
.addCase(addPersistenceFile, (state, action) => {
44+
const persistenceFilePayload = action.payload.persistenceFile;
45+
const persistenceFileArray = state['persistenceFileArray'];
46+
const persistenceFileIndex = persistenceFileArray.findIndex(e => e.id === persistenceFilePayload.id);
47+
if (persistenceFileIndex === -1) {
48+
persistenceFileArray[persistenceFileArray.length] = persistenceFilePayload;
49+
} else {
50+
persistenceFileArray[persistenceFileIndex] = persistenceFilePayload;
51+
}
52+
state.persistenceFileArray = persistenceFileArray;
53+
})
54+
.addCase(deletePersistenceFile, (state, action) => {
55+
const newPersistenceFileArray = state['persistenceFileArray'].filter(e => e.id !== action.payload.persistenceFile.id);
56+
state.persistenceFileArray = newPersistenceFileArray;
57+
})
58+
.addCase(deleteAllPersistenceFiles, (state, action) => {
59+
state.persistenceFileArray = [];
60+
})
4061
}
4162
);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import { FSModule } from 'browserfs/dist/node/core/FS';
22
import { GitHubSaveInfo } from 'src/features/github/GitHubTypes';
3+
import { PersistenceFile } from 'src/features/persistence/PersistenceTypes';
34

45
export const SET_IN_BROWSER_FILE_SYSTEM = 'SET_IN_BROWSER_FILE_SYSTEM';
56
export const ADD_GITHUB_SAVE_INFO = 'ADD_GITHUB_SAVE_INFO';
7+
export const ADD_PERSISTENCE_FILE = 'ADD_PERSISTENCE_FILE';
68
export const DELETE_GITHUB_SAVE_INFO = 'DELETE_GITHUB_SAVE_INFO';
9+
export const DELETE_PERSISTENCE_FILE = 'DELETE_PERSISTENCE_FILE';
710
export const DELETE_ALL_GITHUB_SAVE_INFO = 'DELETE_ALL_GITHUB_SAVE_INFO';
811
export const UPDATE_GITHUB_SAVE_INFO = 'UPDATE_GITHUB_SAVE_INFO';
12+
export const DELETE_ALL_PERSISTENCE_FILES = 'DELETE_ALL_PERSISTENCE_FILES';
913

1014
export type FileSystemState = {
1115
inBrowserFileSystem: FSModule | null;
1216
githubSaveInfoArray: GitHubSaveInfo[];
17+
persistenceFileArray: PersistenceFile[];
1318
};

src/commons/fileSystemView/FileSystemViewDirectoryNode.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import FileSystemViewFileName from './FileSystemViewFileName';
1515
import FileSystemViewIndentationPadding from './FileSystemViewIndentationPadding';
1616
import FileSystemViewList from './FileSystemViewList';
1717
import FileSystemViewPlaceholderNode from './FileSystemViewPlaceholderNode';
18+
import { persistenceCreateFile, persistenceCreateFolder, persistenceDeleteFolder } from 'src/features/persistence/PersistenceActions';
1819

1920
type Props = {
2021
workspaceLocation: WorkspaceLocation;
@@ -77,7 +78,7 @@ const FileSystemViewDirectoryNode: React.FC<Props> = ({
7778
if (!shouldProceed) {
7879
return;
7980
}
80-
81+
dispatch(persistenceDeleteFolder(fullPath));
8182
dispatch(removeEditorTabsForDirectory(workspaceLocation, fullPath));
8283
rmdirRecursively(fileSystem, fullPath).then(refreshParentDirectory);
8384
});
@@ -110,7 +111,7 @@ const FileSystemViewDirectoryNode: React.FC<Props> = ({
110111
if (err) {
111112
console.error(err);
112113
}
113-
114+
dispatch(persistenceCreateFile(newFilePath));
114115
forceRefreshFileSystemViewList();
115116
});
116117
});
@@ -139,6 +140,7 @@ const FileSystemViewDirectoryNode: React.FC<Props> = ({
139140
console.error(err);
140141
}
141142

143+
dispatch(persistenceCreateFolder(newDirectoryPath));
142144
forceRefreshFileSystemViewList();
143145
});
144146
});

src/commons/fileSystemView/FileSystemViewFileName.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
renameEditorTabsForDirectory
1111
} from '../workspace/WorkspaceActions';
1212
import { WorkspaceLocation } from '../workspace/WorkspaceTypes';
13+
import { persistenceRenameFile, persistenceRenameFolder } from 'src/features/persistence/PersistenceActions';
1314

1415
type Props = {
1516
workspaceLocation: WorkspaceLocation;
@@ -69,8 +70,10 @@ const FileSystemViewFileName: React.FC<Props> = ({
6970
}
7071

7172
if (isDirectory) {
73+
dispatch(persistenceRenameFolder({oldFolderPath: oldPath, newFolderPath: newPath}));
7274
dispatch(renameEditorTabsForDirectory(workspaceLocation, oldPath, newPath));
7375
} else {
76+
dispatch(persistenceRenameFile({oldFilePath: oldPath, newFilePath: newPath}));
7477
dispatch(renameEditorTabForFile(workspaceLocation, oldPath, newPath));
7578
}
7679
refreshDirectory();

src/commons/fileSystemView/FileSystemViewFileNode.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { WorkspaceLocation } from '../workspace/WorkspaceTypes';
1414
import FileSystemViewContextMenu from './FileSystemViewContextMenu';
1515
import FileSystemViewFileName from './FileSystemViewFileName';
1616
import FileSystemViewIndentationPadding from './FileSystemViewIndentationPadding';
17+
import { persistenceDeleteFile } from 'src/features/persistence/PersistenceActions';
1718

1819
type Props = {
1920
workspaceLocation: WorkspaceLocation;
@@ -88,7 +89,7 @@ const FileSystemViewFileNode: React.FC<Props> = ({
8889
if (err) {
8990
console.error(err);
9091
}
91-
92+
dispatch(persistenceDeleteFile(fullPath));
9293
dispatch(removeEditorTabForFile(workspaceLocation, fullPath));
9394
refreshDirectory();
9495
});

0 commit comments

Comments
 (0)