Merge branch 'develop' into bugfix/accounts-filter
This commit is contained in:
commit
d8e2b2c03a
@ -89,8 +89,8 @@ public class S3ZipWriteOperator : IDataWriteOperator
|
||||
{
|
||||
var fs = _fileStream;
|
||||
_fileStream = null;
|
||||
Upload(fs);
|
||||
Computehash(fs, false);
|
||||
Upload(fs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -134,12 +134,13 @@ public class S3ZipWriteOperator : IDataWriteOperator
|
||||
_tarOutputStream.Close();
|
||||
_tarOutputStream.Dispose();
|
||||
|
||||
Computehash(_fileStream, true);
|
||||
Upload(_fileStream);
|
||||
|
||||
Task.WaitAll(_tasks.ToArray());
|
||||
|
||||
StoragePath = await _sessionHolder.FinalizeAsync(_chunkedUploadSession);
|
||||
|
||||
Computehash(_fileStream, true);
|
||||
Hash = BitConverter.ToString(_sha.Hash).Replace("-", string.Empty);
|
||||
_sha.Dispose();
|
||||
|
||||
|
@ -55,7 +55,7 @@ const withLoader = (WrappedComponent) => (Loader) => {
|
||||
|
||||
return (!isEditor && firstLoad && !isGallery) ||
|
||||
!isLoaded ||
|
||||
(isMobile && inLoad) ||
|
||||
(isMobile && inLoad && !firstLoad) ||
|
||||
(isLoadingFilesFind && !Loader) ||
|
||||
!tReady ||
|
||||
!isInit ? (
|
||||
|
@ -517,7 +517,6 @@ const ShellWrapper = inject(({ auth, backup }) => {
|
||||
setSnackbarExist,
|
||||
socketHelper,
|
||||
setTheme,
|
||||
getWhiteLabelLogoUrls,
|
||||
whiteLabelLogoUrls,
|
||||
} = settingsStore;
|
||||
const isBase = settingsStore.theme.isBase;
|
||||
|
@ -48,7 +48,7 @@ const CreateEvent = ({
|
||||
|
||||
setEventDialogVisible,
|
||||
eventDialogVisible,
|
||||
createWithoutDialog,
|
||||
keepNewFileName,
|
||||
}) => {
|
||||
const [headerTitle, setHeaderTitle] = React.useState(null);
|
||||
const [startValue, setStartValue] = React.useState("");
|
||||
@ -77,7 +77,7 @@ const CreateEvent = ({
|
||||
|
||||
if (!extension) return setEventDialogVisible(true);
|
||||
|
||||
if (!createWithoutDialog) {
|
||||
if (!keepNewFileName) {
|
||||
setEventDialogVisible(true);
|
||||
} else {
|
||||
onSave(null, title || defaultName);
|
||||
@ -289,6 +289,7 @@ export default inject(
|
||||
uploadDataStore,
|
||||
dialogsStore,
|
||||
oformsStore,
|
||||
settingsStore,
|
||||
}) => {
|
||||
const {
|
||||
setIsLoading,
|
||||
@ -321,7 +322,7 @@ export default inject(
|
||||
eventDialogVisible,
|
||||
} = dialogsStore;
|
||||
|
||||
const { createWithoutDialog } = filesStore;
|
||||
const { keepNewFileName } = settingsStore;
|
||||
|
||||
return {
|
||||
setEventDialogVisible,
|
||||
@ -352,7 +353,7 @@ export default inject(
|
||||
replaceFileStream,
|
||||
setEncryptionAccess,
|
||||
|
||||
createWithoutDialog,
|
||||
keepNewFileName,
|
||||
};
|
||||
}
|
||||
)(observer(CreateEvent));
|
||||
|
@ -22,9 +22,9 @@ const Dialog = ({
|
||||
onCancel,
|
||||
onClose,
|
||||
isCreateDialog,
|
||||
createWithoutDialog,
|
||||
setCreateWithoutDialog,
|
||||
extension,
|
||||
keepNewFileName,
|
||||
setKeepNewFileName,
|
||||
}) => {
|
||||
const [value, setValue] = useState("");
|
||||
const [isDisabled, setIsDisabled] = useState(false);
|
||||
@ -32,8 +32,8 @@ const Dialog = ({
|
||||
const [isChanged, setIsChanged] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
createWithoutDialog && isCreateDialog && setIsChecked(createWithoutDialog);
|
||||
}, [isCreateDialog, createWithoutDialog]);
|
||||
keepNewFileName && isCreateDialog && setIsChecked(keepNewFileName);
|
||||
}, [isCreateDialog, keepNewFileName]);
|
||||
|
||||
useEffect(() => {
|
||||
let input = document?.getElementById("create-text-input");
|
||||
@ -80,7 +80,7 @@ const Dialog = ({
|
||||
const onSaveAction = useCallback(
|
||||
(e) => {
|
||||
setIsDisabled(true);
|
||||
isCreateDialog && setCreateWithoutDialog(isChecked);
|
||||
isCreateDialog && setKeepNewFileName(isChecked);
|
||||
onSave && onSave(e, value);
|
||||
},
|
||||
[onSave, isCreateDialog, value, isChecked]
|
||||
@ -88,7 +88,7 @@ const Dialog = ({
|
||||
|
||||
const onCancelAction = useCallback((e) => {
|
||||
if (isChecked) {
|
||||
setCreateWithoutDialog(false);
|
||||
setKeepNewFileName(false);
|
||||
}
|
||||
onCancel && onCancel(e);
|
||||
}, []);
|
||||
@ -96,7 +96,7 @@ const Dialog = ({
|
||||
const onCloseAction = useCallback(
|
||||
(e) => {
|
||||
if (!isDisabled && isChecked) {
|
||||
setCreateWithoutDialog(false);
|
||||
setKeepNewFileName(false);
|
||||
}
|
||||
onClose && onClose(e);
|
||||
},
|
||||
@ -171,9 +171,9 @@ const Dialog = ({
|
||||
);
|
||||
};
|
||||
|
||||
export default inject(({ auth, filesStore }) => {
|
||||
export default inject(({ auth, settingsStore }) => {
|
||||
const { folderFormValidation } = auth.settingsStore;
|
||||
const { createWithoutDialog, setCreateWithoutDialog } = filesStore;
|
||||
const { keepNewFileName, setKeepNewFileName } = settingsStore;
|
||||
|
||||
return { folderFormValidation, createWithoutDialog, setCreateWithoutDialog };
|
||||
return { folderFormValidation, keepNewFileName, setKeepNewFileName };
|
||||
})(observer(Dialog));
|
||||
|
@ -79,8 +79,6 @@ const AvatarEditorDialog = (props) => {
|
||||
const avatars = await createThumbnailsAvatar(profile.id, {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 192,
|
||||
height: 192,
|
||||
tmpFile: res.data,
|
||||
});
|
||||
updateCreatedAvatar(avatars);
|
||||
|
@ -142,11 +142,11 @@ class FileRow extends Component {
|
||||
onCancelCurrentUpload = (e) => {
|
||||
//console.log("cancel upload ", e);
|
||||
const { id, action, fileId } = e.currentTarget.dataset;
|
||||
const { cancelCurrentUpload, cancelCurrentFileConversion } = this.props;
|
||||
const { t, cancelCurrentUpload, cancelCurrentFileConversion } = this.props;
|
||||
|
||||
return action === "convert"
|
||||
? cancelCurrentFileConversion(fileId)
|
||||
: cancelCurrentUpload(id);
|
||||
: cancelCurrentUpload(id, t);
|
||||
};
|
||||
|
||||
onMediaClick = (id) => {
|
||||
|
@ -224,6 +224,10 @@ const SectionFilterContent = ({
|
||||
if (subjectId) {
|
||||
newFilter.subjectId = subjectId;
|
||||
|
||||
if (subjectId === FilterKeys.me) {
|
||||
newFilter.subjectId = `${userId}`;
|
||||
}
|
||||
|
||||
newFilter.subjectFilter = subjectFilter?.toString()
|
||||
? subjectFilter.toString()
|
||||
: FilterSubject.Member;
|
||||
@ -423,11 +427,12 @@ const SectionFilterContent = ({
|
||||
|
||||
if (roomsFilter.subjectId) {
|
||||
const user = await getUser(roomsFilter.subjectId);
|
||||
const isMe = userId === roomsFilter.subjectId;
|
||||
|
||||
let label = user.displayName;
|
||||
let label = isMe ? t("Common:MeLabel") : user.displayName;
|
||||
|
||||
const subject = {
|
||||
key: roomsFilter.subjectId,
|
||||
key: isMe ? FilterKeys.me : roomsFilter.subjectId,
|
||||
group: FilterGroups.roomFilterSubject,
|
||||
label: label,
|
||||
};
|
||||
@ -786,13 +791,25 @@ const SectionFilterContent = ({
|
||||
label: t("Common:Member"),
|
||||
isHeader: true,
|
||||
withoutSeparator: true,
|
||||
withMultiItems: true,
|
||||
},
|
||||
{
|
||||
id: "filter_author-me",
|
||||
key: FilterKeys.me,
|
||||
group: FilterGroups.roomFilterSubject,
|
||||
label: t("Common:MeLabel"),
|
||||
},
|
||||
{
|
||||
id: "filter_author-other",
|
||||
key: FilterKeys.other,
|
||||
group: FilterGroups.roomFilterSubject,
|
||||
label: t("Common:OtherLabel"),
|
||||
},
|
||||
{
|
||||
id: "filter_author-user",
|
||||
key: FilterKeys.user,
|
||||
group: FilterGroups.roomFilterSubject,
|
||||
label: t("Translations:ChooseFromList"),
|
||||
isSelector: true,
|
||||
displaySelectorType: "link",
|
||||
},
|
||||
];
|
||||
|
||||
@ -978,8 +995,7 @@ const SectionFilterContent = ({
|
||||
id: "filter_author-user",
|
||||
key: FilterKeys.user,
|
||||
group: FilterGroups.filterAuthor,
|
||||
label: t("Translations:ChooseFromList"),
|
||||
isSelector: true,
|
||||
displaySelectorType: "link",
|
||||
},
|
||||
];
|
||||
|
||||
@ -987,7 +1003,6 @@ const SectionFilterContent = ({
|
||||
|
||||
filterOptions.push(...typeOptions);
|
||||
}
|
||||
|
||||
return filterOptions;
|
||||
}, [
|
||||
t,
|
||||
|
@ -28,10 +28,11 @@ const PersonalSettings = ({
|
||||
|
||||
t,
|
||||
showTitle,
|
||||
createWithoutDialog,
|
||||
setCreateWithoutDialog,
|
||||
|
||||
showAdminSettings,
|
||||
|
||||
keepNewFileName,
|
||||
setKeepNewFileName,
|
||||
}) => {
|
||||
const [isLoadingFavorites, setIsLoadingFavorites] = React.useState(false);
|
||||
const [isLoadingRecent, setIsLoadingRecent] = React.useState(false);
|
||||
@ -52,6 +53,10 @@ const PersonalSettings = ({
|
||||
setForceSave(!forceSave);
|
||||
}, [setForceSave, forceSave]);
|
||||
|
||||
const onChangeKeepNewFileName = React.useCallback(() => {
|
||||
setKeepNewFileName(!keepNewFileName);
|
||||
}, [setKeepNewFileName, keepNewFileName]);
|
||||
|
||||
const onChangeFavorites = React.useCallback(
|
||||
(e) => {
|
||||
setIsLoadingFavorites(true);
|
||||
@ -72,10 +77,6 @@ const PersonalSettings = ({
|
||||
[setIsLoadingRecent, setRecentSetting]
|
||||
);
|
||||
|
||||
const onChangeCheckbox = () => {
|
||||
setCreateWithoutDialog(!createWithoutDialog);
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledSettings
|
||||
showTitle={showTitle}
|
||||
@ -91,8 +92,8 @@ const PersonalSettings = ({
|
||||
<ToggleButton
|
||||
className="toggle-btn"
|
||||
label={t("Common:DontAskAgain")}
|
||||
onChange={onChangeCheckbox}
|
||||
isChecked={createWithoutDialog}
|
||||
onChange={onChangeKeepNewFileName}
|
||||
isChecked={keepNewFileName}
|
||||
/>
|
||||
)}
|
||||
<ToggleButton
|
||||
@ -162,55 +163,56 @@ const PersonalSettings = ({
|
||||
);
|
||||
};
|
||||
|
||||
export default inject(
|
||||
({ auth, settingsStore, treeFoldersStore, filesStore }) => {
|
||||
const {
|
||||
storeOriginalFiles,
|
||||
confirmDelete,
|
||||
updateIfExist,
|
||||
forcesave,
|
||||
export default inject(({ auth, settingsStore, treeFoldersStore }) => {
|
||||
const {
|
||||
storeOriginalFiles,
|
||||
confirmDelete,
|
||||
updateIfExist,
|
||||
forcesave,
|
||||
|
||||
setUpdateIfExist,
|
||||
setStoreOriginal,
|
||||
setUpdateIfExist,
|
||||
setStoreOriginal,
|
||||
|
||||
setConfirmDelete,
|
||||
setConfirmDelete,
|
||||
|
||||
setForceSave,
|
||||
setForceSave,
|
||||
|
||||
favoritesSection,
|
||||
recentSection,
|
||||
setFavoritesSetting,
|
||||
setRecentSetting,
|
||||
} = settingsStore;
|
||||
favoritesSection,
|
||||
recentSection,
|
||||
setFavoritesSetting,
|
||||
setRecentSetting,
|
||||
|
||||
const { myFolderId, commonFolderId } = treeFoldersStore;
|
||||
const { setCreateWithoutDialog, createWithoutDialog } = filesStore;
|
||||
keepNewFileName,
|
||||
setKeepNewFileName,
|
||||
} = settingsStore;
|
||||
|
||||
return {
|
||||
storeOriginalFiles,
|
||||
confirmDelete,
|
||||
updateIfExist,
|
||||
forceSave: forcesave,
|
||||
const { myFolderId, commonFolderId } = treeFoldersStore;
|
||||
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
isVisitor: auth.userStore.user.isVisitor,
|
||||
favoritesSection,
|
||||
recentSection,
|
||||
return {
|
||||
storeOriginalFiles,
|
||||
confirmDelete,
|
||||
updateIfExist,
|
||||
forceSave: forcesave,
|
||||
|
||||
setUpdateIfExist,
|
||||
setStoreOriginal,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
isVisitor: auth.userStore.user.isVisitor,
|
||||
favoritesSection,
|
||||
recentSection,
|
||||
|
||||
setConfirmDelete,
|
||||
setUpdateIfExist,
|
||||
setStoreOriginal,
|
||||
|
||||
setForceSave,
|
||||
setConfirmDelete,
|
||||
|
||||
setFavoritesSetting,
|
||||
setRecentSetting,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
setCreateWithoutDialog,
|
||||
createWithoutDialog,
|
||||
};
|
||||
}
|
||||
)(observer(PersonalSettings));
|
||||
setForceSave,
|
||||
|
||||
setFavoritesSetting,
|
||||
setRecentSetting,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
|
||||
keepNewFileName,
|
||||
setKeepNewFileName,
|
||||
};
|
||||
})(observer(PersonalSettings));
|
||||
|
@ -32,7 +32,6 @@ import debounce from "lodash.debounce";
|
||||
|
||||
const { FilesFilter, RoomsFilter } = api;
|
||||
const storageViewAs = localStorage.getItem("viewAs");
|
||||
const storageCheckbox = JSON.parse(localStorage.getItem("createWithoutDialog"));
|
||||
|
||||
let requestCounter = 0;
|
||||
|
||||
@ -56,7 +55,6 @@ class FilesStore {
|
||||
|
||||
isLoaded = false;
|
||||
isLoading = false;
|
||||
createWithoutDialog = storageCheckbox ? true : false;
|
||||
|
||||
viewAs =
|
||||
isMobile && storageViewAs !== "tile" ? "row" : storageViewAs || "table";
|
||||
@ -569,11 +567,6 @@ class FilesStore {
|
||||
viewAs === "tile" && this.createThumbnails();
|
||||
};
|
||||
|
||||
setCreateWithoutDialog = (checked) => {
|
||||
this.createWithoutDialog = checked;
|
||||
localStorage.setItem("createWithoutDialog", JSON.stringify(checked));
|
||||
};
|
||||
|
||||
setPageItemsLength = (pageItemsLength) => {
|
||||
this.pageItemsLength = pageItemsLength;
|
||||
};
|
||||
@ -2170,6 +2163,25 @@ class FilesStore {
|
||||
const newFilter = this.filter.clone();
|
||||
const deleteCount = (fileIds?.length ?? 0) + (folderIds?.length ?? 0);
|
||||
|
||||
if (newFilter.total <= newFilter.pageCount) {
|
||||
const files = fileIds
|
||||
? this.files.filter((x) => !fileIds.includes(x.id))
|
||||
: this.files;
|
||||
const folders = folderIds
|
||||
? this.folders.filter((x) => !folderIds.includes(x.id))
|
||||
: this.folders;
|
||||
|
||||
newFilter.total -= deleteCount;
|
||||
|
||||
runInAction(() => {
|
||||
this.setFilter(newFilter);
|
||||
this.setFiles(files);
|
||||
this.setFolders(folders);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
newFilter.startIndex =
|
||||
(newFilter.page + 1) * newFilter.pageCount - deleteCount;
|
||||
newFilter.pageCount = deleteCount;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import { makeAutoObservable, runInAction } from "mobx";
|
||||
import {
|
||||
getInvitationLinks,
|
||||
getShortenedLink,
|
||||
@ -39,10 +39,12 @@ class InviteLinksStore {
|
||||
|
||||
const links = await getInvitationLinks();
|
||||
|
||||
this.setUserLink(links.userLink);
|
||||
this.setGuestLink(links.guestLink);
|
||||
this.setAdminLink(links.adminLink);
|
||||
this.setCollaboratorLink(links.collaboratorLink);
|
||||
runInAction(() => {
|
||||
this.setUserLink(links.userLink);
|
||||
this.setGuestLink(links.guestLink);
|
||||
this.setAdminLink(links.adminLink);
|
||||
this.setCollaboratorLink(links.collaboratorLink);
|
||||
});
|
||||
};
|
||||
|
||||
getShortenedLink = async (link, forUser = false) => {
|
||||
|
@ -30,6 +30,7 @@ class SettingsStore {
|
||||
favoritesSection = null;
|
||||
recentSection = null;
|
||||
hideConfirmConvertSave = null;
|
||||
keepNewFileName = null;
|
||||
chunkUploadSize = 1024 * 1023; // 1024 * 1023; //~0.999mb
|
||||
|
||||
settingsIsLoaded = false;
|
||||
@ -149,6 +150,12 @@ class SettingsStore {
|
||||
|
||||
setStoreForcesave = (val) => (this.storeForcesave = val);
|
||||
|
||||
setKeepNewFileName = (data) => {
|
||||
api.files
|
||||
.changeKeepNewFileName(data)
|
||||
.then((res) => this.setFilesSetting("keepNewFileName", res));
|
||||
};
|
||||
|
||||
setEnableThirdParty = async (data, setting) => {
|
||||
const res = await api.files.thirdParty(data);
|
||||
this.setFilesSetting(setting, res);
|
||||
|
@ -215,7 +215,31 @@ class UploadDataStore {
|
||||
this.setUploadData(newUploadData);
|
||||
};
|
||||
|
||||
cancelCurrentUpload = (id) => {
|
||||
cancelCurrentUpload = (id, t) => {
|
||||
if (this.isParallel) {
|
||||
runInAction(() => {
|
||||
const uploadedFilesHistory = this.uploadedFilesHistory.filter(
|
||||
(el) => el.uniqueId !== id
|
||||
);
|
||||
|
||||
const canceledFile = this.files.find((f) => f.uniqueId === id);
|
||||
const newPercent = this.getFilesPercent(canceledFile.file.size);
|
||||
canceledFile.cancel = true;
|
||||
canceledFile.percent = 100;
|
||||
canceledFile.action = "uploaded";
|
||||
|
||||
this.currentUploadNumber -= 1;
|
||||
this.uploadedFilesHistory = uploadedFilesHistory;
|
||||
this.percent = newPercent;
|
||||
const nextFileIndex = this.files.findIndex((f) => !f.inAction);
|
||||
|
||||
if (nextFileIndex !== -1) {
|
||||
this.startSessionFunc(nextFileIndex, t);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const newFiles = this.files.filter((el) => el.uniqueId !== id);
|
||||
const uploadedFilesHistory = this.uploadedFilesHistory.filter(
|
||||
(el) => el.uniqueId !== id
|
||||
@ -543,7 +567,7 @@ class UploadDataStore {
|
||||
this.setConversionPercent(percent, !!error);
|
||||
|
||||
if (!file.error && file.fileInfo.version > 2) {
|
||||
this.filesStore.setHighlightFile({
|
||||
this.filesStore.setHighlightFile({
|
||||
highlightFileId: file.fileInfo.id,
|
||||
isFileHasExst: !file.fileInfo.fileExst,
|
||||
});
|
||||
|
@ -703,6 +703,11 @@ export function forceSave(val) {
|
||||
return request({ method: "put", url: "files/forcesave", data });
|
||||
}
|
||||
|
||||
export function changeKeepNewFileName(val) {
|
||||
const data = { set: val };
|
||||
return request({ method: "put", url: "files/keepnewfilename", data });
|
||||
}
|
||||
|
||||
export function thirdParty(val) {
|
||||
const data = { set: val };
|
||||
return request({ method: "put", url: "files/thirdparty", data });
|
||||
|
@ -72,7 +72,7 @@ const FilterBlock = ({
|
||||
if (groupItem.key === currentFilter.key) {
|
||||
groupItem.isSelected = true;
|
||||
}
|
||||
if (groupItem.isSelector) {
|
||||
if (groupItem.displaySelectorType) {
|
||||
groupItem.isSelected = true;
|
||||
groupItem.selectedKey = currentFilter.key;
|
||||
groupItem.selectedLabel = currentFilter.label;
|
||||
@ -87,7 +87,7 @@ const FilterBlock = ({
|
||||
} else {
|
||||
item.groupItem.forEach((groupItem, idx) => {
|
||||
groupItem.isSelected = false;
|
||||
if (groupItem.isSelector) {
|
||||
if (groupItem.displaySelectorType) {
|
||||
groupItem.selectedKey = null;
|
||||
groupItem.selectedLabel = null;
|
||||
}
|
||||
@ -216,9 +216,12 @@ const FilterBlock = ({
|
||||
items.forEach((item) => {
|
||||
if (item.group === selectedValue.group) {
|
||||
item.groupItem.forEach((groupItem) => {
|
||||
if (groupItem.key === selectedValue.key || groupItem.isSelector) {
|
||||
if (
|
||||
groupItem.key === selectedValue.key ||
|
||||
groupItem.displaySelectorType
|
||||
) {
|
||||
groupItem.isSelected = true;
|
||||
if (groupItem.isSelector) {
|
||||
if (groupItem.displaySelectorType) {
|
||||
groupItem.selectedLabel = selectedValue.label;
|
||||
groupItem.selectedKey = selectedValue.key;
|
||||
}
|
||||
|
@ -78,10 +78,17 @@ const FilterBlockItem = ({
|
||||
item.selectedKey === "me" ||
|
||||
item.selectedKey === "other" ? (
|
||||
<StyledFilterBlockItemSelector
|
||||
style={
|
||||
item?.displaySelectorType === "button"
|
||||
? {}
|
||||
: { height: "0", width: "0" }
|
||||
}
|
||||
key={item.key}
|
||||
onClick={(event) => showSelectorAction(event, isAuthor, item.group, [])}
|
||||
>
|
||||
<SelectorAddButton id="filter_add-author" />
|
||||
{item?.displaySelectorType === "button" && (
|
||||
<SelectorAddButton id="filter_add-author" />
|
||||
)}
|
||||
<StyledFilterBlockItemSelectorText noSelect={true}>
|
||||
{item.label}
|
||||
</StyledFilterBlockItemSelectorText>
|
||||
@ -177,14 +184,32 @@ const FilterBlockItem = ({
|
||||
};
|
||||
|
||||
const getTagItem = (item) => {
|
||||
const isAuthor = item.key === "user";
|
||||
|
||||
const [meItem, otherItem, userItem] = groupItem;
|
||||
|
||||
if (
|
||||
item.key === otherItem.key &&
|
||||
userItem?.isSelected &&
|
||||
!meItem?.isSelected
|
||||
)
|
||||
return;
|
||||
|
||||
return (
|
||||
<ColorTheme
|
||||
key={item.key}
|
||||
isSelected={item.isSelected}
|
||||
name={`${item.label}-${item.key}`}
|
||||
id={item.id}
|
||||
onClick={() =>
|
||||
changeFilterValueAction(item.key, item.isSelected, item.isMultiSelect)
|
||||
onClick={
|
||||
item.key === "other"
|
||||
? (event) => showSelectorAction(event, isAuthor, item.group, [])
|
||||
: () =>
|
||||
changeFilterValueAction(
|
||||
item.key,
|
||||
item.isSelected,
|
||||
item.isMultiSelect
|
||||
)
|
||||
}
|
||||
themeId={ThemeType.FilterBlockItemTag}
|
||||
>
|
||||
@ -214,7 +239,7 @@ const FilterBlockItem = ({
|
||||
withoutSeparator={withoutSeparator}
|
||||
>
|
||||
{groupItem.map((item) => {
|
||||
if (item.isSelector === true) return getSelectorItem(item);
|
||||
if (item.displaySelectorType) return getSelectorItem(item);
|
||||
if (item.isToggle === true) return getToggleItem(item);
|
||||
if (item.withOptions === true) return getWithOptionsItem(item);
|
||||
if (item.isCheckbox === true) return getCheckboxItem(item);
|
||||
|
@ -18,7 +18,7 @@ import DuplicateReactSvgUrl from "PUBLIC_DIR/images/duplicate.react.svg?url";
|
||||
import DownloadReactSvgUrl from "PUBLIC_DIR/images/download.react.svg?url";
|
||||
import RenameReactSvgUrl from "PUBLIC_DIR/images/rename.react.svg?url";
|
||||
import TrashReactSvgUrl from "PUBLIC_DIR/images/trash.react.svg?url";
|
||||
import MoveReactSvgUrl from "PUBLIC_DIR/images/duplicate.react.svg?url";
|
||||
import MoveReactSvgUrl from "PUBLIC_DIR/images/move.react.svg?url";
|
||||
|
||||
function MediaViewer({
|
||||
playlistPos,
|
||||
|
@ -79,7 +79,6 @@ class AuthStore {
|
||||
this.settingsStore.getCompanyInfoSettings()
|
||||
);
|
||||
}
|
||||
requests.push(this.settingsStore.getWhiteLabelLogoUrls());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -265,7 +265,8 @@ class SelectionArea extends React.Component {
|
||||
e.target.closest(".tile-selected") ||
|
||||
e.target.closest(".table-row-selected") ||
|
||||
e.target.closest(".row-selected") ||
|
||||
!e.target.closest("#sectionScroll")
|
||||
!e.target.closest("#sectionScroll") ||
|
||||
e.target.closest(".table-container_row-checkbox")
|
||||
)
|
||||
return;
|
||||
|
||||
@ -292,7 +293,16 @@ class SelectionArea extends React.Component {
|
||||
y: scroll.scrollTop,
|
||||
};
|
||||
|
||||
onMove && onMove({ added: [], removed: [], clear: true });
|
||||
const threshold = 10;
|
||||
const { x1, y1 } = this.areaLocation;
|
||||
|
||||
if (
|
||||
Math.abs(e.clientX - x1) >= threshold ||
|
||||
Math.abs(e.clientY - y1) >= threshold
|
||||
) {
|
||||
onMove && onMove({ added: [], removed: [], clear: true });
|
||||
}
|
||||
|
||||
this.addListeners();
|
||||
|
||||
const itemsContainer = document.getElementsByClassName(itemsContainerClass);
|
||||
|
@ -742,7 +742,7 @@ export default function ViewerPlayer(props) {
|
||||
const lasting = `${currentTime} / ${duration}`;
|
||||
|
||||
if (progress === 100 || !state.isPlaying) {
|
||||
videoRef.current.stop();
|
||||
videoRef.current.pause();
|
||||
} else {
|
||||
videoRef.current.play();
|
||||
}
|
||||
|
@ -903,18 +903,15 @@ internal class FileDao : AbstractDao, IFileDao<int>
|
||||
await RecalculateFilesCountAsync(toFolderId);
|
||||
}
|
||||
|
||||
|
||||
var parentFoldersTask =
|
||||
filesDbContext.Tree
|
||||
.Where(r => r.FolderId == toFolderId)
|
||||
.OrderByDescending(r => r.Level)
|
||||
.ToListAsync();
|
||||
|
||||
var toUpdateFile = await q.FirstOrDefaultAsync(r => r.CurrentVersion);
|
||||
|
||||
if (toUpdateFile != null)
|
||||
{
|
||||
toUpdateFile.Folders = await parentFoldersTask;
|
||||
toUpdateFile.Folders = await filesDbContext.Tree
|
||||
.Where(r => r.FolderId == toFolderId)
|
||||
.OrderByDescending(r => r.Level)
|
||||
.ToListAsync();
|
||||
|
||||
_factoryIndexer.Update(toUpdateFile, UpdateAction.Replace, w => w.Folders);
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user