All: Allow using share permission with Joplin Server Business

This commit is contained in:
Laurent Cozic committed 2025-11-21 19:14:00 +00:00
1 parent 9f36b44842
commit f3409600e1
6 files changed
+15 -7

No files matched your search

+1
View File
@@ -1364,6 +1364,7 @@ packages/lib/models/utils/getCanBeCollapsedFolderIds.js
packages/lib/models/utils/getCollator.js
packages/lib/models/utils/getConflictFolderId.js
packages/lib/models/utils/isItemId.js
packages/lib/models/utils/isJoplinServerVariant.js
packages/lib/models/utils/itemCanBeEncrypted.js
packages/lib/models/utils/onFolderDrop.test.js
packages/lib/models/utils/onFolderDrop.js
+1
View File
@@ -1336,6 +1336,7 @@ packages/lib/models/utils/getCanBeCollapsedFolderIds.js
packages/lib/models/utils/getCollator.js
packages/lib/models/utils/getConflictFolderId.js
packages/lib/models/utils/isItemId.js
packages/lib/models/utils/isJoplinServerVariant.js
packages/lib/models/utils/itemCanBeEncrypted.js
packages/lib/models/utils/onFolderDrop.test.js
packages/lib/models/utils/onFolderDrop.js
@@ -20,6 +20,7 @@ import { reg } from '@joplin/lib/registry';
import useAsyncEffect, { AsyncEffectEvent } from '@joplin/lib/hooks/useAsyncEffect';
import { ChangeEvent, Dropdown, DropdownOptions, DropdownVariant } from '../Dropdown/Dropdown';
import shim from '@joplin/lib/shim';
import { SettingsRecord } from '@joplin/lib/models/Setting';
const logger = Logger.create('ShareFolderDialog');
@@ -421,10 +422,14 @@ function ShareFolderDialog(props: Props) {
}
const mapStateToProps = (state: State) => {
const getCanUseSharePermissions = (settings: Partial<SettingsRecord>) => {
return [9, 10, 11].includes(settings['sync.target']) && !!settings['sync.10.canUseSharePermissions'];
};
return {
shares: state.shareService.shares,
shareUsers: state.shareService.shareUsers,
canUseSharePermissions: state.settings['sync.target'] === 10 && state.settings['sync.10.canUseSharePermissions'],
canUseSharePermissions: getCanUseSharePermissions(state.settings),
};
};
@@ -0,0 +1,3 @@
export default (syncTargetId: number) => {
return [9, 10, 11].includes(syncTargetId);
};
+2 -1
View File
@@ -7,6 +7,7 @@ import ItemChange from '../ItemChange';
import Setting from '../Setting';
import { checkObjectHasProperties } from '@joplin/utils/object';
import isTrashableItem from '../../services/trash/isTrashableItem';
import isJoplinServerVariant from './isJoplinServerVariant';
const logger = Logger.create('models/utils/readOnly');
@@ -21,7 +22,7 @@ export interface ItemSlice {
// synchronising with Joplin Cloud or if not sharing any notebook.
export const needsShareReadOnlyChecks = (itemType: ModelType, changeSource: number, shareState: ShareState, disableReadOnlyCheck = false) => {
if (disableReadOnlyCheck) return false;
if (Setting.value('sync.target') !== 10) return false;
if (!isJoplinServerVariant(Setting.value('sync.target'))) return false;
if (changeSource === ItemChange.SOURCE_SYNC) return false;
if (!Setting.value('sync.userId')) return false;
if (![ModelType.Note, ModelType.Folder, ModelType.Resource].includes(itemType)) return false;
+2 -5
View File
@@ -1,6 +1,6 @@
import SyncTargetRegistry from '../SyncTargetRegistry';
import eventManager, { EventName } from '../eventManager';
import Setting from '../models/Setting';
import isJoplinServerVariant from '../models/utils/isJoplinServerVariant';
import { reg } from '../registry';
import Logger from '@joplin/utils/Logger';
@@ -17,10 +17,7 @@ interface UserApiResponse {
}
const userFetcher = async () => {
if (Setting.value('sync.target') !== SyncTargetRegistry.nameToId('joplinCloud')) {
return;
}
if (!isJoplinServerVariant(Setting.value('sync.target'))) return;
const syncTarget = reg.syncTarget();
const fileApi = await syncTarget.fileApi();