فهرست منبع

fix(files): handling unlimited storage quota on home server

Karol Sójko 1 سال پیش
والد
کامیت
9be3517093

+ 1 - 1
packages/auth/src/Domain/UseCase/ActivatePremiumFeatures/ActivatePremiumFeatures.ts

@@ -49,7 +49,7 @@ export class ActivatePremiumFeatures implements UseCaseInterface<string> {
 
 
     await this.subscriptionSettingService.applyDefaultSubscriptionSettingsForSubscription(
     await this.subscriptionSettingService.applyDefaultSubscriptionSettingsForSubscription(
       subscription,
       subscription,
-      new Map([[SettingName.NAMES.FileUploadBytesLimit, '0']]),
+      new Map([[SettingName.NAMES.FileUploadBytesLimit, '-1']]),
     )
     )
 
 
     return Result.ok('Premium features activated.')
     return Result.ok('Premium features activated.')

+ 23 - 0
packages/files/src/Domain/UseCase/FinishUploadSession/FinishUploadSession.spec.ts

@@ -135,4 +135,27 @@ describe('FinishUploadSession', () => {
     expect(fileUploader.finishUploadSession).not.toHaveBeenCalled()
     expect(fileUploader.finishUploadSession).not.toHaveBeenCalled()
     expect(domainEventPublisher.publish).not.toHaveBeenCalled()
     expect(domainEventPublisher.publish).not.toHaveBeenCalled()
   })
   })
+
+  it('should ignore the storage quota if user has unlimited storage', async () => {
+    uploadRepository.retrieveUploadChunkResults = jest.fn().mockReturnValue([
+      { tag: '123', chunkId: 1, chunkSize: 60 },
+      { tag: '234', chunkId: 2, chunkSize: 10 },
+      { tag: '345', chunkId: 3, chunkSize: 20 },
+    ])
+
+    expect(
+      await createUseCase().execute({
+        resourceRemoteIdentifier: '2-3-4',
+        ownerUuid: '1-2-3',
+        ownerType: 'user',
+        uploadBytesLimit: -1,
+        uploadBytesUsed: 20,
+      }),
+    ).toEqual({
+      success: true,
+    })
+
+    expect(fileUploader.finishUploadSession).toHaveBeenCalled()
+    expect(domainEventPublisher.publish).toHaveBeenCalled()
+  })
 })
 })

+ 2 - 1
packages/files/src/Domain/UseCase/FinishUploadSession/FinishUploadSession.ts

@@ -43,8 +43,9 @@ export class FinishUploadSession implements UseCaseInterface {
         totalFileSize += uploadChunkResult.chunkSize
         totalFileSize += uploadChunkResult.chunkSize
       }
       }
 
 
+      const userHasUnlimitedStorage = dto.uploadBytesLimit === -1
       const remainingSpaceLeft = dto.uploadBytesLimit - dto.uploadBytesUsed
       const remainingSpaceLeft = dto.uploadBytesLimit - dto.uploadBytesUsed
-      if (remainingSpaceLeft < totalFileSize) {
+      if (!userHasUnlimitedStorage && remainingSpaceLeft < totalFileSize) {
         return {
         return {
           success: false,
           success: false,
           message: 'Could not finish upload session. You are out of space.',
           message: 'Could not finish upload session. You are out of space.',