Skip to content

Commit 1ae530b

Browse files
committed
Moved constants and functions related to projects from common_storage.ts to project.ts.
1 parent 2315947 commit 1ae530b

File tree

14 files changed

+437
-401
lines changed

14 files changed

+437
-401
lines changed

src/App.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import { extendedPythonGenerator } from './editor/extended_python_generator';
3939

4040
import * as commonStorage from './storage/common_storage';
4141
import * as storageModule from './storage/module';
42+
import * as storageProject from './storage/project';
4243
import * as clientSideStorage from './storage/client_side_storage';
4344

4445
import * as CustomBlocks from './blocks/setup_custom_blocks';
@@ -130,7 +131,7 @@ const App: React.FC = (): React.JSX.Element => {
130131
* App wrapper that manages project state and provides it to UserSettingsProvider.
131132
*/
132133
const AppWithUserSettings: React.FC<{ storage: commonStorage.Storage }> = ({ storage }) => {
133-
const [project, setProject] = React.useState<commonStorage.Project | null>(null);
134+
const [project, setProject] = React.useState<storageProject.Project | null>(null);
134135

135136
return (
136137
<UserSettingsProvider
@@ -146,8 +147,8 @@ const AppWithUserSettings: React.FC<{ storage: commonStorage.Storage }> = ({ sto
146147
* Inner application content component that has access to UserSettings context.
147148
*/
148149
interface AppContentProps {
149-
project: commonStorage.Project | null;
150-
setProject: React.Dispatch<React.SetStateAction<commonStorage.Project | null>>;
150+
project: storageProject.Project | null;
151+
setProject: React.Dispatch<React.SetStateAction<storageProject.Project | null>>;
151152
}
152153

153154
const AppContent: React.FC<AppContentProps> = ({ project, setProject }): React.JSX.Element => {
@@ -360,7 +361,7 @@ const AppContent: React.FC<AppContentProps> = ({ project, setProject }): React.J
360361
};
361362

362363
/** Creates tab items from project data. */
363-
const createTabItemsFromProject = (projectData: commonStorage.Project): Tabs.TabItem[] => {
364+
const createTabItemsFromProject = (projectData: storageProject.Project): Tabs.TabItem[] => {
364365
const tabs: Tabs.TabItem[] = [
365366
{
366367
key: projectData.robot.modulePath,

src/editor/editor.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { GeneratorContext } from './generator_context';
2626
import * as commonStorage from '../storage/common_storage';
2727
import * as storageModule from '../storage/module';
2828
import * as storageNames from '../storage/names';
29+
import * as storageProject from '../storage/project';
2930
import * as eventHandler from '../blocks/mrc_event_handler';
3031
import * as classMethodDef from '../blocks/mrc_class_method_def';
3132
import * as mechanismComponentHolder from '../blocks/mrc_mechanism_component_holder';
@@ -48,7 +49,7 @@ export class Editor {
4849
private generatorContext: GeneratorContext;
4950
private storage: commonStorage.Storage;
5051
private currentModule: storageModule.Module | null = null;
51-
private currentProject: commonStorage.Project | null = null;
52+
private currentProject: storageProject.Project | null = null;
5253
private modulePath: string = '';
5354
private robotPath: string = '';
5455
private moduleContentText: string = '';
@@ -122,7 +123,7 @@ export class Editor {
122123

123124
public async loadModuleBlocks(
124125
currentModule: storageModule.Module | null,
125-
currentProject: commonStorage.Project | null) {
126+
currentProject: storageProject.Project | null) {
126127
this.generatorContext.setModule(currentModule);
127128
this.currentModule = currentModule;
128129
this.currentProject = currentProject;

src/reactComponents/AddTabDialog.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import * as I18Next from 'react-i18next';
2525
import * as React from 'react';
2626
import * as commonStorage from '../storage/common_storage';
2727
import * as storageModule from '../storage/module';
28+
import * as storageProject from '../storage/project';
2829
import ClassNameComponent from './ClassNameComponent';
2930

3031
/** Represents a module item in the dialog. */
@@ -39,8 +40,8 @@ interface AddTabDialogProps {
3940
isOpen: boolean;
4041
onOk: (newTabs: TabItem[]) => void;
4142
onCancel: () => void;
42-
project: commonStorage.Project | null;
43-
setProject: (project: commonStorage.Project | null) => void;
43+
project: storageProject.Project | null;
44+
setProject: (project: storageProject.Project | null) => void;
4445
currentTabs: TabItem[];
4546
storage: commonStorage.Storage | null;
4647
}
@@ -132,10 +133,10 @@ export default function AddTabDialog(props: AddTabDialogProps) {
132133
storageModule.MODULE_TYPE_MECHANISM :
133134
storageModule.MODULE_TYPE_OPMODE;
134135

135-
await commonStorage.addModuleToProject(
136+
await storageProject.addModuleToProject(
136137
props.storage, props.project, storageType, newClassName);
137138

138-
const newModule = commonStorage.findModuleByClassName(props.project, newClassName);
139+
const newModule = storageProject.findModuleByClassName(props.project, newClassName);
139140
if (newModule) {
140141
const module: Module = {
141142
path: newModule.modulePath,

src/reactComponents/ClassNameComponent.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ import * as Antd from 'antd';
2424
import * as I18Next from 'react-i18next';
2525
import * as React from 'react';
2626
import * as commonStorage from '../storage/common_storage';
27+
import * as storageProject from '../storage/project';
2728

2829
/** Props for the ClassNameComponent. */
2930
interface ClassNameComponentProps {
3031
tabType: TabType;
3132
newItemName: string;
3233
setNewItemName: (name: string) => void;
3334
onAddNewItem: () => void;
34-
project: commonStorage.Project | null;
35+
project: storageProject.Project | null;
3536
storage: commonStorage.Storage | null;
3637
buttonLabel: string;
3738
}
@@ -65,7 +66,7 @@ export default function ClassNameComponent(props: ClassNameComponentProps): Reac
6566
return;
6667
}
6768

68-
const {ok, error} = commonStorage.isClassNameOk(props.project, newClassName);
69+
const {ok, error} = storageProject.isClassNameOk(props.project, newClassName);
6970
if (ok) {
7071
clearError();
7172
props.onAddNewItem();

src/reactComponents/FileManageModal.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import * as I18Next from 'react-i18next';
2424
import * as React from 'react';
2525
import * as commonStorage from '../storage/common_storage';
2626
import * as storageModule from '../storage/module';
27+
import * as storageProject from '../storage/project';
2728
import {EditOutlined, DeleteOutlined, CopyOutlined} from '@ant-design/icons';
2829
import ClassNameComponent from './ClassNameComponent';
2930

@@ -38,8 +39,8 @@ interface Module {
3839
interface FileManageModalProps {
3940
isOpen: boolean;
4041
onCancel: () => void;
41-
project: commonStorage.Project | null;
42-
setProject: (project: commonStorage.Project | null) => void;
42+
project: storageProject.Project | null;
43+
setProject: (project: storageProject.Project | null) => void;
4344
gotoTab: (path: string) => void;
4445
setAlertErrorMessage: (message: string) => void;
4546
storage: commonStorage.Storage | null;
@@ -107,7 +108,7 @@ export default function FileManageModal(props: FileManageModalProps) {
107108
}
108109

109110
try {
110-
const newModulePath = await commonStorage.renameModuleInProject(
111+
const newModulePath = await storageProject.renameModuleInProject(
111112
props.storage,
112113
props.project,
113114
newClassName,
@@ -138,7 +139,7 @@ export default function FileManageModal(props: FileManageModalProps) {
138139
}
139140

140141
try {
141-
const newModulePath = await commonStorage.copyModuleInProject(
142+
const newModulePath = await storageProject.copyModuleInProject(
142143
props.storage,
143144
props.project,
144145
newClassName,
@@ -180,14 +181,14 @@ export default function FileManageModal(props: FileManageModalProps) {
180181
storageModule.MODULE_TYPE_MECHANISM :
181182
storageModule.MODULE_TYPE_OPMODE;
182183

183-
await commonStorage.addModuleToProject(
184+
await storageProject.addModuleToProject(
184185
props.storage,
185186
props.project,
186187
storageType,
187188
newClassName
188189
);
189190

190-
const newModule = commonStorage.findModuleByClassName(props.project, newClassName);
191+
const newModule = storageProject.findModuleByClassName(props.project, newClassName);
191192
if (newModule) {
192193
const module: Module = {
193194
path: newModule.modulePath,
@@ -206,7 +207,7 @@ export default function FileManageModal(props: FileManageModalProps) {
206207
setModules(newModules);
207208

208209
if (props.storage && props.project) {
209-
await commonStorage.removeModuleFromProject(
210+
await storageProject.removeModuleFromProject(
210211
props.storage,
211212
props.project,
212213
record.path

src/reactComponents/Header.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* @author [email protected] (Alan Smith)
2020
*/
2121
import * as Antd from 'antd';
22-
import * as commonStorage from '../storage/common_storage';
22+
import * as storageProject from '../storage/project';
2323
import * as React from 'react';
2424
import { useTranslation } from 'react-i18next';
2525

@@ -30,7 +30,7 @@ type StringFunction = (input: string) => void;
3030
interface HeaderProps {
3131
alertErrorMessage: string;
3232
setAlertErrorMessage: StringFunction;
33-
project: commonStorage.Project | null;
33+
project: storageProject.Project | null;
3434
}
3535

3636
/** Height of the logo image in pixels. */

src/reactComponents/Menu.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import * as React from 'react';
2323
import { RcFile, UploadRequestOption } from 'rc-upload/lib/interface';
2424
import * as commonStorage from '../storage/common_storage';
2525
import * as storageNames from '../storage/names';
26+
import * as storageProject from '../storage/project';
2627
import * as createPythonFiles from '../storage/create_python_files';
2728
import * as I18Next from 'react-i18next';
2829
import {TabType } from '../types/TabType';
@@ -56,9 +57,9 @@ export interface MenuProps {
5657
setAlertErrorMessage: (message: string) => void;
5758
storage: commonStorage.Storage | null;
5859
gotoTab: (tabKey: string) => void;
59-
project: commonStorage.Project | null;
60+
project: storageProject.Project | null;
6061
openWPIToolboxSettings: () => void;
61-
setProject: (project: commonStorage.Project | null) => void;
62+
setProject: (project: storageProject.Project | null) => void;
6263
theme: string;
6364
setTheme: (theme: string) => void;
6465
}
@@ -100,7 +101,7 @@ function getDivider(): MenuItem {
100101
/**
101102
* Generates menu items for a given project.
102103
*/
103-
function getMenuItems(t: (key: string) => string, project: commonStorage.Project, currentLanguage: string): MenuItem[] {
104+
function getMenuItems(t: (key: string) => string, project: storageProject.Project, currentLanguage: string): MenuItem[] {
104105
const mechanisms: MenuItem[] = [];
105106
const opmodes: MenuItem[] = [];
106107

@@ -176,7 +177,7 @@ function getMenuItems(t: (key: string) => string, project: commonStorage.Project
176177
export function Component(props: MenuProps): React.JSX.Element {
177178
const {t, i18n} = I18Next.useTranslation();
178179

179-
const [projects, setProjects] = React.useState<commonStorage.Project[]>([]);
180+
const [projects, setProjects] = React.useState<storageProject.Project[]>([]);
180181
const [menuItems, setMenuItems] = React.useState<MenuItem[]>([]);
181182
const [fileModalOpen, setFileModalOpen] = React.useState<boolean>(false);
182183
const [projectModalOpen, setProjectModalOpen] = React.useState<boolean>(false);
@@ -191,7 +192,7 @@ export function Component(props: MenuProps): React.JSX.Element {
191192
};
192193

193194
/** Fetches the list of projects from storage. */
194-
const fetchListOfProjects = async (): Promise<commonStorage.Project[]> => {
195+
const fetchListOfProjects = async (): Promise<storageProject.Project[]> => {
195196
return new Promise(async (resolve, reject) => {
196197
if (!props.storage) {
197198
reject(new Error('Storage not available'));
@@ -252,7 +253,7 @@ export function Component(props: MenuProps): React.JSX.Element {
252253
/** Handles menu item clicks. */
253254
const handleClick: Antd.MenuProps['onClick'] = ({key}): void => {
254255
const newModule = props.project ?
255-
commonStorage.findModuleByModulePath(props.project, key) :
256+
storageProject.findModuleByModulePath(props.project, key) :
256257
null;
257258

258259
if (newModule) {
@@ -386,7 +387,7 @@ export function Component(props: MenuProps): React.JSX.Element {
386387
existingProjectNames.push(project.projectName);
387388
});
388389
const file = options.file as RcFile;
389-
const uploadProjectName = commonStorage.makeUploadProjectName(file.name, existingProjectNames);
390+
const uploadProjectName = storageProject.makeUploadProjectName(file.name, existingProjectNames);
390391
if (props.storage) {
391392
props.storage.uploadProject(uploadProjectName, dataUrl);
392393
}

0 commit comments

Comments
 (0)