Merge branch 'bugfix/restoring-portal' of github.com:ONLYOFFICE/AppServer into bugfix/restoring-portal

This commit is contained in:
Tatiana Lopaeva 2023-01-25 11:09:06 +03:00
commit 2a4c1421e2
44 changed files with 955 additions and 840 deletions

View File

@ -74,7 +74,7 @@ public class RegisterInstanceWorkerService<T> : BackgroundService where T : IHos
{
try
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var registerInstanceService = scope.ServiceProvider.GetService<IRegisterInstanceManager<T>>();
@ -96,7 +96,7 @@ public class RegisterInstanceWorkerService<T> : BackgroundService where T : IHos
{
try
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var registerInstanceService = scope.ServiceProvider.GetService<IRegisterInstanceManager<T>>();

View File

@ -48,7 +48,7 @@ public class EmailSenderSink : Sink
var responce = new SendResponse(message, _senderName, default(SendResult));
try
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var m = scope.ServiceProvider.GetRequiredService<EmailSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
var result = await _sender.Send(m);

View File

@ -194,7 +194,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
}
if (request != null)
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
foreach (var action in Actions)
{
((INotifyEngineAction)scope.ServiceProvider.GetRequiredService(action)).AfterTransferRequest(request);

View File

@ -44,7 +44,7 @@ class JabberSenderSink : Sink
try
{
var result = SendResult.OK;
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var m = scope.ServiceProvider.GetRequiredService<JabberSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
if (string.IsNullOrEmpty(m.Reciever))

View File

@ -49,7 +49,7 @@ class PushSenderSink : Sink
{
var result = SendResult.OK;
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var m = scope.ServiceProvider.GetRequiredService<PushSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
if (string.IsNullOrEmpty(m.Reciever))

View File

@ -64,7 +64,7 @@ public class AWSSender : SmtpSender, IDisposable
try
{
_logger.DebugSendTo(m.TenantId, m.Reciever);
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
tenantManager.SetCurrentTenant(m.TenantId);

View File

@ -41,7 +41,7 @@ public class TelegramSender : INotifySender
public void Init(IDictionary<string, string> properties) { }
public Task<NoticeSendResult> Send(NotifyMessage m)
public async Task<NoticeSendResult> Send(NotifyMessage m)
{
if (!string.IsNullOrEmpty(m.Content))
{
@ -50,7 +50,7 @@ public class TelegramSender : INotifySender
}
try
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var TelegramHelper = scope.ServiceProvider.GetService<TelegramHelper>();
TelegramHelper.SendMessage(m);
}
@ -59,6 +59,6 @@ public class TelegramSender : INotifySender
_logger.ErrorUnexpected(e);
}
return Task.FromResult(NoticeSendResult.OK);
return await Task.FromResult(NoticeSendResult.OK);
}
}

View File

@ -45,7 +45,7 @@ class TelegramSenderSink : Sink
{
const SendResult result = SendResult.OK;
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var m = scope.ServiceProvider.GetRequiredService<TelegramSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
await _sender.Send(m);

View File

@ -116,7 +116,7 @@ public class BackupProgressItem : BaseBackupProgressItem
Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
}
using var scope = _serviceScopeProvider.CreateScope();
await using var scope = _serviceScopeProvider.CreateAsyncScope();
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
_backupStorageFactory = scope.ServiceProvider.GetService<BackupStorageFactory>();

View File

@ -111,7 +111,7 @@ public class RestoreProgressItem : BaseBackupProgressItem
try
{
using var scope = _serviceScopeProvider.CreateScope();
await using var scope = _serviceScopeProvider.CreateAsyncScope();
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
_backupStorageFactory = scope.ServiceProvider.GetService<BackupStorageFactory>();

View File

@ -102,7 +102,7 @@ public class TransferProgressItem : BaseBackupProgressItem
try
{
using var scope = _serviceScopeProvider.CreateScope();
await using var scope = _serviceScopeProvider.CreateAsyncScope();
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
_transferPortalTask = scope.ServiceProvider.GetService<TransferPortalTask>();

View File

@ -70,7 +70,7 @@ public class ReassignProgressItem : DistributedTaskProgress
protected override async Task DoJob()
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var scopeClass = scope.ServiceProvider.GetService<ReassignProgressItemScope>();
var queueWorkerRemove = scope.ServiceProvider.GetService<QueueWorkerRemove>();
var (tenantManager, coreBaseSettings, messageService, studioNotifyService, securityContext, userManager, userPhotoManager, displayUserSettingsHelper, messageTarget, options) = scopeClass;

View File

@ -67,7 +67,7 @@ public class RemoveProgressItem : DistributedTaskProgress
protected override async Task DoJob()
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var scopeClass = scope.ServiceProvider.GetService<RemoveProgressItemScope>();
var (tenantManager, coreBaseSettings, messageService, studioNotifyService, securityContext, userManager, messageTarget, webItemManagerSecurity, storageFactory, userFormatter, options) = scopeClass;
var logger = options.CreateLogger("ASC.Web");

View File

@ -57,7 +57,7 @@ public class EncryptionOperation : DistributedTaskProgress
protected override async Task DoJob()
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var scopeClass = scope.ServiceProvider.GetService<EncryptionOperationScope>();
var (log, encryptionSettingsHelper, tenantManager, notifyHelper, coreBaseSettings, storageFactoryConfig, storageFactory, configuration) = scopeClass;
notifyHelper.Init(_serverRootPath);

View File

@ -255,7 +255,7 @@ public class UploadOperationProgress : DistributedTaskProgress
protected override async Task DoJob()
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var staticUploader = scope.ServiceProvider.GetService<StaticUploader>();
var tenant = tenantManager.GetTenant(TenantId);

View File

@ -148,7 +148,7 @@ public class MigrateOperation : DistributedTaskProgress
_logger.DebugTenant(_tenantId);
Status = DistributedTaskStatus.Running;
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var tempPath = scope.ServiceProvider.GetService<TempPath>();
var scopeClass = scope.ServiceProvider.GetService<MigrateOperationScope>();
var (tenantManager, securityContext, storageFactory, options, storageSettingsHelper, settingsManager) = scopeClass;

View File

@ -53,7 +53,7 @@ internal sealed class BackupCleanerService : BackgroundService
{
_logger.DebugBackupCleanerServiceDoingWork();
using var serviceScope = _scopeFactory.CreateScope();
await using var serviceScope = _scopeFactory.CreateAsyncScope();
var registerInstanceService = serviceScope.ServiceProvider.GetService<IRegisterInstanceManager<BackupCleanerService>>();
@ -76,7 +76,7 @@ internal sealed class BackupCleanerService : BackgroundService
private async Task ExecuteBackupCleaner(CancellationToken stoppingToken)
{
using var serviceScope = _scopeFactory.CreateScope();
await using var serviceScope = _scopeFactory.CreateAsyncScope();
var backupRepository = serviceScope.ServiceProvider.GetRequiredService<BackupRepository>();
var backupStorageFactory = serviceScope.ServiceProvider.GetRequiredService<BackupStorageFactory>();

View File

@ -58,7 +58,7 @@ public sealed class BackupSchedulerService : BackgroundService
while (!stoppingToken.IsCancellationRequested)
{
using var serviceScope = _scopeFactory.CreateScope();
await using var serviceScope = _scopeFactory.CreateAsyncScope();
var registerInstanceService = serviceScope.ServiceProvider.GetService<IRegisterInstanceManager<BackupSchedulerService>>();

View File

@ -69,7 +69,7 @@ public class ElasticSearchIndexService : BackgroundService
_logger.ErrorSubscribeOnStart(e);
}
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var factoryIndexer = scope.ServiceProvider.GetService<FactoryIndexer>();
while (!factoryIndexer.CheckState(false))
@ -138,14 +138,14 @@ public class ElasticSearchIndexService : BackgroundService
IEnumerable<Type> wrappers;
using (var scope = _serviceScopeFactory.CreateScope())
await using (var scope = _serviceScopeFactory.CreateAsyncScope())
{
wrappers = scope.ServiceProvider.GetService<IEnumerable<IFactoryIndexer>>().Select(r => r.GetType()).ToList();
}
await Parallel.ForEachAsync(wrappers, async (wrapper, token) =>
{
using (var scope = _serviceScopeFactory.CreateScope())
await using (var scope = _serviceScopeFactory.CreateAsyncScope())
{
await IndexProduct((IFactoryIndexer)scope.ServiceProvider.GetRequiredService(wrapper), reindex);
}

View File

@ -92,7 +92,7 @@ public class FeedAggregatorService : FeedBaseService
try
{
var cfg = _feedSettings;
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var cache = scope.ServiceProvider.GetService<ICache>();
var baseCommonLinkUtility = scope.ServiceProvider.GetService<BaseCommonLinkUtility>();
baseCommonLinkUtility.Initialize(cfg.ServerRoot);

View File

@ -49,7 +49,7 @@ public class NotifyCleanerService : BackgroundService
while (!stoppingToken.IsCancellationRequested)
{
using var serviceScope = _scopeFactory.CreateScope();
await using var serviceScope = _scopeFactory.CreateAsyncScope();
var registerInstanceService = serviceScope.ServiceProvider.GetService<IRegisterInstanceManager<NotifyCleanerService>>();

View File

@ -62,7 +62,7 @@ public class NotifySenderService : BackgroundService
while (!stoppingToken.IsCancellationRequested)
{
using var serviceScope = _scopeFactory.CreateScope();
await using var serviceScope = _scopeFactory.CreateAsyncScope();
var registerInstanceService = serviceScope.ServiceProvider.GetService<IRegisterInstanceManager<NotifySenderService>>();

View File

@ -28,6 +28,7 @@ const InputParam = ({
isDisabled,
isValidTitle,
errorMessage,
isAutoFocussed,
}) => {
return (
<StyledInputParam>
@ -56,6 +57,7 @@ const InputParam = ({
tabIndex={2}
isDisabled={isDisabled}
hasError={!isValidTitle}
isAutoFocussed={isAutoFocussed}
/>
</FieldContainer>
</StyledInputParam>

View File

@ -96,6 +96,7 @@ const SetRoomParams = ({
isDisabled={isDisabled}
isValidTitle={isValidTitle}
errorMessage={t("Common:RequiredField")}
isAutoFocussed={true}
/>
<TagInput

View File

@ -119,10 +119,12 @@ export const initDocEditor = async (req) => {
"doceditor/" +
getLogoFromPath(config.editorConfig.customization.logo.imageDark);
config.editorConfig.customization.customer.logo =
config.editorConfig.customization.logo.url +
"doceditor/" +
getLogoFromPath(config.editorConfig.customization.customer.logo);
if (config.editorConfig.customization.customer) {
config.editorConfig.customization.customer.logo =
config.editorConfig.customization.logo.url +
"doceditor/" +
getLogoFromPath(config.editorConfig.customization.customer.logo);
}
return {
config,
@ -143,6 +145,7 @@ export const initDocEditor = async (req) => {
logoUrls,
};
} catch (err) {
console.error("initDocEditor failed", err);
let message = "";
if (typeof err === "string") message = err;
else message = err.response?.data?.error?.message || err.message;

View File

@ -283,6 +283,8 @@ public interface IFileDao<T>
Task<bool> ContainChangesAsync(T fileId, int fileVersion);
Task CopyThumbnailAsync(File<T> fromFile, File<T> toFile, int width, int height);
Task SaveThumbnailAsync(File<T> file, Stream thumbnail, int width, int height);
Task<Stream> GetThumbnailAsync(File<T> file, int width, int height);

View File

@ -24,6 +24,8 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
using Microsoft.OneDrive.Sdk;
using Document = ASC.ElasticSearch.Document;
namespace ASC.Files.Core.Data;
@ -1492,6 +1494,15 @@ internal class FileDao : AbstractDao, IFileDao<int>
private const string ThumbnailTitle = "thumb";
public async Task CopyThumbnailAsync(File<int> fromFile, File<int> toFile, int width, int height)
{
using var filesDbContext = _dbContextFactory.CreateDbContext();
var thumnailName = GetThumnailName(width, height);
await _globalStore.GetStore().CopyAsync(String.Empty, GetUniqFilePath(fromFile, thumnailName), String.Empty, GetUniqFilePath(toFile, thumnailName));
}
public Task SaveThumbnailAsync(File<int> file, Stream thumbnail, int width, int height)
{
if (file == null)

View File

@ -1551,7 +1551,7 @@ public class FileStorageService<T> //: IFileStorageService
if (currentProperies.FormFilling == null)
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
currentProperies.FormFilling = scope.ServiceProvider.GetService<FormFillingProperties>();
}

View File

@ -71,6 +71,13 @@ internal abstract class ThirdPartyProviderDao
return Task.FromResult(false);
}
public Task CopyThumbnailAsync(File<string> fromFile, File<string> toFile, int width, int height)
{
//Do nothing
return Task.CompletedTask;
}
public Task SaveThumbnailAsync(File<string> file, Stream thumbnail, int width, int height)
{
//Do nothing

View File

@ -129,7 +129,7 @@ internal class ProviderDaoBase : ThirdPartyProviderDao, IDisposable
protected async Task<File<int>> PerformCrossDaoFileCopyAsync(string fromFileId, int toFolderId, bool deleteSourceFile)
{
var fromSelector = GetSelector(fromFileId);
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
tenantManager.SetCurrentTenant(TenantID);

View File

@ -127,7 +127,7 @@ public class UsersQuotaSyncJob : DistributedTaskProgress
{
try
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var _tenantManager = scope.ServiceProvider.GetRequiredService<TenantManager>();
var _userManager = scope.ServiceProvider.GetRequiredService<UserManager>();

View File

@ -55,7 +55,7 @@ class FileDownloadOperation : ComposeFileOperation<FileDownloadOperationData<str
{
await base.RunJob(distributedTask, cancellationToken);
using var scope = ThirdPartyOperation.CreateScope();
await using var scope = ThirdPartyOperation.CreateScopeAsync();
var tenantManager = scope.ServiceProvider.GetRequiredService<TenantManager>();
var instanceCrypto = scope.ServiceProvider.GetRequiredService<InstanceCrypto>();
var daoFactory = scope.ServiceProvider.GetRequiredService<IDaoFactory>();

View File

@ -219,7 +219,7 @@ abstract class FileOperation<T, TId> : FileOperation where T : FileOperationData
//todo check files> 0 or folders > 0
CancellationToken = cancellationToken;
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var scopeClass = scope.ServiceProvider.GetService<FileOperationScope>();
var (tenantManager, daoFactory, fileSecurity, logger) = scopeClass;
tenantManager.SetCurrentTenant(CurrentTenant);
@ -263,9 +263,9 @@ abstract class FileOperation<T, TId> : FileOperation where T : FileOperationData
}
}
public IServiceScope CreateScope()
public AsyncServiceScope CreateScopeAsync()
{
var scope = _serviceProvider.CreateScope();
var scope = _serviceProvider.CreateAsyncScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
tenantManager.SetCurrentTenant(CurrentTenant);

View File

@ -1629,6 +1629,7 @@ public class EntryManager
newFile.ConvertedType = fromFile.ConvertedType;
newFile.Comment = string.Format(FilesCommonResource.CommentRevert, fromFile.ModifiedOnString);
newFile.Encrypted = fromFile.Encrypted;
newFile.ThumbnailStatus = fromFile.ThumbnailStatus;
using (var stream = await fileDao.GetFileStreamAsync(fromFile))
{
@ -1638,17 +1639,22 @@ public class EntryManager
if (fromFile.ThumbnailStatus == Thumbnail.Created)
{
foreach (var size in _thumbnailSettings.Sizes)
{
using (var thumb = await fileDao.GetThumbnailAsync(fromFile, size.Width, size.Height))
{
await fileDao.SaveThumbnailAsync(newFile, thumb, size.Width, size.Height);
var CopyThumbnailsAsync = async () => {
await using (var scope = _serviceProvider.CreateAsyncScope())
{
var _fileDao = scope.ServiceProvider.GetService<IDaoFactory>().GetFileDao<T>();
foreach (var size in _thumbnailSettings.Sizes)
{
await _fileDao.CopyThumbnailAsync(fromFile, newFile, size.Width, size.Height);
}
}
}
};
newFile.ThumbnailStatus = Thumbnail.Created;
_ = Task.Run(() => CopyThumbnailsAsync().GetAwaiter().GetResult());
}
var linkDao = _daoFactory.GetLinkDao();
await linkDao.DeleteAllLinkAsync(newFile.Id.ToString());

View File

@ -53,7 +53,7 @@ public class FileMarkerHelper<T>
{
try
{
using var scope = _serviceProvider.CreateScope();
await using var scope = _serviceProvider.CreateAsyncScope();
var fileMarker = scope.ServiceProvider.GetService<FileMarker>();
var socketManager = scope.ServiceProvider.GetService<SocketManager>();
await fileMarker.ExecMarkFileAsNewAsync(obj, socketManager);

View File

@ -233,7 +233,7 @@ public class FileTrackerHelper
try
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var helper = scope.ServiceProvider.GetRequiredService<DocumentServiceHelper>();
var tracker = scope.ServiceProvider.GetRequiredService<DocumentServiceTrackerHelper>();

View File

@ -455,7 +455,7 @@ public class FilesControllerCommon : ApiControllerBase
async Task AddProps<T>(T fileId)
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var fileStorageService = scope.ServiceProvider.GetRequiredService<FileStorageService<T>>();
var props = _mapper.Map<EntryPropertiesRequestDto, EntryProperties>(batchEntryPropertiesRequestDto.FileProperties);
if (batchEntryPropertiesRequestDto.CreateSubfolder)

View File

@ -53,7 +53,7 @@ public class Worker
List<TenantUserSettings> activeTenantsUsers;
using (var scope = _serviceScopeFactory.CreateScope())
await using (var scope = _serviceScopeFactory.CreateAsyncScope())
{
using var dbContext = scope.ServiceProvider.GetRequiredService<IDbContextFactory<WebstudioDbContext>>().CreateDbContext();
activeTenantsUsers = GetTenantsUsers(dbContext);
@ -79,7 +79,7 @@ public class Worker
try
{
using (var scope = _serviceScopeFactory.CreateScope())
await using (var scope = _serviceScopeFactory.CreateAsyncScope())
{
var tenantManager = scope.ServiceProvider.GetRequiredService<TenantManager>();
var authManager = scope.ServiceProvider.GetRequiredService<AuthManager>();

View File

@ -49,7 +49,7 @@ internal class FileConverterService<T> : BackgroundService
while (!stoppingToken.IsCancellationRequested)
{
using var serviceScope = _serviceScopeFactory.CreateScope();
await using var serviceScope = _serviceScopeFactory.CreateAsyncScope();
var registerInstanceService = serviceScope.ServiceProvider.GetService<IRegisterInstanceManager<FileConverterService<T>>>();

View File

@ -51,7 +51,7 @@ public class BuilderQueue<T>
new ParallelOptions { MaxDegreeOfParallelism = _config.MaxDegreeOfParallelism },
async (fileData, token) =>
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var commonLinkUtilitySettings = scope.ServiceProvider.GetService<CommonLinkUtilitySettings>();
commonLinkUtilitySettings.ServerUri = fileData.BaseUri;

View File

@ -81,7 +81,7 @@ public class ThumbnailBuilderService : BackgroundService
return;
}
using (var scope = _serviceScopeFactory.CreateScope())
await using (var scope = _serviceScopeFactory.CreateAsyncScope())
{
var fileDataProvider = scope.ServiceProvider.GetService<FileDataProvider>();
var premiumTenants = fileDataProvider.GetPremiumTenants();

View File

@ -114,7 +114,7 @@ public class QuotaSyncJob : DistributedTaskProgress
{
try
{
using var scope = _serviceScopeFactory.CreateScope();
await using var scope = _serviceScopeFactory.CreateAsyncScope();
var _tenantManager = scope.ServiceProvider.GetRequiredService<TenantManager>();
var _storageFactoryConfig = scope.ServiceProvider.GetRequiredService<StorageFactoryConfig>();

View File

@ -7,8 +7,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AspNetCore.HealthChecks.UI" Version="6.0.5" />
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="6.0.5" />
<PackageReference Include="AspNetCore.HealthChecks.UI" Version="7.0.0-rc2.7" />
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="7.0.0-rc2.7" />
</ItemGroup>
<ItemGroup>

1649
yarn.lock

File diff suppressed because it is too large Load Diff