FileVersion service
This commit is contained in:
parent
27ce9abd68
commit
6368672eec
|
@ -0,0 +1,85 @@
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||||
|
* @author Enoch <enoch@nextcloud.com>
|
||||||
|
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||||
|
* @license GNU AGPL version 3 or any later version
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import client from './DavClient'
|
||||||
|
import { genFileInfo } from '../utils/fileUtils'
|
||||||
|
import axios from "@nextcloud/axios";
|
||||||
|
import {generateRemoteUrl} from "@nextcloud/router";
|
||||||
|
import { getCurrentUser } from '@nextcloud/auth';
|
||||||
|
/**
|
||||||
|
* Retrieve the files list
|
||||||
|
*
|
||||||
|
* @param {String} path the path relative to the user root
|
||||||
|
* @param {Object} [options] optional options for axios
|
||||||
|
* @returns {Array} the file list
|
||||||
|
*/
|
||||||
|
export default async function(client) {
|
||||||
|
// getDirectoryContents doesn't accept / for root
|
||||||
|
getCurrentUser(){
|
||||||
|
return this._currentUser || getCurrentUser().uid
|
||||||
|
}
|
||||||
|
|
||||||
|
// init params
|
||||||
|
const shareUrl = generateRemoteUrl('dav') + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id')
|
||||||
|
const format = 'json'
|
||||||
|
|
||||||
|
// TODO: replace with proper getFUllpath implementation of our own FileInfo model
|
||||||
|
const path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')
|
||||||
|
// Fetch Version
|
||||||
|
const fetchVersion = await axios.get(shareUrl, {
|
||||||
|
params: {
|
||||||
|
format,
|
||||||
|
path,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
// wait for data
|
||||||
|
const response = await client.getDirectoryContents(fixedPath, Object.assign({
|
||||||
|
data: `<?xml version="1.0"?>
|
||||||
|
<d:propfind xmlns:d="DAV:"
|
||||||
|
xmlns:oc="http://owncloud.org/ns"
|
||||||
|
xmlns:nc="http://nextcloud.org/ns"
|
||||||
|
xmlns:ocs="http://open-collaboration-services.org/ns">
|
||||||
|
<d:prop>
|
||||||
|
<d:getlastmodified />
|
||||||
|
<d:getetag />
|
||||||
|
<d:getcontenttype />
|
||||||
|
<d:resourcetype />
|
||||||
|
<oc:fileid />
|
||||||
|
<oc:permissions />
|
||||||
|
<oc:size />
|
||||||
|
<d:getcontentlength />
|
||||||
|
<nc:has-preview />
|
||||||
|
<nc:mount-type />
|
||||||
|
<nc:is-encrypted />
|
||||||
|
<ocs:share-permissions />
|
||||||
|
<oc:tags />
|
||||||
|
<oc:favorite />
|
||||||
|
<oc:comments-unread />
|
||||||
|
<oc:owner-id />
|
||||||
|
<oc:owner-display-name />
|
||||||
|
<oc:share-types />
|
||||||
|
</d:prop>
|
||||||
|
</d:propfind>`,
|
||||||
|
details: true,
|
||||||
|
}, options))
|
||||||
|
|
||||||
|
return response.data.map(FileVersion)
|
||||||
|
}
|
|
@ -39,9 +39,8 @@
|
||||||
import axios from '@nextcloud/axios'
|
import axios from '@nextcloud/axios'
|
||||||
import { generateRemoteUrl } from '@nextcloud/router'
|
import { generateRemoteUrl } from '@nextcloud/router'
|
||||||
import { ListItemIcon } from '@nextcloud/vue'
|
import { ListItemIcon } from '@nextcloud/vue'
|
||||||
import { getCurrentUser } from '@nextcloud/auth'
|
|
||||||
|
|
||||||
import VersionEntry from '../components/VersionEntry'
|
import VersionEntry from '../components/VersionEntry'
|
||||||
|
import FileVersion from "../services/FileVersion";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'VersionTab',
|
name: 'VersionTab',
|
||||||
|
@ -83,11 +82,6 @@ export default {
|
||||||
setCurrentUser(user) {
|
setCurrentUser(user) {
|
||||||
this._currentUser = user
|
this._currentUser = user
|
||||||
},
|
},
|
||||||
|
|
||||||
getCurrentUser() {
|
|
||||||
return this._currentUser || getCurrentUser().uid
|
|
||||||
},
|
|
||||||
|
|
||||||
setClient(client) {
|
setClient(client) {
|
||||||
this._client = client
|
this._client = client
|
||||||
},
|
},
|
||||||
|
@ -110,42 +104,13 @@ export default {
|
||||||
async getVersions() {
|
async getVersions() {
|
||||||
try {
|
try {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
// init params
|
const fetchVersion = FileVersion(Client);
|
||||||
const shareUrl = generateRemoteUrl('dav') + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id')
|
fetchVersion();
|
||||||
const format = 'json'
|
|
||||||
console.log('Shareurl:', shareUrl)
|
|
||||||
// TODO: replace with proper getFUllpath implementation of our own FileInfo model
|
|
||||||
const path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')
|
|
||||||
|
|
||||||
console.log(path)
|
|
||||||
// fetch version
|
|
||||||
|
|
||||||
const fetchVersion = await axios.get(shareUrl, {
|
|
||||||
params: {
|
|
||||||
format,
|
|
||||||
path,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
// wait for data
|
|
||||||
this.loading = false
|
|
||||||
// process results
|
|
||||||
this.versionList = fetchVersion.data
|
|
||||||
console.log(versionList)
|
|
||||||
this.version.fullPath = fullPath
|
|
||||||
this.version.fileId = fileId
|
|
||||||
this.version.name = name
|
|
||||||
this.version.timestamp = parseInt(moment(new Date(version.timestamp)).format('X'), 10)
|
|
||||||
this.version.id = OC.basename(version.href)
|
|
||||||
this.version.size = parseInt(version.size, 10)
|
|
||||||
this.version.user = user
|
|
||||||
this.version.client = client
|
|
||||||
return version
|
|
||||||
} catch (error) {
|
|
||||||
this.error = t('files_version', 'Unable to load the version list')
|
|
||||||
this.loading = false
|
|
||||||
console.error('Error loading the version list', error)
|
|
||||||
}
|
}
|
||||||
},
|
catch(e){
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getVersions()
|
this.getVersions()
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue