Skip to content
This repository was archived by the owner on Oct 13, 2025. It is now read-only.

Commit 02d6442

Browse files
committed
Added Delete file confirmation setting
1 parent d7c9b8e commit 02d6442

9 files changed

+102
-45
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
## [0.1.6 - 2021-10-21]
5+
## [0.1.6 - 2021-10-22]
6+
7+
### Added
8+
9+
- Added Delete file confirmation setting (sidebar settings)
610

711
### Fixed
812

js/mediadc-main.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/mediadc-main.js.LICENSE.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,28 @@
257257
*
258258
*/
259259

260+
/**
261+
* @copyright Copyright (c) 2021 John Molakvoæ <[email protected]>
262+
*
263+
* @author John Molakvoæ <[email protected]>
264+
*
265+
* @license GNU AGPL version 3 or any later version
266+
*
267+
* This program is free software: you can redistribute it and/or modify
268+
* it under the terms of the GNU Affero General Public License as
269+
* published by the Free Software Foundation, either version 3 of the
270+
* License, or (at your option) any later version.
271+
*
272+
* This program is distributed in the hope that it will be useful,
273+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
274+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
275+
* GNU Affero General Public License for more details.
276+
*
277+
* You should have received a copy of the GNU Affero General Public License
278+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
279+
*
280+
*/
281+
260282
/**!
261283
* @fileOverview Kickass library to create and place poppers near their reference elements.
262284
* @version 1.16.1

js/mediadc-main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/mediadc-node_modules_moment_locale_sync_recursive_-src_views_CollectorDetails_vue.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/mediadc-node_modules_moment_locale_sync_recursive_-src_views_CollectorDetails_vue.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/details/DetailsGroupList.vue

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -74,37 +74,45 @@ export default {
7474
computed: {
7575
...mapGetters([
7676
'detailsGridSize',
77+
'deleteFileConfirmation',
7778
]),
7879
},
7980
methods: {
8081
deleteGroupFile(file) {
81-
if (confirm(t('mediadc', 'Are you sure, you want delete this file?'))) {
82-
this.$emit('update:updating', true)
83-
axios.delete(generateUrl(`/apps/mediadc/api/v1/tasks/${file.taskId}/files/${file.detailId}/${file.fileid}`))
84-
.then(res => {
85-
if (res.data.success) {
86-
const files = this.files
87-
const fileidIndex = files.findIndex(f => f.fileid === file.fileid)
88-
files.splice(fileidIndex, 1)
89-
this.$emit('update:files', files)
90-
emit('updateTaskInfo')
91-
this.$store.dispatch('setTask', res.data.task).then(() => {
92-
this.$emit('update:updating', false)
93-
})
94-
} else if ('locked' in res.data && res.data.locked) {
95-
showWarning(t('mediadc', 'Wait until file loaded before deleting'))
96-
this.$emit('update:updating', false)
97-
} else {
98-
showError(t('mediadc', 'Some error occured while deleting file'))
82+
if (this.deleteFileConfirmation) {
83+
if (confirm(t('mediadc', 'Are you sure, you want delete this file?'))) {
84+
this._deleteGroupFile(file)
85+
}
86+
} else {
87+
this._deleteGroupFile(file)
88+
}
89+
},
90+
_deleteGroupFile(file) {
91+
this.$emit('update:updating', true)
92+
axios.delete(generateUrl(`/apps/mediadc/api/v1/tasks/${file.taskId}/files/${file.detailId}/${file.fileid}`))
93+
.then(res => {
94+
if (res.data.success) {
95+
const files = this.files
96+
const fileidIndex = files.findIndex(f => f.fileid === file.fileid)
97+
files.splice(fileidIndex, 1)
98+
this.$emit('update:files', files)
99+
emit('updateTaskInfo')
100+
this.$store.dispatch('setTask', res.data.task).then(() => {
99101
this.$emit('update:updating', false)
100-
}
101-
})
102-
.catch(err => {
103-
console.debug(err)
102+
})
103+
} else if ('locked' in res.data && res.data.locked) {
104+
showWarning(t('mediadc', 'Wait until file loaded before deleting'))
105+
this.$emit('update:updating', false)
106+
} else {
104107
showError(t('mediadc', 'Some error occured while deleting file'))
105108
this.$emit('update:updating', false)
106-
})
107-
}
109+
}
110+
})
111+
.catch(err => {
112+
console.debug(err)
113+
showError(t('mediadc', 'Some error occured while deleting file'))
114+
this.$emit('update:updating', false)
115+
})
108116
},
109117
},
110118
}

src/components/settings/DetailsListSettings.vue

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,53 +32,68 @@
3232
type="number"
3333
min="1"
3434
max="20"
35-
style="width: 60px;"
36-
@change="updateDetailsListItemsPerPage">
35+
style="width: 60px;">
3736
</div>
3837
<div class="setting">
3938
<label for="details-grid-setting">{{ t('mediadc', 'Group file size') }}</label>
4039
<select id="details-grid-setting"
4140
v-model="selectedSize"
42-
name="details-grid-setting"
43-
@change="updateGridSize">
41+
name="details-grid-setting">
4442
<option v-for="size in gridSizes" :key="size" :value="size">
4543
{{ size }}px
4644
</option>
4745
</select>
4846
</div>
47+
<div class="setting">
48+
<CheckboxRadioSwitch :checked.sync="deleteFileConfirmation">
49+
{{ t('mediadc', 'Delete file confirmation') }}
50+
</CheckboxRadioSwitch>
51+
</div>
4952
</div>
5053
</template>
5154

5255
<script>
56+
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch'
5357
5458
export default {
5559
name: 'DetailsListSettings',
60+
components: {
61+
CheckboxRadioSwitch,
62+
},
5663
data() {
5764
return {
65+
loading: true,
5866
gridSizes: [128, 192, 256, 512, 768],
5967
selectedSize: 192,
6068
detailsListItemPerPage: 10,
69+
deleteFileConfirmation: true,
6170
}
6271
},
72+
watch: {
73+
selectedSize() {
74+
window.localStorage.setItem('mediadc_details_files_grid_size', this.selectedSize)
75+
this.$store.dispatch('setDetailsGridSize', this.selectedSize)
76+
},
77+
detailsListItemPerPage() {
78+
window.localStorage.setItem('mediadc_details_list_items_per_page', this.detailsListItemPerPage)
79+
this.$store.dispatch('setDetailsListItemsPerPage', this.detailsListItemPerPage)
80+
},
81+
deleteFileConfirmation() {
82+
window.localStorage.setItem('mediadc_delete_file_confirmation', this.deleteFileConfirmation)
83+
this.$store.dispatch('setDeleteFileConfirmation', this.deleteFileConfirmation)
84+
},
85+
},
6386
beforeMount() {
6487
this.loadLocalSetting()
65-
this.updateGridSize()
66-
this.updateDetailsListItemsPerPage()
6788
},
6889
methods: {
69-
updateGridSize() {
70-
window.localStorage.setItem('mediadc_details_files_grid_size', this.selectedSize)
71-
this.$store.dispatch('setDetailsGridSize', this.selectedSize)
72-
},
7390
loadLocalSetting() {
7491
const localSelectedSize = window.localStorage.getItem('mediadc_details_files_grid_size')
7592
const localDetailsListItemsPerPage = window.localStorage.getItem('mediadc_details_list_items_per_page')
93+
const localDeleteFileConfirmation = window.localStorage.getItem('mediadc_delete_file_confirmation')
7694
this.selectedSize = localSelectedSize !== null ? localSelectedSize : 192
7795
this.detailsListItemPerPage = localDetailsListItemsPerPage !== null ? localDetailsListItemsPerPage : 10
78-
},
79-
updateDetailsListItemsPerPage() {
80-
window.localStorage.setItem('mediadc_details_list_items_per_page', this.detailsListItemPerPage)
81-
this.$store.dispatch('setDetailsListItemsPerPage', this.detailsListItemPerPage)
96+
this.deleteFileConfirmation = localDeleteFileConfirmation !== null ? JSON.parse(localDeleteFileConfirmation) === true : true
8297
},
8398
},
8499
}

src/store/settings.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import Vue from 'vue'
2727
const state = {
2828
settings: [],
2929
detailsGridSize: 192,
30+
deleteFileConfirmation: true,
3031
}
3132

3233
const mutations = {
@@ -52,12 +53,16 @@ const mutations = {
5253
Vue.set(state, 'detailsGridSize', size)
5354
}
5455
},
56+
setDeleteFileConfirmation(state, value) {
57+
Vue.set(state, 'deleteFileConfirmation', value)
58+
},
5559
}
5660

5761
const getters = {
5862
settings: state => state.settings,
5963
settingByName: state => name => state.settings.find(setting => setting.name === name),
6064
detailsGridSize: state => state.detailsGridSize,
65+
deleteFileConfirmation: state => state.deleteFileConfirmation,
6166
}
6267

6368
const actions = {
@@ -73,6 +78,9 @@ const actions = {
7378
setDetailsGridSize(context, size) {
7479
context.commit('setDetailsGridSize', size)
7580
},
81+
setDeleteFileConfirmation(context, value) {
82+
context.commit('setDeleteFileConfirmation', value)
83+
},
7684
}
7785

7886
export default { state, mutations, getters, actions }

0 commit comments

Comments
 (0)