Skip to content

Commit

Permalink
Add preference to deactivate file watcher
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexandreSi committed Oct 12, 2023
1 parent 1d845b3 commit 8e377ed
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 2 deletions.
4 changes: 4 additions & 0 deletions newIDE/app/src/MainFrame/Preferences/PreferencesContext.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ export type PreferencesValues = {|
newProjectsDefaultStorageProviderName: string,
useShortcutToClosePreviewWindow: boolean,
allowUsageOfUnicodeIdentifierNames: boolean,
watchProjectFolderFilesForLocalProjects: boolean,
editorStateByProject: { [string]: { editorTabs: EditorTabsPersistedState } },
|};

Expand Down Expand Up @@ -294,6 +295,7 @@ export type Preferences = {|
setNewProjectsDefaultFolder: (newProjectsDefaultFolder: string) => void,
setUseShortcutToClosePreviewWindow: (enabled: boolean) => void,
setAllowUsageOfUnicodeIdentifierNames: (enabled: boolean) => void,
setWatchProjectFolderFilesForLocalProjects: (enabled: boolean) => void,
getEditorStateForProject: (
projectId: string
) => ?{| editorTabs: EditorTabsPersistedState |},
Expand Down Expand Up @@ -346,6 +348,7 @@ export const initialPreferences = {
newProjectsDefaultStorageProviderName: 'Cloud',
useShortcutToClosePreviewWindow: true,
allowUsageOfUnicodeIdentifierNames: false,
watchProjectFolderFilesForLocalProjects: true,
editorStateByProject: {},
},
setLanguage: () => {},
Expand Down Expand Up @@ -405,6 +408,7 @@ export const initialPreferences = {
setNewProjectsDefaultStorageProviderName: () => {},
setUseShortcutToClosePreviewWindow: () => {},
setAllowUsageOfUnicodeIdentifierNames: () => {},
setWatchProjectFolderFilesForLocalProjects: () => {},
getEditorStateForProject: projectId => {},
setEditorStateForProject: (projectId, editorState) => {},
};
Expand Down
17 changes: 17 additions & 0 deletions newIDE/app/src/MainFrame/Preferences/PreferencesDialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const PreferencesDialog = ({ i18n, onClose }: Props) => {
setNewProjectsDefaultFolder,
setUseShortcutToClosePreviewWindow,
setAllowUsageOfUnicodeIdentifierNames,
setWatchProjectFolderFilesForLocalProjects,
} = React.useContext(PreferencesContext);

const initialUse3DEditor = React.useRef<boolean>(values.use3DEditor);
Expand Down Expand Up @@ -354,6 +355,22 @@ const PreferencesDialog = ({ i18n, onClose }: Props) => {
</Trans>
}
/>
{!!electron && (
<Toggle
onToggle={(e, check) =>
setWatchProjectFolderFilesForLocalProjects(check)
}
toggled={values.watchProjectFolderFilesForLocalProjects}
labelPosition="right"
label={
<Trans>
Watch the project folder for file changes in order to refresh
the resources used in the editor (images, 3D models, fonts,
etc.)
</Trans>
}
/>
)}
<Toggle
onToggle={(e, check) => setUse3DEditor(check)}
toggled={values.use3DEditor}
Expand Down
15 changes: 15 additions & 0 deletions newIDE/app/src/MainFrame/Preferences/PreferencesProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@ export default class PreferencesProvider extends React.Component<Props, State> {
setAllowUsageOfUnicodeIdentifierNames: this._setAllowUsageOfUnicodeIdentifierNames.bind(
this
),
setWatchProjectFolderFilesForLocalProjects: this._setWatchProjectFolderFilesForLocalProjects.bind(
this
),
getEditorStateForProject: this._getEditorStateForProject.bind(this),
setEditorStateForProject: this._setEditorStateForProject.bind(this),
};
Expand Down Expand Up @@ -843,6 +846,18 @@ export default class PreferencesProvider extends React.Component<Props, State> {
);
}

_setWatchProjectFolderFilesForLocalProjects(enable: boolean) {
this.setState(
state => ({
values: {
...state.values,
watchProjectFolderFilesForLocalProjects: enable,
},
}),
() => this._persistValuesToLocalStorage(this.state)
);
}

_getEditorStateForProject(projectId: string) {
return this.state.values.editorStateByProject[projectId];
}
Expand Down
27 changes: 25 additions & 2 deletions newIDE/app/src/MainFrame/ResourcesWatcher.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
// @flow
import * as React from 'react';
import ResourcesLoader from '../ResourcesLoader';
import PreferencesContext from './Preferences/PreferencesContext';
import { type StorageProvider, type FileMetadata } from '../ProjectsStorage';
import { type EditorTabsState } from './EditorTabs/EditorTabsHandler';

const useResourcesWatcher = (
getStorageProvider: () => StorageProvider,
fileMetadata: ?FileMetadata,
editorTabs: EditorTabsState
) => {
const {
values: { watchProjectFolderFilesForLocalProjects },
} = React.useContext(PreferencesContext);

const useResourcesWatcher = (getStorageProvider, fileMetadata, editorTabs) => {
const informEditorsResourceExternallyChanged = React.useCallback(
(resourceInfo: {| identifier: string |}) => {
ResourcesLoader.burstAllUrlsCache();
Expand All @@ -23,6 +35,12 @@ const useResourcesWatcher = (getStorageProvider, fileMetadata, editorTabs) => {
React.useEffect(
() => {
const storageProvider = getStorageProvider();
if (
storageProvider.internalName === 'LocalFile' &&
!watchProjectFolderFilesForLocalProjects
) {
return;
}
if (fileMetadata && storageProvider.setupResourcesWatcher) {
const unsubscribe = storageProvider.setupResourcesWatcher(
fileMetadata,
Expand All @@ -31,7 +49,12 @@ const useResourcesWatcher = (getStorageProvider, fileMetadata, editorTabs) => {
return unsubscribe;
}
},
[fileMetadata, informEditorsResourceExternallyChanged, getStorageProvider]
[
fileMetadata,
informEditorsResourceExternallyChanged,
getStorageProvider,
watchProjectFolderFilesForLocalProjects,
]
);
};
export default useResourcesWatcher;

0 comments on commit 8e377ed

Please sign in to comment.