Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
fe08fe6
Install RTK 1.0 dependency
RichDom2185 Feb 3, 2024
69f4d04
Replace store configuration to use Redux Toolkit
RichDom2185 Feb 3, 2024
ccc9073
Migrate file system actions to RTK
RichDom2185 Feb 3, 2024
7d69887
Migrate workspace actions to RTK
RichDom2185 Feb 3, 2024
28e798e
Migrate interpreter actions to RTK
RichDom2185 Feb 3, 2024
a306124
Migrate sourcecast actions to RTK
RichDom2185 Feb 3, 2024
7bdb7af
Migrate ground control actions to RTK
RichDom2185 Feb 3, 2024
1e7b168
Migrate collab editing actions to RTK
RichDom2185 Feb 3, 2024
9bda4e2
Migrate academy actions to RTK
RichDom2185 Feb 3, 2024
c3c3837
Migrate source recorder actions to RTK
RichDom2185 Feb 3, 2024
dfe5ab7
Merge branch 'master' of https://github.com/source-academy/frontend i…
RichDom2185 Feb 3, 2024
70b4520
Fix incorrect automatic merge resolution
RichDom2185 Feb 3, 2024
8b376a9
Remove unused dependency from lockfile
RichDom2185 Feb 3, 2024
29d477b
Merge branch 'master' into rtk-1
RichDom2185 Feb 5, 2024
48321f9
Merge branch 'master' of https://github.com/source-academy/frontend i…
RichDom2185 Feb 5, 2024
2f9b17b
Merge branch 'master' of https://github.com/source-academy/frontend i…
RichDom2185 Feb 5, 2024
9601a84
Fix incorrect merge conflict resolution
RichDom2185 Feb 5, 2024
2dd3290
Merge branch 'master' into rtk-1
RichDom2185 Feb 5, 2024
3f6b829
Update code comments
RichDom2185 Feb 5, 2024
caa4782
Merge branch 'master' into rtk-1
RichDom2185 Feb 5, 2024
7a4d9d4
Merge branch 'master' into rtk-1
RichDom2185 Feb 7, 2024
e7593db
Merge branch 'master' into rtk-1
RichDom2185 Feb 9, 2024
2993e72
Merge branch 'master' into rtk-1
RichDom2185 Feb 11, 2024
cc897ab
Merge branch 'master' into rtk-1
RichDom2185 Feb 12, 2024
b947410
Merge branch 'master' into rtk-1
RichDom2185 Feb 12, 2024
5e099b6
Merge branch 'master' into rtk-1
RichDom2185 Feb 13, 2024
227fa17
Merge branch 'master' of https://github.com/source-academy/frontend i…
RichDom2185 Feb 14, 2024
9d7ced3
Migrate new action creators to RTK
RichDom2185 Feb 14, 2024
eddc2ad
Merge branch 'master' into rtk-1
RichDom2185 Feb 14, 2024
df32b12
Merge branch 'master' into rtk-1
RichDom2185 Feb 18, 2024
9d93ada
Merge branch 'master' into rtk-1
RichDom2185 Feb 20, 2024
ff3d174
Merge branch 'master' into rtk-1
RichDom2185 Feb 20, 2024
e3bb37f
Merge branch 'master' into rtk-1
RichDom2185 Feb 21, 2024
c145ed8
Merge branch 'master' of https://github.com/source-academy/frontend i…
RichDom2185 Feb 21, 2024
96bc393
Restore some whitespace
RichDom2185 Feb 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"@blueprintjs/popover2": "^2.0.0",
"@blueprintjs/select": "^5.0.0",
"@octokit/rest": "^20.0.0",
"@reduxjs/toolkit": "^1.9.7",
"@sentry/browser": "^7.57.0",
"@sourceacademy/sharedb-ace": "^2.0.2",
"@sourceacademy/sling-client": "^0.1.0",
Expand Down
83 changes: 54 additions & 29 deletions src/commons/application/actions/InterpreterActions.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createAction } from '@reduxjs/toolkit';
import { SourceError, Value } from 'js-slang/dist/types';
import { action } from 'typesafe-actions';

import { WorkspaceLocation } from '../../workspace/WorkspaceTypes';
import {
Expand All @@ -16,41 +16,66 @@ import {
HANDLE_CONSOLE_LOG
} from '../types/InterpreterTypes';

export const handleConsoleLog = (workspaceLocation: WorkspaceLocation, ...logString: string[]) =>
action(HANDLE_CONSOLE_LOG, { logString, workspaceLocation });
export const handleConsoleLog = createAction(
HANDLE_CONSOLE_LOG,
(workspaceLocation: WorkspaceLocation, ...logString: string[]) => ({
payload: { logString, workspaceLocation }
})
);

export const evalInterpreterSuccess = (value: Value, workspaceLocation: WorkspaceLocation) =>
action(EVAL_INTERPRETER_SUCCESS, { type: 'result', value, workspaceLocation });
export const evalInterpreterSuccess = createAction(
EVAL_INTERPRETER_SUCCESS,
(value: Value, workspaceLocation: WorkspaceLocation) => ({
payload: { type: 'result', value, workspaceLocation }
})
);

export const evalTestcaseSuccess = (
value: Value,
workspaceLocation: WorkspaceLocation,
index: number
) => action(EVAL_TESTCASE_SUCCESS, { type: 'result', value, workspaceLocation, index });
export const evalTestcaseSuccess = createAction(
EVAL_TESTCASE_SUCCESS,
(value: Value, workspaceLocation: WorkspaceLocation, index: number) => ({
payload: { type: 'result', value, workspaceLocation, index }
})
);

export const evalTestcaseFailure = (
value: Value,
workspaceLocation: WorkspaceLocation,
index: number
) => action(EVAL_TESTCASE_FAILURE, { type: 'errors', value, workspaceLocation, index });
export const evalTestcaseFailure = createAction(
EVAL_TESTCASE_FAILURE,
(value: Value, workspaceLocation: WorkspaceLocation, index: number) => ({
payload: { type: 'errors', value, workspaceLocation, index }
})
);

export const evalInterpreterError = (errors: SourceError[], workspaceLocation: WorkspaceLocation) =>
action(EVAL_INTERPRETER_ERROR, { type: 'errors', errors, workspaceLocation });
export const evalInterpreterError = createAction(
EVAL_INTERPRETER_ERROR,
(errors: SourceError[], workspaceLocation: WorkspaceLocation) => ({
payload: { type: 'errors', errors, workspaceLocation }
})
);

export const beginInterruptExecution = (workspaceLocation: WorkspaceLocation) =>
action(BEGIN_INTERRUPT_EXECUTION, { workspaceLocation });
export const beginInterruptExecution = createAction(
BEGIN_INTERRUPT_EXECUTION,
(workspaceLocation: WorkspaceLocation) => ({ payload: { workspaceLocation } })
);

export const endInterruptExecution = (workspaceLocation: WorkspaceLocation) =>
action(END_INTERRUPT_EXECUTION, { workspaceLocation });
export const endInterruptExecution = createAction(
END_INTERRUPT_EXECUTION,
(workspaceLocation: WorkspaceLocation) => ({ payload: { workspaceLocation } })
);

export const beginDebuggerPause = (workspaceLocation: WorkspaceLocation) =>
action(BEGIN_DEBUG_PAUSE, { workspaceLocation });
export const beginDebuggerPause = createAction(
BEGIN_DEBUG_PAUSE,
(workspaceLocation: WorkspaceLocation) => ({ payload: { workspaceLocation } })
);

export const endDebuggerPause = (workspaceLocation: WorkspaceLocation) =>
action(END_DEBUG_PAUSE, { workspaceLocation });
export const endDebuggerPause = createAction(
END_DEBUG_PAUSE,
(workspaceLocation: WorkspaceLocation) => ({ payload: { workspaceLocation } })
);

export const debuggerResume = (workspaceLocation: WorkspaceLocation) =>
action(DEBUG_RESUME, { workspaceLocation });
export const debuggerResume = createAction(
DEBUG_RESUME,
(workspaceLocation: WorkspaceLocation) => ({ payload: { workspaceLocation } })
);

export const debuggerReset = (workspaceLocation: WorkspaceLocation) =>
action(DEBUG_RESET, { workspaceLocation });
export const debuggerReset = createAction(DEBUG_RESET, (workspaceLocation: WorkspaceLocation) => ({
payload: { workspaceLocation }
}));
21 changes: 13 additions & 8 deletions src/commons/collabEditing/CollabEditingActions.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
import { action } from 'typesafe-actions'; // EDITING
import { createAction } from '@reduxjs/toolkit';

import { WorkspaceLocation } from '../workspace/WorkspaceTypes';
import { SET_EDITOR_SESSION_ID, SET_SHAREDB_CONNECTED } from './CollabEditingTypes';

export const setEditorSessionId = (workspaceLocation: WorkspaceLocation, editorSessionId: string) =>
action(SET_EDITOR_SESSION_ID, {
workspaceLocation,
editorSessionId
});
export const setEditorSessionId = createAction(
SET_EDITOR_SESSION_ID,
(workspaceLocation: WorkspaceLocation, editorSessionId: string) => ({
payload: { workspaceLocation, editorSessionId }
})
);

/**
* Sets ShareDB connection status.
*
* @param workspaceLocation the workspace to be reset
* @param connected whether we are connected to ShareDB
*/
export const setSharedbConnected = (workspaceLocation: WorkspaceLocation, connected: boolean) =>
action(SET_SHAREDB_CONNECTED, { workspaceLocation, connected });
export const setSharedbConnected = createAction(
SET_SHAREDB_CONNECTED,
(workspaceLocation: WorkspaceLocation, connected: boolean) => ({
payload: { workspaceLocation, connected }
})
);
8 changes: 5 additions & 3 deletions src/commons/fileSystem/FileSystemActions.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { createAction } from '@reduxjs/toolkit';
import { FSModule } from 'browserfs/dist/node/core/FS';
import { action } from 'typesafe-actions';

import { SET_IN_BROWSER_FILE_SYSTEM } from './FileSystemTypes';

export const setInBrowserFileSystem = (inBrowserFileSystem: FSModule) =>
action(SET_IN_BROWSER_FILE_SYSTEM, { inBrowserFileSystem });
export const setInBrowserFileSystem = createAction(
SET_IN_BROWSER_FILE_SYSTEM,
(inBrowserFileSystem: FSModule) => ({ payload: { inBrowserFileSystem } })
);
Loading