R: Move LibraryItem editor to proper feature

This commit is contained in:
Ivan 2025-02-12 12:45:40 +03:00
parent c9da647226
commit fd6295f279
9 changed files with 26 additions and 29 deletions

View File

@ -13,7 +13,7 @@ const DlgCreateVersion = React.lazy(() => import('@/features/rsform/dialogs/DlgC
const DlgCstTemplate = React.lazy(() => import('@/features/rsform/dialogs/DlgCstTemplate'));
const DlgDeleteCst = React.lazy(() => import('@/features/rsform/dialogs/DlgDeleteCst'));
const DlgDeleteOperation = React.lazy(() => import('@/features/oss/dialogs/DlgDeleteOperation'));
const DlgEditEditors = React.lazy(() => import('@/features/rsform/dialogs/DlgEditEditors'));
const DlgEditEditors = React.lazy(() => import('@/features/library/dialogs/DlgEditEditors'));
const DlgEditOperation = React.lazy(() => import('@/features/oss/dialogs/DlgEditOperation'));
const DlgEditReference = React.lazy(() => import('@/features/rsform/dialogs/DlgEditReference'));
const DlgEditVersions = React.lazy(() => import('@/features/rsform/dialogs/DlgEditVersions'));

View File

@ -16,13 +16,8 @@ import {
import { Loader } from '@/components/Loader';
import { CProps } from '@/components/props';
import { ValueIcon } from '@/components/View';
import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary';
import { useSetEditors } from '@/features/library/backend/useSetEditors';
import { useSetLocation } from '@/features/library/backend/useSetLocation';
import { useSetOwner } from '@/features/library/backend/useSetOwner';
import { ILibraryItemEditor } from '@/features/library/models/library';
import { useLibrarySearchStore } from '@/features/library/stores/librarySearch';
import { useLabelUser } from '@/features/users/backend/useLabelUser';
import { InfoUsers } from '@/features/users/components/InfoUsers';
import { SelectUser } from '@/features/users/components/SelectUser';
import { UserID, UserRole } from '@/features/users/models/user';
import { useDialogsStore } from '@/stores/dialogs';
@ -31,13 +26,17 @@ import { useRoleStore } from '@/stores/role';
import { prefixes } from '@/utils/constants';
import { promptText } from '@/utils/labels';
import InfoUsers from './InfoUsers';
import { useMutatingLibrary } from '../backend/useMutatingLibrary';
import { useSetLocation } from '../backend/useSetLocation';
import { useSetOwner } from '../backend/useSetOwner';
import { ILibraryItemEditor } from '../models/library';
import { useLibrarySearchStore } from '../stores/librarySearch';
interface EditorLibraryItemProps {
controller: ILibraryItemEditor;
}
function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
export function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
const getUserLabel = useLabelUser();
const role = useRoleStore(state => state.role);
const intl = useIntl();
@ -49,7 +48,6 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
const { setOwner } = useSetOwner();
const { setLocation } = useSetLocation();
const { setEditors } = useSetEditors();
const showEditEditors = useDialogsStore(state => state.showEditEditors);
const showEditLocation = useDialogsStore(state => state.showChangeLocation);
@ -80,8 +78,8 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
function handleEditEditors() {
showEditEditors({
editors: controller.schema.editors,
onChangeEditors: newEditors => void setEditors({ itemID: controller.schema.id, editors: newEditors })
itemID: controller.schema.id,
initial: controller.schema.editors
});
}
@ -163,5 +161,3 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
</div>
);
}
export default EditorLibraryItem;

View File

@ -12,21 +12,24 @@ import { SelectUser } from '@/features/users/components/SelectUser';
import { UserID } from '@/features/users/models/user';
import { useDialogsStore } from '@/stores/dialogs';
import { useSetEditors } from '../../backend/useSetEditors';
import { LibraryItemID } from '../../models/library';
import TableUsers from './TableUsers';
export interface DlgEditEditorsProps {
editors: UserID[];
onChangeEditors: (newValue: UserID[]) => void;
itemID: LibraryItemID;
initial: UserID[];
}
function DlgEditEditors() {
const { editors, onChangeEditors } = useDialogsStore(state => state.props as DlgEditEditorsProps);
const [selected, setSelected] = useState<UserID[]>(editors);
const { initial, itemID } = useDialogsStore(state => state.props as DlgEditEditorsProps);
const { setEditors } = useSetEditors();
const [selected, setSelected] = useState<UserID[]>(initial);
const { users } = useUsers();
function handleSubmit() {
onChangeEditors(selected);
return true;
void setEditors({ itemID: itemID, editors: selected });
}
function onDeleteEditor(target: UserID) {

View File

@ -3,8 +3,7 @@
import clsx from 'clsx';
import { FlexColumn } from '@/components/Container';
// TODO: reconsider this dependency
import EditorLibraryItem from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem';
import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem';
import ToolbarRSFormCard from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard';
import { useModificationStore } from '@/stores/modification';
import { globals } from '@/utils/constants';

View File

@ -3,11 +3,11 @@
import clsx from 'clsx';
import { FlexColumn } from '@/components/Container';
import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem';
import { useModificationStore } from '@/stores/modification';
import { globals } from '@/utils/constants';
import { useRSEdit } from '../RSEditContext';
import EditorLibraryItem from './EditorLibraryItem';
import FormRSForm from './FormRSForm';
import RSFormStats from './RSFormStats';
import ToolbarRSFormCard from './ToolbarRSFormCard';

View File

@ -1,8 +1,9 @@
import clsx from 'clsx';
import { CProps } from '@/components/props';
import { useLabelUser } from '@/features/users/backend/useLabelUser';
import { UserID } from '@/features/users/models/user';
import { useLabelUser } from '../backend/useLabelUser';
import { UserID } from '../models/user';
interface InfoUsersProps extends CProps.Styling {
items: UserID[];
@ -10,7 +11,7 @@ interface InfoUsersProps extends CProps.Styling {
header?: string;
}
function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) {
export function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) {
const getUserLabel = useLabelUser();
return (
<div className={clsx('flex flex-col dense', className)} {...restProps}>
@ -22,5 +23,3 @@ function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsers
</div>
);
}
export default InfoUsers;

View File

@ -1,6 +1,7 @@
import { create } from 'zustand';
import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation';
import { DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors';
import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema';
import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation';
import { DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation';
@ -11,7 +12,6 @@ import { DlgCreateCstProps } from '@/features/rsform/dialogs/DlgCreateCst/DlgCre
import { DlgCreateVersionProps } from '@/features/rsform/dialogs/DlgCreateVersion';
import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate';
import { DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst';
import { DlgEditEditorsProps } from '@/features/rsform/dialogs/DlgEditEditors/DlgEditEditors';
import { DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference';
import { DlgEditVersionsProps } from '@/features/rsform/dialogs/DlgEditVersions/DlgEditVersions';
import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';