Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration of folders mode with Google Drive/GitHub #2902

Draft
wants to merge 79 commits into
base: replace-gapi
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
cbf5d1f
Replace gapi.auth2
sumomomomomo Jan 26, 2024
c9efdfa
Clean up PersistenceSaga + add persistence for GIS login
sumomomomomo Jan 31, 2024
1dd2ac5
Update Google Drive Login Buttons UI + Use session for login persistence
sumomomomomo Jan 31, 2024
ebd8c76
Cleanup + Fix PersistenceSaga test
sumomomomomo Feb 5, 2024
d9e299e
Add updated yarn lockfile
sayomaki Feb 5, 2024
222d754
Fix formatting through `yarn format`
sayomaki Feb 5, 2024
46be7d6
Fix packages + use gapi.client to fetch email
sumomomomomo Feb 14, 2024
764501e
Revert googleUser placeholder
sumomomomomo Feb 14, 2024
a7e31a3
Migrate to google-oauth-gsi
sumomomomomo Feb 14, 2024
2ac10fb
Remove console.log from PersistenceSaga.tsx
sumomomomomo Feb 14, 2024
de8600e
Remove unused deps
sumomomomomo Feb 14, 2024
b4abbb8
Modify googleLogin
sumomomomomo Feb 14, 2024
aa1ef6b
Make folders from Google Drive readable
sumomomomomo Feb 19, 2024
e9b3402
Bump query-string to v8 (#2772)
RichDom2185 Feb 14, 2024
230ce76
Add updated yarn lockfile
sayomaki Feb 5, 2024
6a45e2b
Remove unused deps
sumomomomomo Feb 14, 2024
af32c59
Skeleton for Google Drive Save All button
sumomomomomo Feb 19, 2024
432d867
Make folder name appear on the bar
sumomomomomo Feb 19, 2024
e6d1c41
WIP Recursive Google Drive saving
sumomomomomo Feb 21, 2024
03d1762
Added open folders to github
linedoestrolling Feb 21, 2024
76dc9d5
fixed code
linedoestrolling Mar 3, 2024
6508dc7
Implement save all - barebones writing folders for GDrive
sumomomomomo Mar 12, 2024
d6c1ce7
github reading files wip
linedoestrolling Mar 12, 2024
8bf268a
added githubsaveinfo to filesystemtype
linedoestrolling Mar 20, 2024
a335af8
added saving all for github
linedoestrolling Mar 29, 2024
e8795fd
Revert rename of persistenceObject to persistenceFile, add dispatches…
sumomomomomo Mar 25, 2024
c2aa193
Initial fix after rebasing
sumomomomomo Mar 29, 2024
6b06445
yarn format
sumomomomomo Mar 29, 2024
ebcb2c9
Add orange/blue colours for FileSystemView
sumomomomomo Apr 2, 2024
3ff0503
Disable file context menus when saving/loading
sumomomomomo Apr 3, 2024
7c2559a
refactored githubsaveinfoarray into persistencefile and persistencefi…
linedoestrolling Apr 3, 2024
f0fc2cc
Prototype for Google Drive instant sync - create file
sumomomomomo Apr 3, 2024
ddb2e26
Add style for disabled context menu item
sumomomomomo Apr 3, 2024
096cec4
fixed fileview colour to update on saving and fixed github opening fo…
linedoestrolling Apr 3, 2024
ebe1f37
Initial commit for google drive - instantaneous deletion/file renaming
sumomomomomo Apr 3, 2024
8bd5a46
Add functionality for renaming folders instant sync Google Drive
sumomomomomo Apr 3, 2024
f3423a3
Fix Google Drive save + disable Google Drive save as when folder mode…
sumomomomomo Apr 3, 2024
913a17f
Added instantaneous syncing for adding/deleting files and folders for…
linedoestrolling Apr 7, 2024
247a376
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 7, 2024
3d3e8bf
Implement Save As for GDrive
sumomomomomo Apr 7, 2024
8754f60
added instantaneous syncing for github
linedoestrolling Apr 7, 2024
83ba7ff
fixed fileview not updating bug
linedoestrolling Apr 7, 2024
a38e838
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 7, 2024
28285c9
Change default file to /proj/program.js; Add try catch finally blocks…
sumomomomomo Apr 7, 2024
8ae36b0
Implement GDrive Save All without prior folder, fix instant rename to…
sumomomomomo Apr 8, 2024
afbab53
Add throw Error lines into Save All for GDrive
sumomomomomo Apr 8, 2024
327fdb3
github saveall without opening skeleton
linedoestrolling Apr 10, 2024
edaeb01
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 10, 2024
b293269
Merge branch 'master' into folders-public-wip
martin-henz Apr 13, 2024
0701892
GitHub top bar to reflect folder name like GDrive
sumomomomomo Apr 13, 2024
c4b1277
Clean WorkspaceReducer
sumomomomomo Apr 13, 2024
740d14e
fixed numerous bugs such as opening single file not working, made ope…
linedoestrolling Apr 13, 2024
128a34a
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 13, 2024
f82aee2
yarn format; create PersistenceHelper.ts for regex
sumomomomomo Apr 13, 2024
cac7c80
Fix yarn format
sumomomomomo Apr 13, 2024
fb238b0
Add checks to update lastSaved for playground persistenceFile on appr…
sumomomomomo Apr 13, 2024
e18cfe9
added case where user saves as into the same folder that is open
linedoestrolling Apr 13, 2024
79afb15
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 13, 2024
8ba080c
unstaged file from previous commit
linedoestrolling Apr 13, 2024
12cbe8b
Disable GDrive/Github buttons when workspaceLocation is not playground
sumomomomomo Apr 13, 2024
9b83a73
GDrive instantaneous folder delete - delete all persistenceFileArray …
sumomomomomo Apr 13, 2024
a2386df
Modify folder open for GDrive to load empty folders into BrowserFS
sumomomomomo Apr 13, 2024
efe840d
fixed single file opening, added loading toasters, made instantaneous…
linedoestrolling Apr 13, 2024
4eea489
Merge branch 'folders-public-wip' of github.com:source-academy/fronte…
linedoestrolling Apr 13, 2024
a6f46c3
prevented both google drive and github from syncing at the same time
linedoestrolling Apr 13, 2024
0312299
Remove behaviour for creating program.js; Skeleton for fixing Save/Sa…
sumomomomomo Apr 14, 2024
4f9185a
Merge branch 'master' into folders-public-wip
sumomomomomo Apr 15, 2024
0e06fb1
Clear persfilearray on logout GDrive; Fix Save As behaviour for singl…
sumomomomomo Apr 15, 2024
9ce24c8
Fixes for Save/Save as/Save all for GDrive, add in checks for instant…
sumomomomomo Apr 15, 2024
22642e1
Add some comments for PersistenceSaga
sumomomomomo Apr 15, 2024
7b375e7
Clean and comment PersistenceSaga
sumomomomomo Apr 15, 2024
82406e3
Comment out failing tests + fix FileSystemViewFileNode
sumomomomomo Apr 15, 2024
004e51f
wip unifying github behaviour with gdrive behaviour
linedoestrolling Apr 15, 2024
4598aa0
Comment out failing Github tests
sumomomomomo Apr 15, 2024
b83e64a
Cleanup unused
sumomomomomo Apr 15, 2024
55d1e03
code cleanup for everything and unifying Github ui
linedoestrolling Apr 15, 2024
629fc2c
yarn format
sumomomomomo Apr 15, 2024
506177c
Remove import
sumomomomomo Apr 15, 2024
33b4792
Remove google-oauth-gsi, put script in index.html instead
sumomomomomo May 9, 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
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
"flexboxgrid": "^6.3.1",
"flexboxgrid-helpers": "^1.1.3",
"hastscript": "^9.0.0",
"js-slang": "^1.0.69",
"java-slang": "^1.0.13",
"js-slang": "^1.0.69",
"js-yaml": "^4.1.0",
"konva": "^9.2.0",
"lodash": "^4.17.21",
Expand All @@ -60,6 +60,7 @@
"mdast-util-to-hast": "^13.0.0",
"moment": "^2.29.4",
"normalize.css": "^8.0.1",
"octokit-commit-multiple-files": "^5.0.2",
"phaser": "^3.55.2",
"query-string": "^9.0.0",
"re-resizable": "^6.9.9",
Expand Down Expand Up @@ -106,9 +107,9 @@
"@testing-library/user-event": "^14.4.3",
"@types/acorn": "^6.0.0",
"@types/gapi": "^0.0.44",
"@types/gapi.auth2": "^0.0.57",
"@types/gapi.client": "^1.0.5",
"@types/gapi.client.drive": "^3.0.14",
"@types/google.accounts": "^0.0.14",
"@types/google.picker": "^0.0.39",
"@types/jest": "^29.0.0",
"@types/js-yaml": "^4.0.5",
Expand Down
1 change: 1 addition & 0 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<script src="%PUBLIC_URL%/externalLibs/index.js"></script>
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
<script type="text/javascript" src="https://accounts.google.com/gsi/client"></script>
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
Expand Down
10 changes: 7 additions & 3 deletions src/commons/application/ApplicationTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -362,8 +362,8 @@ const getDefaultLanguageConfig = (): SALanguage => {
export const defaultLanguageConfig: SALanguage = getDefaultLanguageConfig();

export const defaultPlayground: PlaygroundState = {
githubSaveInfo: { repoName: '', filePath: '' },
languageConfig: defaultLanguageConfig
languageConfig: defaultLanguageConfig,
isFileSystemContextMenusDisabled: false
};

export const defaultEditorValue = '// Type your program in here!';
Expand Down Expand Up @@ -539,6 +539,7 @@ export const defaultSession: SessionState = {
assessmentOverviews: undefined,
agreedToResearch: undefined,
sessionId: Date.now(),
googleAccessToken: undefined,
githubOctokitObject: { octokit: undefined },
gradingOverviews: undefined,
students: undefined,
Expand Down Expand Up @@ -570,7 +571,10 @@ export const createDefaultStoriesEnv = (
});

export const defaultFileSystem: FileSystemState = {
inBrowserFileSystem: null
inBrowserFileSystem: null,
persistenceFileArray: [],
lastEditedFilePath: '',
refreshFileViewKey: 0
};

export const defaultSideContent: SideContentState = {
Expand Down
15 changes: 15 additions & 0 deletions src/commons/application/actions/SessionActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import {
FETCH_USER_AND_COURSE,
LOGIN,
LOGIN_GITHUB,
LOGIN_GOOGLE,
LOGOUT_GITHUB,
LOGOUT_GOOGLE,
NotificationConfiguration,
Expand All @@ -58,13 +59,15 @@ import {
REAUTOGRADE_ANSWER,
REAUTOGRADE_SUBMISSION,
REMOVE_GITHUB_OCTOKIT_OBJECT_AND_ACCESS_TOKEN,
REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN,
SET_ADMIN_PANEL_COURSE_REGISTRATIONS,
SET_ASSESSMENT_CONFIGURATIONS,
SET_CONFIGURABLE_NOTIFICATION_CONFIGS,
SET_COURSE_CONFIGURATION,
SET_COURSE_REGISTRATION,
SET_GITHUB_ACCESS_TOKEN,
SET_GITHUB_OCTOKIT_OBJECT,
SET_GOOGLE_ACCESS_TOKEN,
SET_GOOGLE_USER,
SET_NOTIFICATION_CONFIGS,
SET_TOKENS,
Expand Down Expand Up @@ -161,6 +164,8 @@ export const fetchStudents = createAction(FETCH_STUDENTS, () => ({ payload: {} }

export const login = createAction(LOGIN, (providerId: string) => ({ payload: providerId }));

export const loginGoogle = createAction(LOGIN_GOOGLE, () => ({ payload: {} }));

export const logoutGoogle = createAction(LOGOUT_GOOGLE, () => ({ payload: {} }));

export const loginGitHub = createAction(LOGIN_GITHUB, () => ({ payload: {} }));
Expand Down Expand Up @@ -205,6 +210,11 @@ export const setAdminPanelCourseRegistrations = createAction(

export const setGoogleUser = createAction(SET_GOOGLE_USER, (user?: string) => ({ payload: user }));

export const setGoogleAccessToken = createAction(
SET_GOOGLE_ACCESS_TOKEN,
(accessToken?: string) => ({ payload: accessToken })
);

export const setGitHubOctokitObject = createAction(
SET_GITHUB_OCTOKIT_OBJECT,
(authToken?: string) => ({ payload: generateOctokitInstance(authToken || '') })
Expand All @@ -219,6 +229,11 @@ export const removeGitHubOctokitObjectAndAccessToken = createAction(
() => ({ payload: {} })
);

export const removeGoogleUserAndAccessToken = createAction(
REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN,
() => ({ payload: {} })
);

export const submitAnswer = createAction(
SUBMIT_ANSWER,
(id: number, answer: string | number | ContestEntry[]) => ({ payload: { id, answer } })
Expand Down
13 changes: 13 additions & 0 deletions src/commons/application/reducers/SessionsReducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { defaultSession } from '../ApplicationTypes';
import { LOG_OUT } from '../types/CommonsTypes';
import {
REMOVE_GITHUB_OCTOKIT_OBJECT_AND_ACCESS_TOKEN,
REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN,
SessionState,
SET_ADMIN_PANEL_COURSE_REGISTRATIONS,
SET_ASSESSMENT_CONFIGURATIONS,
Expand All @@ -17,6 +18,7 @@ import {
SET_COURSE_REGISTRATION,
SET_GITHUB_ACCESS_TOKEN,
SET_GITHUB_OCTOKIT_OBJECT,
SET_GOOGLE_ACCESS_TOKEN,
SET_GOOGLE_USER,
SET_NOTIFICATION_CONFIGS,
SET_TOKENS,
Expand Down Expand Up @@ -54,6 +56,11 @@ export const SessionsReducer: Reducer<SessionState, SourceActionType> = (
...state,
googleUser: action.payload
};
case SET_GOOGLE_ACCESS_TOKEN:
return {
...state,
googleAccessToken: action.payload
};
case SET_TOKENS:
return {
...state,
Expand Down Expand Up @@ -156,6 +163,12 @@ export const SessionsReducer: Reducer<SessionState, SourceActionType> = (
githubOctokitObject: { octokit: undefined },
githubAccessToken: undefined
};
case REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN:
return {
...state,
googleUser: undefined,
googleAccessToken: undefined
};
default:
return state;
}
Expand Down
4 changes: 4 additions & 0 deletions src/commons/application/types/SessionTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export const FETCH_STUDENTS = 'FETCH_STUDENTS';
export const FETCH_TEAM_FORMATION_OVERVIEW = 'FETCH_TEAM_FORMATION_OVERVIEW';
export const FETCH_TEAM_FORMATION_OVERVIEWS = 'FETCH_TEAM_FORMATION_OVERVIEWS';
export const LOGIN = 'LOGIN';
export const LOGIN_GOOGLE = 'LOGIN_GOOGLE';
export const LOGOUT_GOOGLE = 'LOGOUT_GOOGLE';
export const LOGIN_GITHUB = 'LOGIN_GITHUB';
export const LOGOUT_GITHUB = 'LOGOUT_GITHUB';
Expand All @@ -42,6 +43,7 @@ export const SET_COURSE_REGISTRATION = 'SET_COURSE_REGISTRATION';
export const SET_ASSESSMENT_CONFIGURATIONS = 'SET_ASSESSMENT_CONFIGURATIONS';
export const SET_ADMIN_PANEL_COURSE_REGISTRATIONS = 'SET_ADMIN_PANEL_COURSE_REGISTRATIONS';
export const SET_GOOGLE_USER = 'SET_GOOGLE_USER';
export const SET_GOOGLE_ACCESS_TOKEN = 'SET_GOOGLE_ACCESS_TOKEN';
export const SET_GITHUB_OCTOKIT_OBJECT = 'SET_GITHUB_OCTOKIT_OBJECT';
export const SET_GITHUB_ACCESS_TOKEN = 'SET_GITHUB_ACCESS_TOKEN';
export const SUBMIT_ANSWER = 'SUBMIT_ANSWER';
Expand All @@ -52,6 +54,7 @@ export const REAUTOGRADE_SUBMISSION = 'REAUTOGRADE_SUBMISSION';
export const REAUTOGRADE_ANSWER = 'REAUTOGRADE_ANSWER';
export const REMOVE_GITHUB_OCTOKIT_OBJECT_AND_ACCESS_TOKEN =
'REMOVE_GITHUB_OCTOKIT_OBJECT_AND_ACCESS_TOKEN';
export const REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN = 'REMOVE_GOOGLE_USER_AND_ACCESS_TOKEN';
export const UNPUBLISH_GRADING = 'UNPUBLISH_GRADING';
export const UNSUBMIT_SUBMISSION = 'UNSUBMIT_SUBMISSION';
export const UPDATE_ASSESSMENT_OVERVIEWS = 'UPDATE_ASSESSMENT_OVERVIEWS';
Expand Down Expand Up @@ -134,6 +137,7 @@ export type SessionState = {
readonly gradings: Map<number, GradingQuery>;
readonly notifications: Notification[];
readonly googleUser?: string;
readonly googleAccessToken?: string;
readonly githubOctokitObject: { octokit: Octokit | undefined };
readonly githubAccessToken?: string;
readonly remoteExecutionDevices?: Device[];
Expand Down
9 changes: 8 additions & 1 deletion src/commons/assessmentWorkspace/AssessmentWorkspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,14 @@ const AssessmentWorkspace: React.FC<AssessmentWorkspaceProps> = props => {
const resetWorkspaceOptions = assertType<WorkspaceState>()({
autogradingResults: options.autogradingResults ?? [],
// TODO: Hardcoded to make use of the first editor tab. Rewrite after editor tabs are added.
editorTabs: [{ value: options.editorValue ?? '', highlightedLines: [], breakpoints: [] }],
editorTabs: [
{
value: options.editorValue ?? '',
highlightedLines: [],
breakpoints: [],
githubSaveInfo: { repoName: '', filePath: '' }
}
],
programPrependValue: options.programPrependValue ?? '',
programPostpendValue: options.programPostpendValue ?? '',
editorTestcases: options.editorTestcases ?? []
Expand Down
63 changes: 49 additions & 14 deletions src/commons/controlBar/ControlBarGoogleDriveButtons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,48 @@ const stateToIntent: { [state in PersistenceState]: Intent } = {

type Props = {
isFolderModeEnabled: boolean;
workspaceLocation: string;
loggedInAs?: string;
currentFile?: PersistenceFile;
accessToken?: string;
currPersistenceFile?: PersistenceFile;
isDirty?: boolean;
isGithubSynced?: boolean;
onClickOpen?: () => any;
onClickSave?: () => any;
onClickSaveAll?: () => any;
onClickSaveAs?: () => any;
onClickLogOut?: () => any;
onClickLogIn?: () => any;
onPopoverOpening?: () => any;
};

export const ControlBarGoogleDriveButtons: React.FC<Props> = props => {
const { isMobileBreakpoint } = useResponsive();
const state: PersistenceState = props.currentFile
const state: PersistenceState = props.currPersistenceFile
? props.isDirty
? 'DIRTY'
: 'SAVED'
: 'INACTIVE';
const isNotPlayground = props.workspaceLocation !== 'playground';
const GithubSynced = props.isGithubSynced;
const mainButton = (
<ControlButton
label={(props.currentFile && props.currentFile.name) || 'Google Drive'}
label={
(!GithubSynced && props.currPersistenceFile && props.currPersistenceFile.name) ||
'Google Drive'
}
icon={IconNames.CLOUD}
options={{ intent: stateToIntent[state] }}
isDisabled={props.isFolderModeEnabled}
options={GithubSynced ? undefined : { intent: stateToIntent[state] }}
isDisabled={isNotPlayground || GithubSynced}
/>
);
const openButton = (
<ControlButton label="Open" icon={IconNames.DOCUMENT_OPEN} onClick={props.onClickOpen} />
<ControlButton
label="Open"
icon={IconNames.DOCUMENT_OPEN}
onClick={props.onClickOpen}
isDisabled={props.accessToken ? false : true}
/>
);
const saveButton = (
<ControlButton
Expand All @@ -52,15 +67,34 @@ export const ControlBarGoogleDriveButtons: React.FC<Props> = props => {
/>
);
const saveAsButton = (
<ControlButton label="Save as" icon={IconNames.SEND_TO} onClick={props.onClickSaveAs} />
<ControlButton
label="Save As"
icon={IconNames.SEND_TO}
onClick={props.onClickSaveAs}
isDisabled={props.accessToken ? false : true}
/>
);

const saveAllButton = (
<ControlButton
label="Save All"
icon={IconNames.DOUBLE_CHEVRON_UP}
onClick={props.onClickSaveAll}
// disable if persistenceObject is not a folder
isDisabled={props.accessToken ? false : true}
/>
);
const logoutButton = props.loggedInAs && (
<Tooltip content={`Logged in as ${props.loggedInAs}`}>
<ControlButton label="Log out" icon={IconNames.LOG_OUT} onClick={props.onClickLogOut} />

const loginButton = props.accessToken ? (
<Tooltip content={`Logged in as ${props.loggedInAs}`} disabled={!props.loggedInAs}>
<ControlButton label="Log Out" icon={IconNames.LOG_OUT} onClick={props.onClickLogOut} />
</Tooltip>
) : (
<ControlButton label="Log In" icon={IconNames.LOG_IN} onClick={props.onClickLogIn} />
);
const tooltipContent = props.isFolderModeEnabled
? 'Currently unsupported in Folder mode'

const tooltipContent = isNotPlayground
? 'Currently unsupported in non playground workspaces'
: undefined;

return (
Expand All @@ -73,13 +107,14 @@ export const ControlBarGoogleDriveButtons: React.FC<Props> = props => {
{openButton}
{saveButton}
{saveAsButton}
{logoutButton}
{saveAllButton}
{loginButton}
</ButtonGroup>
</div>
}
onOpening={props.onPopoverOpening}
popoverClassName={Classes.POPOVER_DISMISS}
disabled={props.isFolderModeEnabled}
disabled={isNotPlayground || GithubSynced}
>
{mainButton}
</Popover>
Expand Down
5 changes: 3 additions & 2 deletions src/commons/controlBar/ControlBarToggleFolderModeButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const ControlBarToggleFolderModeButton: React.FC<Props> = ({
}) => {
const tooltipContent = isSessionActive
? 'Currently unsupported while a collaborative session is active'
: isPersistenceActive
: false && isPersistenceActive
? 'Currently unsupported while a persistence method is active'
: `${isFolderModeEnabled ? 'Disable' : 'Enable'} Folder mode`;
return (
Expand All @@ -31,7 +31,8 @@ export const ControlBarToggleFolderModeButton: React.FC<Props> = ({
iconColor: isFolderModeEnabled ? Colors.BLUE4 : undefined
}}
onClick={toggleFolderMode}
isDisabled={isSessionActive || isPersistenceActive}
isDisabled={false}
//isDisabled={isSessionActive || isPersistenceActive}
/>
</Tooltip>
);
Expand Down
Loading