improved upload and create actions

This commit is contained in:
Denys Vuika
2023-02-25 15:38:09 -05:00
committed by Sheena Malhotra
parent ddb1b264b0
commit cdd95c17f8
4 changed files with 42 additions and 35 deletions

View File

@@ -91,6 +91,14 @@ export interface AcaRuleContext extends RuleContext {
*/
export const isContentServiceEnabled = (): boolean => localStorage && localStorage.getItem('contentService') !== 'false';
/**
* Checks if upload action is supported for the given context
* JSON ref: `app.isUploadSupported`
*
* @param content Rule execution context
*/
export const isUploadSupported = (context: RuleContext): boolean =>
[isContentServiceEnabled(), navigation.isPersonalFiles(context) || navigation.isLibraryContent(context), canUpload(context)].every(Boolean);
/**
* Checks if user can copy selected node.
* JSON ref: `app.canCopyNode`
@@ -227,21 +235,35 @@ export const hasSelection = (context: RuleContext): boolean => !context.selectio
* JSON ref: `app.navigation.folder.canCreate`
*/
export function canCreateFolder(context: RuleContext): boolean {
const { currentFolder } = context.navigation;
if (currentFolder) {
return context.permissions.check(currentFolder, ['create']);
if (isContentServiceEnabled() && (navigation.isPersonalFiles(context) || navigation.isLibraryContent(context))) {
const { currentFolder } = context.navigation;
if (currentFolder) {
return context.permissions.check(currentFolder, ['create']);
}
}
return false;
}
/**
* Checks if user can create a Library
* JSON ref: `app.canCreateLibrary`
*
* @param context Rule execution context
*/
export const canCreateLibrary = (context: RuleContext): boolean => [isContentServiceEnabled(), navigation.isLibraries(context)].every(Boolean);
/**
* Checks if user can upload content to current folder.
* JSON ref: `app.navigation.folder.canUpload`
*/
export function canUpload(context: RuleContext): boolean {
const { currentFolder } = context.navigation;
if (currentFolder) {
return context.permissions.check(currentFolder, ['create']);
if (isContentServiceEnabled() && (navigation.isPersonalFiles(context) || navigation.isLibraryContent(context))) {
const { currentFolder } = context.navigation;
if (currentFolder) {
return context.permissions.check(currentFolder, ['create']);
}
}
return false;
}

View File

@@ -106,6 +106,11 @@ export function isLibraries(context: RuleContext): boolean {
return url && (url.endsWith('/libraries') || url.startsWith('/search-libraries'));
}
export function isLibraryContent(context: RuleContext): boolean {
const { url } = context.navigation;
return url && (url.endsWith('/libraries') || url.includes('/libraries/') || url.startsWith('/search-libraries'));
}
/**
* Checks if the activated route is neither **Libraries** nor **Library Search Results**.
* JSON ref: `app.navigation.isNotLibraries`