skip non user owned collection files during export

This commit is contained in:
Abhinav 2023-11-07 10:15:51 +05:30
parent 740d5e8ef2
commit f6d3a99520
2 changed files with 34 additions and 5 deletions

View file

@ -234,7 +234,18 @@ class ExportService {
try { try {
const user: User = getData(LS_KEYS.USER); const user: User = getData(LS_KEYS.USER);
const files = await getAllLocalFiles(); const files = await getAllLocalFiles();
const userPersonalFiles = getPersonalFiles(files, user); const collections = await getAllLocalCollections();
const collectionIdToOwnerIDMap = new Map<number, number>(
collections.map((collection) => [
collection.id,
collection.owner.id,
])
);
const userPersonalFiles = getPersonalFiles(
files,
collectionIdToOwnerIDMap,
user
);
const unExportedFiles = getUnExportedFiles( const unExportedFiles = getUnExportedFiles(
userPersonalFiles, userPersonalFiles,
@ -347,9 +358,19 @@ class ExportService {
try { try {
const user: User = getData(LS_KEYS.USER); const user: User = getData(LS_KEYS.USER);
const files = mergeMetadata(await getAllLocalFiles()); const files = mergeMetadata(await getAllLocalFiles());
const personalFiles = getPersonalFiles(files, user);
const collections = await getAllLocalCollections(); const collections = await getAllLocalCollections();
const collectionIdToOwnerIDMap = new Map<number, number>(
collections.map((collection) => [
collection.id,
collection.owner.id,
])
);
const personalFiles = getPersonalFiles(
files,
collectionIdToOwnerIDMap,
user
);
const nonEmptyPersonalCollections = getNonEmptyPersonalCollections( const nonEmptyPersonalCollections = getNonEmptyPersonalCollections(
collections, collections,
personalFiles, personalFiles,

View file

@ -823,11 +823,19 @@ export function getLatestVersionFiles(files: EnteFile[]) {
); );
} }
export function getPersonalFiles(files: EnteFile[], user: User) { export function getPersonalFiles(
files: EnteFile[],
collectionIdToOwnerIDMap: Map<number, number>,
user: User
) {
if (!user?.id) { if (!user?.id) {
throw Error('user missing'); throw Error('user missing');
} }
return files.filter((file) => file.ownerID === user.id); return files.filter(
(file) =>
file.ownerID === user.id &&
collectionIdToOwnerIDMap.get(file.collectionID) === user.id
);
} }
export function getIDBasedSortedFiles(files: EnteFile[]) { export function getIDBasedSortedFiles(files: EnteFile[]) {