Rollback visibility rules cleanup (#4426)

* Revert "[ACS-9369] Updated rule-migration-guide.md to include missed rule (#4420)"

This reverts commit b3e2af7f0f.

* Revert "[ACS-9369] Resolved issues where visibility rules with a single element array would log errors (#4416)"

This reverts commit 4e33f1126d.

* Revert "[ACS-8694] Cleanup of visibility rules for extensions in ACA (#4140)"

This reverts commit f1c4dcf45d.
This commit is contained in:
swapnil-verma-gl
2025-03-03 16:56:13 +05:30
committed by GitHub
parent 4e37f194ac
commit 2efea8c6d8
18 changed files with 1130 additions and 930 deletions

View File

@@ -1,142 +0,0 @@
----
Title: Legacy Rules for ACA
----
# Legacy rules
Below is a list of all unused rules that were removed with ACA 5.1.1. You may use them as a reference in case your application/extension is still dependent on them,
however we do advise that you revisit those implementations and substitute them with a different approach, since these rules will no longer be supported.
```typescript
/**
* app.selection.file.canLock
* Checks if user can lock selected file.
*/
export const canLockFile = (context: RuleContext): boolean => !isWriteLocked(context) && canUpdateSelectedNode(context);
/**
* app.selection.file.canUnlock
* Checks if user can unlock selected file.
*/
export function canUnlockFile(context: RuleContext): boolean {
const { file } = context.selection;
return isWriteLocked(context) && (context.permissions.check(file?.entry, ['delete']) || isUserWriteLockOwner(context));
}
/**
* app.selection.file.isLockOwner
* Checks if the selected file has **write** or **read-only** locks specified,
* and that current user is the owner of the lock.
*/
export const isUserWriteLockOwner = (context: RuleContext): boolean =>
isWriteLocked(context) &&
context.selection.file?.entry.properties['cm:lockOwner'] &&
context.selection.file?.entry.properties['cm:lockOwner'].id === context.profile.id;
/**
* app.selection.file.canShare
* Checks if user can share selected file.
*/
export const canShareFile = (context: RuleContext): boolean =>
[context.selection.file, navigation.isNotTrashcan(context), repository.hasQuickShareEnabled(context), !isShared(context)].every(Boolean);
/**
* app.selection.canUnshare
* Checks if user can un-share selected nodes.
*/
export function canUnshareNodes(context: RuleContext): boolean {
if (hasSelection(context)) {
return context.permissions.check(context.selection.nodes, ['delete'], {
target: 'allowableOperationsOnTarget'
});
}
return false;
}
/**
* app.selection.file.isShared
* Checks if the selected file is already shared.
*/
export function isShared(context: RuleContext): boolean {
if (navigation.isSharedFiles(context) && context.selection.file) {
return true;
}
if (navigation.isNotTrashcan(context) && hasSelection(context) && context.selection.file) {
return !!context.selection.file.entry?.properties?.['qshare:sharedId'];
}
return false;
}
/**
* app.selection.isPrivateLibrary
* Checks if user has selected a **private** library (site)
*/
export function isPrivateLibrary(context: RuleContext): boolean {
return context.selection.library?.entry?.visibility === 'PRIVATE';
}
/**
* app.selection.hasNoLibraryRole
* Checks if the selected library has no **role** property defined.
*/
export const hasNoLibraryRole = (context: RuleContext): boolean => !hasLibraryRole(context);
/**
* app.navigation.isLibraryFiles
* Checks if a **Library Files** route is activated.
*/
export function isLibraryFiles(context: RuleContext): boolean {
const { url } = context.navigation;
return url?.startsWith('/libraries');
}
/**
* app.navigation.isPersonalFiles
* Checks if a **Personal Files** route is activated.
*/
export function isPersonalFiles(context: RuleContext): boolean {
const { url } = context.navigation;
return url?.startsWith('/personal-files');
}
/**
* app.navigation.isSharedPreview
* Checks if a **Shared Preview** route is activated.
*/
export function isSharedPreview(context: RuleContext): boolean {
const { url } = context.navigation;
return url?.startsWith('/shared/preview/') || (url?.startsWith('/shared') && url?.includes('viewer:view'));
}
/**
* app.navigation.isFavoritesPreview
* Checks if a **Favorites Preview** route is activated.
*/
export function isFavoritesPreview(context: RuleContext): boolean {
const { url } = context.navigation;
return url?.startsWith('/favorites/preview/') || (url?.startsWith('/favorites') && url?.includes('viewer:view'));
}
/**
* app.navigation.isSharedFileViewer
* Checks if a **Shared File Preview** route is activated.
*/
export function isSharedFileViewer(context: RuleContext): boolean {
const { url } = context.navigation;
return url?.startsWith('/preview/s/');
}
/**
* repository.isQuickShareEnabled
* Checks if the quick share repository option is enabled or not.
*/
export const hasQuickShareEnabled = (context: RuleContext): boolean => context.repository.status.isQuickShareEnabled;
/**
* user.isAdmin
* Checks if user is admin.
*/
export const isAdmin = (context: RuleContext): boolean => context.profile.isAdmin;
```