viewer: fix folder-share video
parent
4d9c301f26
commit
3e854719ed
|
@ -348,7 +348,7 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await dav.downloadFilesByIds(Array.from(selection.values()));
|
await dav.downloadFilesByPhotos(Array.from(selection.values()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -76,7 +76,7 @@ import { generateUrl } from "@nextcloud/router";
|
||||||
import * as dav from "../services/DavRequests";
|
import * as dav from "../services/DavRequests";
|
||||||
import * as utils from "../services/Utils";
|
import * as utils from "../services/Utils";
|
||||||
import { getPreviewUrl } from "../services/FileUtils";
|
import { getPreviewUrl } from "../services/FileUtils";
|
||||||
import { getAlbumFileInfos } from "../services/DavRequests";
|
import { getDownloadLink } from "../services/DavRequests";
|
||||||
|
|
||||||
import PhotoSwipe, { PhotoSwipeOptions } from "photoswipe";
|
import PhotoSwipe, { PhotoSwipeOptions } from "photoswipe";
|
||||||
import "photoswipe/style.css";
|
import "photoswipe/style.css";
|
||||||
|
@ -264,19 +264,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
||||||
content.videoElement.classList.add("video-js");
|
content.videoElement.classList.add("video-js");
|
||||||
|
|
||||||
// Get DAV URL for video
|
// Get DAV URL for video
|
||||||
let url = `remote.php/dav/${content.data.photo.filename}`; // normal route
|
const url = getDownloadLink(content.data.photo);
|
||||||
// Check if albums
|
|
||||||
const route = vuerouter.currentRoute;
|
|
||||||
if (route.name === "albums") {
|
|
||||||
const fInfos = getAlbumFileInfos(
|
|
||||||
[content.data.photo],
|
|
||||||
route.params.user,
|
|
||||||
route.params.name
|
|
||||||
);
|
|
||||||
if (fInfos.length) {
|
|
||||||
url = `remote.php/dav/${fInfos[0].originalFilename}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add child with source element
|
// Add child with source element
|
||||||
const source = document.createElement("source");
|
const source = document.createElement("source");
|
||||||
|
@ -525,7 +513,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
||||||
private async downloadCurrent() {
|
private async downloadCurrent() {
|
||||||
const photo = this.getCurrentPhoto();
|
const photo = this.getCurrentPhoto();
|
||||||
if (!photo) return;
|
if (!photo) return;
|
||||||
dav.downloadFilesByIds([photo]);
|
dav.downloadFilesByPhotos([photo]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Open the sidebar */
|
/** Open the sidebar */
|
||||||
|
|
|
@ -3,6 +3,7 @@ import { generateUrl } from "@nextcloud/router";
|
||||||
import { showError } from "@nextcloud/dialogs";
|
import { showError } from "@nextcloud/dialogs";
|
||||||
import { translate as t } from "@nextcloud/l10n";
|
import { translate as t } from "@nextcloud/l10n";
|
||||||
import { IPhoto } from "../../types";
|
import { IPhoto } from "../../types";
|
||||||
|
import { getAlbumFileInfos } from "./albums";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Download a file
|
* Download a file
|
||||||
|
@ -43,27 +44,14 @@ export async function downloadFiles(fileNames: string[]): Promise<boolean> {
|
||||||
* @param photo - The photo to download
|
* @param photo - The photo to download
|
||||||
*/
|
*/
|
||||||
export async function downloadPublicPhoto(photo: IPhoto) {
|
export async function downloadPublicPhoto(photo: IPhoto) {
|
||||||
// Public share download
|
window.location.href = getDownloadLink(photo);
|
||||||
|
|
||||||
const token = window.vuerouter.currentRoute.params.token;
|
|
||||||
// TODO: allow proper dav access without the need of basic auth
|
|
||||||
// https://github.com/nextcloud/server/issues/19700
|
|
||||||
const downloadURL = generateUrl(
|
|
||||||
`/s/${token}/download?path={dirname}&files={basename}`,
|
|
||||||
{
|
|
||||||
dirname: photo.filename.split("/").slice(0, -1).join("/"),
|
|
||||||
basename: photo.basename,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
window.location.href = downloadURL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Download the files given by the fileIds
|
* Download the files given by the fileIds
|
||||||
* @param photos list of photos
|
* @param photos list of photos
|
||||||
*/
|
*/
|
||||||
export async function downloadFilesByIds(photos: IPhoto[]) {
|
export async function downloadFilesByPhotos(photos: IPhoto[]) {
|
||||||
if (photos.length === 0) {
|
if (photos.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -87,3 +75,32 @@ export async function downloadFilesByIds(photos: IPhoto[]) {
|
||||||
|
|
||||||
await downloadFiles(fileInfos.map((f) => f.filename));
|
await downloadFiles(fileInfos.map((f) => f.filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get URL to download one file (e.g. for video streaming) */
|
||||||
|
export function getDownloadLink(photo: IPhoto) {
|
||||||
|
// Check if public
|
||||||
|
if (vuerouter.currentRoute.name === "folder-share") {
|
||||||
|
const token = window.vuerouter.currentRoute.params.token;
|
||||||
|
// TODO: allow proper dav access without the need of basic auth
|
||||||
|
// https://github.com/nextcloud/server/issues/19700
|
||||||
|
return generateUrl(`/s/${token}/download?path={dirname}&files={basename}`, {
|
||||||
|
dirname: photo.filename.split("/").slice(0, -1).join("/"),
|
||||||
|
basename: photo.basename,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if albums
|
||||||
|
const route = vuerouter.currentRoute;
|
||||||
|
if (route.name === "albums") {
|
||||||
|
const fInfos = getAlbumFileInfos(
|
||||||
|
[photo],
|
||||||
|
route.params.user,
|
||||||
|
route.params.name
|
||||||
|
);
|
||||||
|
if (fInfos.length) {
|
||||||
|
return `remote.php/dav/${fInfos[0].originalFilename}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return `remote.php/dav/${photo.filename}`; // normal route
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue