Skip to content

Commit

Permalink
Merge pull request #49149 from nextcloud/backport/49115/stable30
Browse files Browse the repository at this point in the history
[stable30] fix(SharingEntryLink): Show default password before create if any
  • Loading branch information
nfebe authored Nov 8, 2024
2 parents f090ebd + 9d62dff commit cc1197d
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 16 deletions.
52 changes: 43 additions & 9 deletions apps/files_sharing/src/components/SharingEntryLink.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
</div>

<!-- pending actions -->
<NcActions v-if="!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)"
<NcActions v-if="!pending && pendingDataIsMissing"
class="sharing-entry__actions"
:aria-label="actionsTooltip"
menu-align="right"
Expand Down Expand Up @@ -81,10 +81,18 @@
</template>
</NcActionInput>

<NcActionCheckbox v-if="hasDefaultExpirationDate"
:checked.sync="defaultExpirationDateEnabled"
:disabled="pendingEnforcedExpirationDate || saving"
class="share-link-expiration-date-checkbox"
@change="onDefaultExpirationDateEnabledChange">
{{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Enable link expiration (enforced)') : t('files_sharing', 'Enable link expiration') }}
</NcActionCheckbox>

<!-- expiration date -->
<NcActionInput v-if="pendingExpirationDate"
<NcActionInput v-if="(hasDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled"
class="share-link-expire-date"
:label="t('files_sharing', 'Expiration date (enforced)')"
:label="pendingEnforcedExpirationDate ? t('files_sharing', 'Enter expiration date (enforced)') : t('files_sharing', 'Enter expiration date')"
:disabled="saving"
:is-native-picker="true"
:hide-label="true"
Expand Down Expand Up @@ -287,6 +295,7 @@ export default {
shareCreationComplete: false,
copySuccess: true,
copied: false,
defaultExpirationDateEnabled: false,

// Are we waiting for password/expiration date
pending: false,
Expand Down Expand Up @@ -460,14 +469,28 @@ export default {
*
* @return {boolean}
*/
pendingDataIsMissing() {
return this.pendingPassword || this.pendingEnforcedPassword || this.pendingEnforcedExpirationDate
},
pendingPassword() {
return this.config.enableLinkPasswordByDefault && this.share && !this.share.id
return this.config.enableLinkPasswordByDefault && this.isPendingShare
},
pendingEnforcedPassword() {
return this.config.enforcePasswordForPublicLink && this.share && !this.share.id
return this.config.enforcePasswordForPublicLink && this.isPendingShare
},
pendingExpirationDate() {
return this.config.isDefaultExpireDateEnforced && this.share && !this.share.id
pendingEnforcedExpirationDate() {
return this.config.isDefaultExpireDateEnforced && this.isPendingShare
},
hasDefaultExpirationDate() {
return (this.config.defaultExpirationDate instanceof Date || !isNaN(new Date(this.config.defaultExpirationDate).getTime())) && this.isPendingShare
},

isPendingShare() {
return !!(this.share && !this.share.id)
},

shareRequiresReview() {
return this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault
},

sharePolicyHasRequiredProperties() {
Expand Down Expand Up @@ -570,6 +593,12 @@ export default {
return this.share.isFileRequest
},
},
mounted() {
if (this.share) {
this.defaultExpirationDateEnabled = this.config.defaultExpirationDate instanceof Date
this.share.expireDate = this.defaultExpirationDateEnabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''
}
},

methods: {
/**
Expand All @@ -592,8 +621,10 @@ export default {
}

this.logger.debug('Missing required properties?', this.requiredPropertiesMissing)
// do not push yet if we need a password or an expiration date: show pending menu
if (this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) {
// Do not push yet if we need a password or an expiration date: show pending menu
// A share would require a review for example is default expiration date is set but not enforced, this allows
// the user to review the share and remove the expiration date if they don't want it
if ((this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) || this.shareRequiresReview) {
this.pending = true
this.shareCreationComplete = false

Expand Down Expand Up @@ -827,6 +858,9 @@ export default {
this.onPasswordSubmit()
this.onNoteSubmit()
},
onDefaultExpirationDateEnabledChange(enabled) {
this.share.expireDate = enabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''
},

/**
* Cancel the share creation
Expand Down
4 changes: 2 additions & 2 deletions dist/9141-9141.js → dist/5153-5153.js

Large diffs are not rendered by default.

File renamed without changes.
1 change: 1 addition & 0 deletions dist/5153-5153.js.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/5153-5153.js.map.license
1 change: 0 additions & 1 deletion dist/9141-9141.js.map

This file was deleted.

1 change: 0 additions & 1 deletion dist/9141-9141.js.map.license

This file was deleted.

4 changes: 2 additions & 2 deletions dist/files_sharing-files_sharing_tab.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/files_sharing-files_sharing_tab.js.map

Large diffs are not rendered by default.

0 comments on commit cc1197d

Please sign in to comment.