Files: added room filtering by provider type
This commit is contained in:
parent
7164d4b25c
commit
8f7216d506
@ -43,6 +43,14 @@ public enum RoomFilterType
|
|||||||
ReadOnlyRoomOnly = 4,
|
ReadOnlyRoomOnly = 4,
|
||||||
CustomRoomOnly = 5,
|
CustomRoomOnly = 5,
|
||||||
FoldersOnly = 6,
|
FoldersOnly = 6,
|
||||||
|
BoxOnly = 7,
|
||||||
|
DropboxV2Only = 8,
|
||||||
|
GoogleDriveOnly = 9,
|
||||||
|
OneDriveOnly = 10,
|
||||||
|
SharePointOnly = 11,
|
||||||
|
WebDavOnly = 12,
|
||||||
|
kDriveOnly = 13,
|
||||||
|
YandexOnly = 14,
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CreateRoomRequestDto
|
public class CreateRoomRequestDto
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
//
|
//
|
||||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.htm
|
||||||
//
|
//
|
||||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||||
//
|
//
|
||||||
|
@ -1566,7 +1566,15 @@ internal class FolderDao : AbstractDao, IFolderDao<int>
|
|||||||
FilterType.PresentationsOnly or
|
FilterType.PresentationsOnly or
|
||||||
FilterType.SpreadsheetsOnly or
|
FilterType.SpreadsheetsOnly or
|
||||||
FilterType.ArchiveOnly or
|
FilterType.ArchiveOnly or
|
||||||
FilterType.MediaOnly;
|
FilterType.MediaOnly or
|
||||||
|
FilterType.BoxOnly or
|
||||||
|
FilterType.DropboxV2Only or
|
||||||
|
FilterType.GoogleDriveOnly or
|
||||||
|
FilterType.OneDriveOnly or
|
||||||
|
FilterType.SharePointOnly or
|
||||||
|
FilterType.WebDavOnly or
|
||||||
|
FilterType.kDriveOnly or
|
||||||
|
FilterType.YandexOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
private FolderType GetRoomTypeFilter(FilterType filterType)
|
private FolderType GetRoomTypeFilter(FilterType filterType)
|
||||||
|
@ -46,5 +46,13 @@ public enum FilterType
|
|||||||
[EnumMember] ReadOnlyRooms = 16,
|
[EnumMember] ReadOnlyRooms = 16,
|
||||||
[EnumMember] CustomRooms = 17,
|
[EnumMember] CustomRooms = 17,
|
||||||
[EnumMember] OFormTemplateOnly = 18,
|
[EnumMember] OFormTemplateOnly = 18,
|
||||||
[EnumMember] OFormOnly = 19,
|
[EnumMember] OFormOnly = 19,
|
||||||
|
[EnumMember] BoxOnly = 20,
|
||||||
|
[EnumMember] DropboxV2Only = 21,
|
||||||
|
[EnumMember] GoogleDriveOnly = 22,
|
||||||
|
[EnumMember] OneDriveOnly = 23,
|
||||||
|
[EnumMember] SharePointOnly = 24,
|
||||||
|
[EnumMember] WebDavOnly = 25,
|
||||||
|
[EnumMember] kDriveOnly = 26,
|
||||||
|
[EnumMember] YandexOnly = 27,
|
||||||
}
|
}
|
@ -529,4 +529,10 @@ internal class BoxFolderDao : BoxDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.GoogleDriveOnly or FilterType.DropboxV2Only or FilterType.kDriveOnly or FilterType.SharePointOnly
|
||||||
|
or FilterType.YandexOnly or FilterType.WebDavOnly or FilterType.OneDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -519,4 +519,10 @@ internal class DropboxFolderDao : DropboxDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.BoxOnly or FilterType.GoogleDriveOnly or FilterType.kDriveOnly or FilterType.SharePointOnly
|
||||||
|
or FilterType.YandexOnly or FilterType.WebDavOnly or FilterType.OneDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -520,4 +520,10 @@ internal class GoogleDriveFolderDao : GoogleDriveDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.BoxOnly or FilterType.DropboxV2Only or FilterType.kDriveOnly or FilterType.SharePointOnly
|
||||||
|
or FilterType.YandexOnly or FilterType.WebDavOnly or FilterType.OneDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -466,7 +466,7 @@ internal abstract class ThirdPartyProviderDao<T> : ThirdPartyProviderDao, IDispo
|
|||||||
return rooms;
|
return rooms;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool CheckInvalidFilter(FilterType filterType)
|
public virtual bool CheckInvalidFilter(FilterType filterType)
|
||||||
{
|
{
|
||||||
return filterType is
|
return filterType is
|
||||||
FilterType.FilesOnly or
|
FilterType.FilesOnly or
|
||||||
|
@ -532,4 +532,10 @@ internal class OneDriveFolderDao : OneDriveDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
return chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.BoxOnly or FilterType.DropboxV2Only or FilterType.kDriveOnly or FilterType.SharePointOnly
|
||||||
|
or FilterType.YandexOnly or FilterType.WebDavOnly or FilterType.GoogleDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,8 @@ internal class ProviderFolderDao : ProviderDaoBase, IFolderDao<string>
|
|||||||
var selector = GetSelector(parentId);
|
var selector = GetSelector(parentId);
|
||||||
var folderDao = selector.GetFolderDao(parentId);
|
var folderDao = selector.GetFolderDao(parentId);
|
||||||
var rooms = folderDao.GetRoomsAsync(selector.ConvertId(parentId), filterType, tags, subjectId, searchText, withSubfolders, withoutTags, excludeSubject);
|
var rooms = folderDao.GetRoomsAsync(selector.ConvertId(parentId), filterType, tags, subjectId, searchText, withSubfolders, withoutTags, excludeSubject);
|
||||||
var result = await rooms.Where(r => r != null).ToListAsync();
|
|
||||||
|
var result = await FilterByProviders(rooms.Where(r => r != null), filterType).ToListAsync();
|
||||||
|
|
||||||
await SetSharedPropertyAsync(result);
|
await SetSharedPropertyAsync(result);
|
||||||
|
|
||||||
@ -130,6 +131,8 @@ internal class ProviderFolderDao : ProviderDaoBase, IFolderDao<string>
|
|||||||
.Where(r => r != null));
|
.Where(r => r != null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result = FilterByProviders(result, filterType);
|
||||||
|
|
||||||
return result.Distinct();
|
return result.Distinct();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,4 +438,22 @@ internal class ProviderFolderDao : ProviderDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return storageMaxUploadSize;
|
return storageMaxUploadSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IAsyncEnumerable<Folder<string>> FilterByProviders(IAsyncEnumerable<Folder<string>> folders, FilterType filterType)
|
||||||
|
{
|
||||||
|
if (filterType != FilterType.WebDavOnly && filterType != FilterType.YandexOnly && filterType != FilterType.kDriveOnly)
|
||||||
|
{
|
||||||
|
return folders;
|
||||||
|
}
|
||||||
|
|
||||||
|
var providerKey = filterType switch
|
||||||
|
{
|
||||||
|
FilterType.YandexOnly => ProviderTypes.Yandex.ToStringFast(),
|
||||||
|
FilterType.WebDavOnly => ProviderTypes.WebDav.ToStringFast(),
|
||||||
|
FilterType.kDriveOnly => ProviderTypes.kDrive.ToStringFast(),
|
||||||
|
_ => throw new NotImplementedException(),
|
||||||
|
};
|
||||||
|
|
||||||
|
return folders.Where(x => providerKey == x.ProviderKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -455,4 +455,10 @@ internal class SharePointFolderDao : SharePointDaoBase, IFolderDao<string>
|
|||||||
{
|
{
|
||||||
return Task.FromResult(2L * 1024L * 1024L * 1024L);
|
return Task.FromResult(2L * 1024L * 1024L * 1024L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.BoxOnly or FilterType.DropboxV2Only or FilterType.kDriveOnly or FilterType.GoogleDriveOnly
|
||||||
|
or FilterType.YandexOnly or FilterType.WebDavOnly or FilterType.OneDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -521,4 +521,10 @@ internal class SharpBoxFolderDao : SharpBoxDaoBase, IFolderDao<string>
|
|||||||
|
|
||||||
return Task.FromResult(chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize));
|
return Task.FromResult(chunkedUpload ? storageMaxUploadSize : Math.Min(storageMaxUploadSize, _setupInfo.AvailableFileSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool CheckInvalidFilter(FilterType filterType)
|
||||||
|
{
|
||||||
|
return base.CheckInvalidFilter(filterType) || filterType is FilterType.BoxOnly or FilterType.DropboxV2Only or FilterType.SharePointOnly
|
||||||
|
or FilterType.GoogleDriveOnly or FilterType.OneDriveOnly;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -670,6 +670,14 @@ public class VirtualRoomsCommonController : ApiControllerBase
|
|||||||
RoomFilterType.ReviewRoomOnly => FilterType.ReviewRooms,
|
RoomFilterType.ReviewRoomOnly => FilterType.ReviewRooms,
|
||||||
RoomFilterType.CustomRoomOnly => FilterType.CustomRooms,
|
RoomFilterType.CustomRoomOnly => FilterType.CustomRooms,
|
||||||
RoomFilterType.FoldersOnly => FilterType.FoldersOnly,
|
RoomFilterType.FoldersOnly => FilterType.FoldersOnly,
|
||||||
|
RoomFilterType.GoogleDriveOnly => FilterType.GoogleDriveOnly,
|
||||||
|
RoomFilterType.BoxOnly => FilterType.BoxOnly,
|
||||||
|
RoomFilterType.DropboxV2Only => FilterType.DropboxV2Only,
|
||||||
|
RoomFilterType.OneDriveOnly => FilterType.OneDriveOnly,
|
||||||
|
RoomFilterType.SharePointOnly => FilterType.SharePointOnly,
|
||||||
|
RoomFilterType.YandexOnly => FilterType.YandexOnly,
|
||||||
|
RoomFilterType.kDriveOnly => FilterType.kDriveOnly,
|
||||||
|
RoomFilterType.WebDavOnly => FilterType.WebDavOnly,
|
||||||
_ => FilterType.None
|
_ => FilterType.None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user