From 46308e96f36486dd9dd55a41c1979d7f6cafacfe Mon Sep 17 00:00:00 2001
From: fenn-cs <fenn25.fn@gmail.com>
Date: Mon, 16 Oct 2023 17:35:35 +0100
Subject: Fix has expiration date logic

Current expiration date errorneously assumes that `defaultExpirationDate`
applies to all kinds of shares. But it only really applies to public shares despite
its name.

This commit, fixes that by paring expiration dates with the correct share types during
new share initialization and simplifying the `hasExpirationDate` (check) property.

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
---
 apps/files_sharing/src/views/SharingDetailsTab.vue | 27 ++++++++++------------
 1 file changed, 12 insertions(+), 15 deletions(-)

(limited to 'apps/files_sharing')

diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue
index de52dda618b..c5ef4e96739 100644
--- a/apps/files_sharing/src/views/SharingDetailsTab.vue
+++ b/apps/files_sharing/src/views/SharingDetailsTab.vue
@@ -385,19 +385,7 @@ export default {
 		 */
 		hasExpirationDate: {
 			get() {
-				const isDefaultExpireDateEnabled = this.config.isDefaultExpireDateEnabled
-				const hasExistingExpirationDate = !!this.share.expireDate || isDefaultExpireDateEnabled
-				const isDefaultInternalExpireDateEnabled = this.config.isDefaultInternalExpireDateEnabled
-				const isDefaultRemoteExpireDateEnabled = this.config.isDefaultRemoteExpireDateEnabled
-				if (this.isPublicShare) {
-					return hasExistingExpirationDate
-				}
-
-				if (this.isRemoteShare) {
-					return hasExistingExpirationDate || isDefaultRemoteExpireDateEnabled
-				}
-
-				return hasExistingExpirationDate || isDefaultInternalExpireDateEnabled
+				return this.isValidShareAttribute(this.share.expireDate)
 			},
 			set(enabled) {
 				this.share.expireDate = enabled
@@ -715,10 +703,19 @@ export default {
 					this.share.newPassword = await GeneratePassword()
 					this.advancedSectionAccordionExpanded = true
 				}
-				if (this.hasExpirationDate) {
-					this.share.expireDate = this.defaultExpiryDate
+				/* Set default expiration dates if configured */
+				if (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {
+					this.share.expireDate = this.config.defaultExpirationDate.toDateString()
+				} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {
+					this.share.expireDate = this.config.defaultRemoteExpirationDateString.toDateString()
+				} else if (this.config.isDefaultInternalExpireDateEnabled) {
+					this.share.expireDate = this.config.defaultInternalExpirationDate.toDateString()
+				}
+
+				if (this.isValidShareAttribute(this.share.expireDate)) {
 					this.advancedSectionAccordionExpanded = true
 				}
+
 				return
 			}
 
-- 
cgit v1.2.3