Merge pull request #497 from ONLYOFFICE/bugfix/67778

Bugfix/67778
This commit is contained in:
Alexey Safronov 2024-06-20 18:29:22 +04:00 committed by GitHub
commit 650adb460d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 35 additions and 20 deletions

View File

@ -109,28 +109,20 @@ const ArticleBodyContent = (props) => {
path = getCategoryUrl(CategoryType.Personal); path = getCategoryUrl(CategoryType.Personal);
if (activeItemId === myFolderId && folderId === selectedFolderId)
return;
break; break;
case archiveFolderId: case archiveFolderId:
const archiveFilter = RoomsFilter.getDefault(userId); const archiveFilter = RoomsFilter.getDefault(userId);
archiveFilter.searchArea = RoomSearchArea.Archive; archiveFilter.searchArea = RoomSearchArea.Archive;
params = archiveFilter.toUrlParams(userId, true); params = archiveFilter.toUrlParams(userId, true);
path = getCategoryUrl(CategoryType.Archive); path = getCategoryUrl(CategoryType.Archive);
if (activeItemId === archiveFolderId && folderId === selectedFolderId)
return;
break; break;
case recycleBinFolderId: case recycleBinFolderId:
const recycleBinFilter = FilesFilter.getDefault(); const recycleBinFilter = FilesFilter.getDefault();
recycleBinFilter.folder = folderId; recycleBinFilter.folder = folderId;
params = recycleBinFilter.toUrlParams(); params = recycleBinFilter.toUrlParams();
path = getCategoryUrl(CategoryType.Trash); path = getCategoryUrl(CategoryType.Trash);
if (
activeItemId === recycleBinFolderId &&
folderId === selectedFolderId
)
return;
break; break;
case "accounts": case "accounts":
const accountsFilter = AccountsFilter.getDefault(); const accountsFilter = AccountsFilter.getDefault();
@ -138,7 +130,6 @@ const ArticleBodyContent = (props) => {
path = getCategoryUrl(CategoryType.Accounts); path = getCategoryUrl(CategoryType.Accounts);
withTimer = false; withTimer = false;
if (activeItemId === "accounts" && isAccounts) return;
break; break;
case "settings": case "settings":
@ -155,12 +146,11 @@ const ArticleBodyContent = (props) => {
roomsFilter.searchArea = RoomSearchArea.Active; roomsFilter.searchArea = RoomSearchArea.Active;
params = roomsFilter.toUrlParams(userId, true); params = roomsFilter.toUrlParams(userId, true);
path = getCategoryUrl(CategoryType.Shared); path = getCategoryUrl(CategoryType.Shared);
if (activeItemId === roomsFolderId && folderId === selectedFolderId)
return;
break; break;
} }
path += `?${params}`; path += `?${params}&date=${new Date().getTime()}`;
if (openingNewTab(path, e)) return; if (openingNewTab(path, e)) return;

View File

@ -1397,6 +1397,13 @@ class FilesStore {
return res; return res;
}; };
abortAllFetch = () => {
this.filesController.abort();
this.roomsController.abort();
this.filesController = new AbortController();
this.roomsController = new AbortController();
};
fetchFiles = ( fetchFiles = (
folderId, folderId,
filter, filter,
@ -1405,9 +1412,9 @@ class FilesStore {
clearSelection = true, clearSelection = true,
) => { ) => {
const { setSelectedNode } = this.treeFoldersStore; const { setSelectedNode } = this.treeFoldersStore;
if (this.clientLoadingStore.isLoading) { if (this.clientLoadingStore.isLoading) {
this.roomsController.abort(); this.abortAllFetch();
this.roomsController = new AbortController();
} }
const filterData = filter ? filter.clone() : FilesFilter.getDefault(); const filterData = filter ? filter.clone() : FilesFilter.getDefault();
@ -1728,8 +1735,7 @@ class FilesStore {
const { setSelectedNode, roomsFolderId } = this.treeFoldersStore; const { setSelectedNode, roomsFolderId } = this.treeFoldersStore;
if (this.clientLoadingStore.isLoading) { if (this.clientLoadingStore.isLoading) {
this.filesController.abort(); this.abortAllFetch();
this.filesController = new AbortController();
} }
const filterData = !!filter const filterData = !!filter

View File

@ -47,6 +47,8 @@ class UsersStore {
providers = []; providers = [];
accountsIsIsLoading = false; accountsIsIsLoading = false;
operationRunning = false; operationRunning = false;
abortController = new AbortController();
requestRunning = false;
constructor(peopleStore, settingsStore, infoPanelStore, userStore) { constructor(peopleStore, settingsStore, infoPanelStore, userStore) {
this.peopleStore = peopleStore; this.peopleStore = peopleStore;
@ -63,6 +65,12 @@ class UsersStore {
) => { ) => {
const filterData = filter ? filter.clone() : Filter.getDefault(); const filterData = filter ? filter.clone() : Filter.getDefault();
if (this.requestRunning) {
this.abortController.abort();
this.abortController = new AbortController();
}
const filterStorageItem = localStorage.getItem( const filterStorageItem = localStorage.getItem(
`PeopleFilter=${this.userStore.user?.id}`, `PeopleFilter=${this.userStore.user?.id}`,
); );
@ -88,9 +96,16 @@ class UsersStore {
if (filterData.group && filterData.group === "root") if (filterData.group && filterData.group === "root")
filterData.group = undefined; filterData.group = undefined;
const res = await api.people.getUserList(filterData); this.requestRunning = true;
const res = await api.people.getUserList(
filterData,
this.abortController.signal,
);
filterData.total = res.total; filterData.total = res.total;
this.requestRunning = false;
if (updateFilter) { if (updateFilter) {
this.peopleStore.filterStore.setFilterParams(filterData); this.peopleStore.filterStore.setFilterParams(filterData);
} }

View File

@ -40,7 +40,10 @@ import { TReqOption } from "../../utils/axiosClient";
import { EmployeeActivationStatus, ThemeKeys } from "../../enums"; import { EmployeeActivationStatus, ThemeKeys } from "../../enums";
import { TGroup } from "../groups/types"; import { TGroup } from "../groups/types";
export async function getUserList(filter = Filter.getDefault()) { export async function getUserList(
filter = Filter.getDefault(),
signal?: AbortSignal,
) {
let params = ""; let params = "";
// if (fake) { // if (fake) {
// return fakePeople.getUserList(filter); // return fakePeople.getUserList(filter);
@ -57,6 +60,7 @@ export async function getUserList(filter = Filter.getDefault()) {
const res = (await request({ const res = (await request({
method: "get", method: "get",
url: `/people${params}`, url: `/people${params}`,
signal,
})) as TGetUserList; })) as TGetUserList;
res.items = res.items.map((user) => { res.items = res.items.map((user) => {