Skip to content

Commit

Permalink
Added fixExtensions on unencrypted postUploads;
Browse files Browse the repository at this point in the history
  • Loading branch information
stef-coenen committed Aug 8, 2024
1 parent ab365a7 commit 242b5c6
Showing 1 changed file with 57 additions and 20 deletions.
77 changes: 57 additions & 20 deletions packages/mobile/src/provider/feed/RNPostUploadProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,17 @@ export const savePost = async <T extends PostContent>(
console.log('videoThumbnail', thumbnail);
const thumbSource: ImageSource | null = thumbnail
? {
uri: thumbnail.uri,
width: 1920,
height: 1080,
type: thumbnail.type,
}
uri: thumbnail.uri,
width: 1920,
height: 1080,
type: thumbnail.type,
}
: null;
const { tinyThumb, additionalThumbnails } =
thumbSource && thumbnail
? await createThumbnails(thumbSource, payloadKey, thumbnail.type as ImageContentType, [
{ quality: 100, width: 250, height: 250 },
])
{ quality: 100, width: 250, height: 250 },
])
: { tinyThumb: undefined, additionalThumbnails: undefined };
if (additionalThumbnails) {
thumbnails.push(...additionalThumbnails);
Expand All @@ -146,7 +146,11 @@ export const savePost = async <T extends PostContent>(
} else if (newMediaFile.type?.startsWith('image/')) {
onUpdate?.('Generating thumbnails', 0);

const { additionalThumbnails, tinyThumb } = await createThumbnails(newMediaFile, payloadKey, (newMediaFile?.type as ImageContentType) || undefined,);
const { additionalThumbnails, tinyThumb } = await createThumbnails(
newMediaFile,
payloadKey,
(newMediaFile?.type as ImageContentType) || undefined
);

// Custom blob to avoid reading and writing the file to disk again
const payloadBlob = new OdinBlob((newMediaFile.filepath || newMediaFile.uri) as string, {
Expand Down Expand Up @@ -180,18 +184,17 @@ export const savePost = async <T extends PostContent>(
if (file.fileMetadata.appData.content.type !== 'Article') {
file.fileMetadata.appData.content.primaryMediaFile = payloads[0]
? {
fileId: undefined,
fileKey: payloads[0].key,
type: payloads[0].payload.type,
}
fileId: undefined,
fileKey: payloads[0].key,
type: payloads[0].payload.type,
}
: undefined;
}

// const previewThumbnail: EmbeddedThumb | undefined =
// previewThumbnails?.length >= 2 ? await makeGrid(previewThumbnails) : previewThumbnails[0];
//TODO: makeGrid not supported in RNApp so until the support is added, we will use the first thumbnail as preview thumbnail
const previewThumbnail: EmbeddedThumb | undefined =
previewThumbnails[0];
const previewThumbnail: EmbeddedThumb | undefined = previewThumbnails[0];

onUpdate?.('Uploading', 0);

Expand Down Expand Up @@ -224,7 +227,7 @@ const uploadPost = async <T extends PostContent>(
const encrypt = !(
file.serverMetadata?.accessControlList?.requiredSecurityGroup === SecurityGroupType.Anonymous ||
file.serverMetadata?.accessControlList?.requiredSecurityGroup ===
SecurityGroupType.Authenticated
SecurityGroupType.Authenticated
);

const instructionSet: UploadInstructionSet = {
Expand Down Expand Up @@ -252,8 +255,9 @@ const uploadPost = async <T extends PostContent>(
!stringGuidsEqual(existingPostWithThisSlug?.fileId, file.fileId)
) {
// There is clash with an existing slug
file.fileMetadata.appData.content.slug = `${file.fileMetadata.appData.content.slug
}-${new Date().getTime()}`;
file.fileMetadata.appData.content.slug = `${
file.fileMetadata.appData.content.slug
}-${new Date().getTime()}`;
}

const uniqueId = file.fileMetadata.appData.content.slug
Expand Down Expand Up @@ -294,6 +298,38 @@ const uploadPost = async <T extends PostContent>(
accessControlList: file.serverMetadata?.accessControlList,
};

// Extensions and paths need fixing when not encrypted; It only needs to be good when
// it's passed into the axios upload; And when encrypting it happens by default;
if (!encrypt) {
payloads = await Promise.all(
payloads.map(async (payload) => {
if (!('fixExtension' in payload.payload)) {
return payload;
}

const newBlob = await (payload.payload as any as OdinBlob).fixExtension();
return {
...payload,
payload: newBlob as any,
};
})
);

thumbnails = await Promise.all(
thumbnails.map(async (thumb) => {
if (!('fixExtension' in thumb.payload)) {
return thumb;
}

const newBlob = await (thumb.payload as any as OdinBlob).fixExtension();
return {
...thumb,
payload: newBlob as any,
};
})
);
}

const result = await uploadFile(
dotYouClient,
instructionSet,
Expand Down Expand Up @@ -338,11 +374,12 @@ const uploadPostHeader = async <T extends PostContent>(
if (
existingPostWithThisSlug &&
existingPostWithThisSlug?.fileMetadata.appData.content.id !==
file.fileMetadata.appData.content.id
file.fileMetadata.appData.content.id
) {
// There is clash with an existing slug
file.fileMetadata.appData.content.slug = `${file.fileMetadata.appData.content.slug
}-${new Date().getTime()}`;
file.fileMetadata.appData.content.slug = `${
file.fileMetadata.appData.content.slug
}-${new Date().getTime()}`;
}

const uniqueId = file.fileMetadata.appData.content.slug
Expand Down

0 comments on commit 242b5c6

Please sign in to comment.