albums: fix changing albums from album (fix #795)
Signed-off-by: Varun Patil <radialapps@gmail.com>pull/803/head
parent
6ca3b10606
commit
9b12b2ab41
|
@ -143,7 +143,7 @@
|
||||||
</NcActionButton>
|
</NcActionButton>
|
||||||
<NcActionButton
|
<NcActionButton
|
||||||
:aria-label="t('memories', 'Add to album')"
|
:aria-label="t('memories', 'Add to album')"
|
||||||
v-if="config.albums_enabled && !isLocal && !routeIsPublic && canShare"
|
v-if="config.albums_enabled && !isLocal && !routeIsPublic && canShare && currentPhoto?.imageInfo?.filename"
|
||||||
@click="updateAlbums"
|
@click="updateAlbums"
|
||||||
:close-after-click="true"
|
:close-after-click="true"
|
||||||
>
|
>
|
||||||
|
|
|
@ -54,7 +54,7 @@ export async function getAlbums(sort: 1 | 2 = 1, fileid?: number) {
|
||||||
*/
|
*/
|
||||||
export async function* addToAlbum(user: string, name: string, photos: IPhoto[]) {
|
export async function* addToAlbum(user: string, name: string, photos: IPhoto[]) {
|
||||||
// Get files data
|
// Get files data
|
||||||
let fileInfos = await base.getFiles(photos);
|
const fileInfos = await base.getFiles(photos, { ignoreRoute: true });
|
||||||
const albumPath = getAlbumPath(user, name);
|
const albumPath = getAlbumPath(user, name);
|
||||||
|
|
||||||
// Add each file
|
// Add each file
|
||||||
|
@ -92,7 +92,7 @@ export async function* addToAlbum(user: string, name: string, photos: IPhoto[])
|
||||||
*/
|
*/
|
||||||
export async function* removeFromAlbum(user: string, name: string, photos: IPhoto[]) {
|
export async function* removeFromAlbum(user: string, name: string, photos: IPhoto[]) {
|
||||||
// Get files data
|
// Get files data
|
||||||
let fileInfos = await base.getFiles(photos);
|
const fileInfos = await base.getFiles(photos, { ignoreRoute: true });
|
||||||
const albumPath = getAlbumPath(user, name);
|
const albumPath = getAlbumPath(user, name);
|
||||||
|
|
||||||
// Remove each file
|
// Remove each file
|
||||||
|
|
|
@ -38,18 +38,30 @@ export const IMAGE_MIME_TYPES = [
|
||||||
|
|
||||||
const GET_FILE_CHUNK_SIZE = 50;
|
const GET_FILE_CHUNK_SIZE = 50;
|
||||||
|
|
||||||
|
type GetFilesOpts = {
|
||||||
|
/** Attempt to use some cached value to get filename (default true) */
|
||||||
|
cache?: boolean;
|
||||||
|
/** Get original route-independent filename for current user only (default false) */
|
||||||
|
ignoreRoute?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get file infos for list of files given Ids
|
* Get file infos for list of files given Ids
|
||||||
* @param photos list of photos
|
* @param photos list of photos
|
||||||
|
* @param opts options
|
||||||
* @details This tries to use the cached filename in the photo object (imageInfo.filename)
|
* @details This tries to use the cached filename in the photo object (imageInfo.filename)
|
||||||
* If none was found, then it will fetch the file info from the server.
|
* If none was found, then it will fetch the file info from the server.
|
||||||
*/
|
*/
|
||||||
export async function getFiles(photos: IPhoto[]): Promise<IFileInfo[]> {
|
export async function getFiles(photos: IPhoto[], opts?: GetFilesOpts): Promise<IFileInfo[]> {
|
||||||
// Check if albums
|
// Some routes may have special handling of filenames
|
||||||
|
if (!opts?.ignoreRoute) {
|
||||||
const route = vueroute();
|
const route = vueroute();
|
||||||
|
|
||||||
|
// Check if albums
|
||||||
if (route.name === 'albums') {
|
if (route.name === 'albums') {
|
||||||
return getAlbumFileInfos(photos, <string>route.params.user, <string>route.params.name);
|
return getAlbumFileInfos(photos, <string>route.params.user, <string>route.params.name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Remove any local photos
|
// Remove any local photos
|
||||||
photos = photos.filter((photo) => !utils.isLocalPhoto(photo));
|
photos = photos.filter((photo) => !utils.isLocalPhoto(photo));
|
||||||
|
@ -59,7 +71,7 @@ export async function getFiles(photos: IPhoto[]): Promise<IFileInfo[]> {
|
||||||
const rest: IPhoto[] = [];
|
const rest: IPhoto[] = [];
|
||||||
|
|
||||||
// Partition photos with and without cache
|
// Partition photos with and without cache
|
||||||
if (utils.uid) {
|
if (utils.uid && opts?.cache !== false) {
|
||||||
for (const photo of photos) {
|
for (const photo of photos) {
|
||||||
const filename = photo.imageInfo?.filename;
|
const filename = photo.imageInfo?.filename;
|
||||||
if (filename) {
|
if (filename) {
|
||||||
|
|
Loading…
Reference in New Issue