Web: VDR-lifetime: added changeRoomLifetime
This commit is contained in:
parent
b8f4ec5fbb
commit
bda0c950a1
@ -27,6 +27,7 @@
|
||||
import React, { useState, useEffect, useCallback } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import { EditRoomDialog } from "../dialogs";
|
||||
import { Encoder } from "@docspace/shared/utils/encoder";
|
||||
import api from "@docspace/shared/api";
|
||||
@ -75,6 +76,7 @@ const EditRoomEvent = ({
|
||||
|
||||
defaultRoomsQuota,
|
||||
isDefaultRoomsQuotaSet,
|
||||
changeRoomLifetime,
|
||||
}) => {
|
||||
const { t } = useTranslation(["CreateEditRoomDialog", "Common", "Files"]);
|
||||
|
||||
@ -141,6 +143,7 @@ const EditRoomEvent = ({
|
||||
const isTitleChanged = roomParams?.title !== item.title;
|
||||
const isQuotaChanged = quotaLimit !== item.quotaLimit;
|
||||
const isOwnerChanged = roomParams?.roomOwner?.id !== item.createdBy.id;
|
||||
const lifetimeChanged = !isEqual(roomParams.lifetime, item.lifetime);
|
||||
|
||||
const tags = roomParams.tags.map((tag) => tag.name);
|
||||
const newTags = roomParams.tags.filter((t) => t.isNew).map((t) => t.name);
|
||||
@ -178,6 +181,12 @@ const EditRoomEvent = ({
|
||||
displayName: roomParams.roomOwner.label,
|
||||
};
|
||||
}
|
||||
|
||||
if (lifetimeChanged) {
|
||||
actions.push(changeRoomLifetime(room.id, roomParams.lifetime));
|
||||
room.lifetime = roomParams.lifetime;
|
||||
}
|
||||
|
||||
if (tags.length) {
|
||||
actions.push(addTagsToRoom(room.id, tags));
|
||||
room.tags = tags;
|
||||
@ -339,7 +348,8 @@ export default inject(
|
||||
removeLogoPaths,
|
||||
updateLogoPathsCacheBreaker,
|
||||
} = selectedFolderStore;
|
||||
const { updateCurrentFolder, changeRoomOwner } = filesActionsStore;
|
||||
const { updateCurrentFolder, changeRoomOwner, changeRoomLifetime } =
|
||||
filesActionsStore;
|
||||
const { getThirdPartyIcon } = filesSettingsStore.thirdPartyStore;
|
||||
const { setCreateRoomDialogVisible } = dialogsStore;
|
||||
const { withPaging } = settingsStore;
|
||||
@ -383,6 +393,7 @@ export default inject(
|
||||
|
||||
updateInfoPanelSelection,
|
||||
changeRoomOwner,
|
||||
changeRoomLifetime,
|
||||
};
|
||||
},
|
||||
)(observer(EditRoomEvent));
|
||||
|
@ -25,7 +25,7 @@
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
import React, { useState, useEffect, useRef, useCallback } from "react";
|
||||
|
||||
import isEqual from "lodash/isEqual";
|
||||
import TagHandler from "./handlers/TagHandler";
|
||||
import SetRoomParams from "./sub-components/SetRoomParams";
|
||||
import DialogHeader from "./sub-components/DialogHeader";
|
||||
@ -77,7 +77,7 @@ const EditRoomDialog = ({
|
||||
prevParams.icon.uploadedFile === currentParams.icon.uploadedFile) &&
|
||||
prevParams.quota === currentParams.quota &&
|
||||
prevParams.indexing === currentParams.indexing &&
|
||||
prevParams.lifetime === currentParams.lifetime
|
||||
isEqual(prevParams.lifetime, currentParams.lifetime)
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useState, useEffect } from "react";
|
||||
import styled from "styled-components";
|
||||
import { Text } from "@docspace/shared/components/text";
|
||||
import { TextInput } from "@docspace/shared/components/text-input";
|
||||
@ -46,7 +46,7 @@ const StyledFileLifetime = styled.div`
|
||||
|
||||
const FileLifetime = ({ t, roomParams, setRoomParams }) => {
|
||||
const lifetime = roomParams.lifetime ?? {
|
||||
value: "12",
|
||||
value: 12,
|
||||
deletePermanently: false,
|
||||
period: 0,
|
||||
};
|
||||
@ -94,6 +94,15 @@ const FileLifetime = ({ t, roomParams, setRoomParams }) => {
|
||||
const [selectedDate, setSelectedDate] = useState(selectedDateOption);
|
||||
const [selectedDelete, setSelectedDelete] = useState(selectedDeleteOptions);
|
||||
|
||||
useEffect(() => {
|
||||
if (!roomParams.lifetime) {
|
||||
setRoomParams({
|
||||
...roomParams,
|
||||
lifetime,
|
||||
});
|
||||
}
|
||||
}, [roomParams.lifetime]);
|
||||
|
||||
const onChange = (e) => {
|
||||
// /^(?:[1-9][0-9]*|0)$/
|
||||
if (e.target.value && !/^(?:[1-9][0-9]*)$/.test(e.target.value)) return;
|
||||
|
@ -78,6 +78,7 @@ const VirtualDataRoomBlock = ({ t, roomParams, setRoomParams }) => {
|
||||
};
|
||||
|
||||
const onChangeFileLifetime = () => {
|
||||
if (fileLifetimeChecked) setRoomParams({ ...roomParams, lifetime: null });
|
||||
setFileLifetimeChecked(!fileLifetimeChecked);
|
||||
};
|
||||
|
||||
|
@ -87,6 +87,7 @@ import {
|
||||
} from "SRC_DIR/helpers/utils";
|
||||
import { MEDIA_VIEW_URL } from "@docspace/shared/constants";
|
||||
import { openingNewTab } from "@docspace/shared/utils/openingNewTab";
|
||||
import { changeRoomLifetime } from "@docspace/shared/api/rooms";
|
||||
|
||||
class FilesActionStore {
|
||||
settingsStore;
|
||||
@ -2713,6 +2714,10 @@ class FilesActionStore {
|
||||
await deleteFilesFromRecent(fileIds);
|
||||
await refreshFiles();
|
||||
};
|
||||
|
||||
changeRoomLifetime = (roomId, lifetime) => {
|
||||
return changeRoomLifetime(roomId, lifetime);
|
||||
};
|
||||
}
|
||||
|
||||
export default FilesActionStore;
|
||||
|
@ -35,7 +35,7 @@ import {
|
||||
toUrlParams,
|
||||
} from "../../utils/common";
|
||||
import RoomsFilter from "./filter";
|
||||
import { TGetRooms } from "./types";
|
||||
import { TGetRooms, TRoomLifetime } from "./types";
|
||||
|
||||
export async function getRooms(filter: RoomsFilter, signal?: AbortSignal) {
|
||||
let params;
|
||||
@ -477,3 +477,18 @@ export function resetRoomQuota(roomIds) {
|
||||
|
||||
return request(options);
|
||||
}
|
||||
|
||||
export function changeRoomLifetime(
|
||||
roomId: string | number,
|
||||
lifetime: TRoomLifetime,
|
||||
) {
|
||||
const options = {
|
||||
method: "put",
|
||||
url: `files/rooms/${roomId}/lifetime`,
|
||||
data: {
|
||||
...lifetime,
|
||||
},
|
||||
};
|
||||
|
||||
return request(options);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user