aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/src/components/SharingEntryLink.vue
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2022-11-16 12:19:35 +0100
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-11-16 17:19:58 +0100
commit2b4ce7b95d6c009695d7f2ea02da424b538807a4 (patch)
tree426454b77042c964d04e3f0a52e4229c08730b09 /apps/files_sharing/src/components/SharingEntryLink.vue
parent3d77e386cd18a2e390d66118927cc75be0ef909c (diff)
downloadnextcloud-server-2b4ce7b95d6c009695d7f2ea02da424b538807a4.tar.gz
nextcloud-server-2b4ce7b95d6c009695d7f2ea02da424b538807a4.zip
Fix date handling and saving
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/files_sharing/src/components/SharingEntryLink.vue')
-rw-r--r--apps/files_sharing/src/components/SharingEntryLink.vue50
1 files changed, 29 insertions, 21 deletions
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue
index e1118e680c0..207db7d8514 100644
--- a/apps/files_sharing/src/components/SharingEntryLink.vue
+++ b/apps/files_sharing/src/components/SharingEntryLink.vue
@@ -97,14 +97,15 @@
{{ t('files_sharing', 'Expiration date (enforced)') }}
</NcActionText>
<NcActionInput v-if="pendingExpirationDate"
- v-model="share.expireDate"
class="share-link-expire-date"
:disabled="saving"
:is-native-picker="true"
:hide-label="true"
+ :value="new Date(share.expireDate)"
type="date"
:min="dateTomorrow"
- :max="dateMaxEnforced">
+ :max="dateMaxEnforced"
+ @input="onExpirationChange">
<!-- let's not submit when picked, the user
might want to still edit or copy the password -->
{{ t('files_sharing', 'Enter a date') }}
@@ -218,7 +219,7 @@
class="share-link-expire-date"
:class="{ error: errors.expireDate}"
:disabled="saving"
- :value="share.expireDate"
+ :value="new Date(share.expireDate)"
type="date"
:min="dateTomorrow"
:max="dateMaxEnforced"
@@ -298,6 +299,7 @@
<script>
import { generateUrl } from '@nextcloud/router'
+import { showError } from '@nextcloud/dialogs'
import { Type as ShareTypes } from '@nextcloud/sharing'
import Vue from 'vue'
@@ -312,11 +314,11 @@ import NcActions from '@nextcloud/vue/dist/Components/NcActions'
import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'
import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'
-import ExternalShareAction from './ExternalShareAction'
-import SharePermissionsEditor from './SharePermissionsEditor'
-import GeneratePassword from '../utils/GeneratePassword'
-import Share from '../models/Share'
-import SharesMixin from '../mixins/SharesMixin'
+import ExternalShareAction from './ExternalShareAction.vue'
+import SharePermissionsEditor from './SharePermissionsEditor.vue'
+import GeneratePassword from '../utils/GeneratePassword.js'
+import Share from '../models/Share.js'
+import SharesMixin from '../mixins/SharesMixin.js'
export default {
name: 'SharingEntryLink',
@@ -422,12 +424,10 @@ export default {
|| !!this.share.expireDate
},
set(enabled) {
- let defaultExpirationDate = this.config.defaultExpirationDate
- if (!defaultExpirationDate) {
- defaultExpirationDate = new Date()
- }
- this.share.state.expiration = enabled
- ? defaultExpirationDate
+ const defaultExpirationDate = this.config.defaultExpirationDate
+ || new Date(new Date().setDate(new Date().getDate() + 1))
+ this.share.expireDate = enabled
+ ? this.formatDateToString(defaultExpirationDate)
: ''
console.debug('Expiration date status', enabled, this.share.expireDate)
},
@@ -435,7 +435,7 @@ export default {
dateMaxEnforced() {
if (this.config.isDefaultExpireDateEnforced) {
- return new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultExpireDate))
+ return new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))
}
return null
},
@@ -620,7 +620,7 @@ export default {
if (this.config.isDefaultExpireDateEnforced) {
// default is empty string if not set
// expiration is the share object key, not expireDate
- shareDefaults.expiration = this.config.defaultExpirationDate
+ shareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)
}
if (this.config.enableLinkPasswordByDefault) {
shareDefaults.password = await GeneratePassword()
@@ -687,7 +687,7 @@ export default {
this.errors = {}
const path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')
- const newShare = await this.createShare({
+ const options = {
path,
shareType: ShareTypes.SHARE_TYPE_LINK,
password: share.password,
@@ -698,10 +698,12 @@ export default {
// Todo: We also need to fix the createShare method in
// lib/Controller/ShareAPIController.php to allow file drop
// (currently not supported on create, only update)
- })
+ }
- this.open = false
+ console.debug('Creating link share with options', options)
+ const newShare = await this.createShare(options)
+ this.open = false
console.debug('Link share created', newShare)
// if share already exists, copy link directly on next tick
@@ -728,8 +730,14 @@ export default {
component.copyLink()
}
- } catch ({ response }) {
- const message = response.data.ocs.meta.message
+ } catch (data) {
+ const message = data?.response?.data?.ocs?.meta?.message
+ if (!message) {
+ showError(t('sharing', 'Error while creating the share'))
+ console.error(data)
+ return
+ }
+
if (message.match(/password/i)) {
this.onSyncError('password', message)
} else if (message.match(/date/i)) {