frontend icon indicating copy to clipboard operation
frontend copied to clipboard

Side content redux2

Open RichDom2185 opened this issue 1 year ago • 1 comments

The point of this proof of concept was to move to using Redux Toolkit. The main goal was to make the reducers, actions and sagas as workspace agnostic as possible.

Common to all workspaces is a set of state and actions. Under src/commons/redux/workspaces/WorkspaceRedux.ts, we have createWorkspaceSlice, which is used to create a new slice for each workspace. You are supposed to tag on any extra reducers you need using the reducers parameter. Your custom reducers are responsible for the state you define, but the rest gets handled automatically by the default set of reducers.

There is however more than 1 base type of workspace. In the process of working on this, I identified the PlaygroundWorkspace and AssessmentWorkspace types (both of which could do with better names). Both of these extend the idea as above: provide a base set of reducers and actions, but the user is free to add anything else they require.

The other main change that was made was to refactor out the Repl and Editor objects. Though each workspace has to make use of both, I thought it better to group the actions and state related to these two objects.

The separation of the state allows us to make use of hooks: every component need only useWorkspace, useRepl and useEditor. These hooks automatically bind action creators to the specific workspaceLocation.

I think a minor side thing here is that I changed the frontend to load its own tabs

RichDom2185 avatar Mar 25 '24 09:03 RichDom2185

@leeyi45 could you help outline the changes you made on this branch in the PR description? Thanks!

RichDom2185 avatar Mar 25 '24 09:03 RichDom2185