Added profile pictures

This commit is contained in:
tdgmdev 2023-03-06 16:15:27 -05:00
parent 908055a85b
commit 06fedb4387
6 changed files with 108 additions and 36 deletions

View file

@ -30,6 +30,7 @@
#header {
border-bottom: var(--dark-2) solid 2px;
width: calc(100% - 30px);
}
#main {

View file

@ -1,7 +1,7 @@
<script>
import Button from '$lib/components/Button.svelte';
export let form;
export let form, apiUrl, type;
let fileInput;
let files;
@ -41,7 +41,7 @@
fData.append('last',i == (images.length - 1));
fData.append('id',rId);
form = await fetch(`/api/fileCreate`, {
form = await fetch(apiUrl || `/api/fileCreate`, {
method: 'POST',
body: fData,
}).then(x => x.json());
@ -62,9 +62,13 @@
img {
max-width: 250px;
}
.small img {
max-width: 50px;
}
</style>
<form action='#' method='GET' >
<form action='#' method='GET' class='{type || ''}' >
{#if preview}
<img src={preview} alt="Image preview"/>
{:else}

View file

@ -5,6 +5,7 @@ const AUTH_ACTIONS = [
'fileCreate',
'vote',
'postDelete',
'pfp',
'follow'
];
@ -349,39 +350,54 @@ backend.follow = async ({target, user}) => {
return {'success': 'User followed/unfollowed.', 'data': {following, followers}};
};
backend.fileCreate = async({img, extension,id, last }) => {
if (ridArray[id] !== '' && !(ridArray[id])) {
ridArray[id] = img;
} else {
ridArray[id] += img;
}
let fileCreate = (type) => {
return async ({img, extension,id, last, user }) => {
let validExtensions = VALID_EXTENSIONS;
const imgData = ridArray[id];
if (type == 'pfp') validExtensions = ['png'];
if (last != 'true') {
return {'success': 'Image still proccessing...'}
} else {
ridArray[id] = false;
}
if (ridArray[id] !== '' && !(ridArray[id])) {
ridArray[id] = img;
} else {
ridArray[id] += img;
}
const imgData = ridArray[id];
if (last != 'true') {
return {'success': 'Image still proccessing...'}
} else {
ridArray[id] = false;
}
const imgHash = createHash('md5').update(imgData).digest('hex');
if (!imgHash)
return {'success': 'Image not provided.'}
if (imgHash.length > FILE_SIZE_LIMIT)
return {'success': 'Image too big.'}
const extensionSafe = safePath(extension);
if (validExtensions.indexOf(extensionSafe) == -1)
return { success: 'Illegal file extension. Permitted file extensions are: ' + validExtensions.join(', ') };
if (type == 'post') {
writeFile(`${process.cwd()}/db/post-${imgHash}.${extensionSafe}`,imgData,{encoding: 'base64'});
} else {
writeFile(`${process.cwd()}/db/pfp-${user}.png`,imgData,{encoding: 'base64'});
}
return { success: 'Successfully uploaded file.', 'href': `/img/${imgHash}.${extensionSafe}`};
}
}
backend.fileCreate = fileCreate('post');
backend.pfp = fileCreate('pfp');
const imgHash = createHash('md5').update(imgData).digest('hex');
if (!imgHash)
return {'success': 'Image not provided.'}
if (imgHash.length > FILE_SIZE_LIMIT)
return {'success': 'Image too big.'}
const extensionSafe = safePath(extension);
if (VALID_EXTENSIONS.indexOf(extensionSafe) == -1)
return { success: 'Illegal file extension. Permitted file extensions are: ' + VALID_EXTENSIONS.join(', ') };
writeFile(`${process.cwd()}/db/post-${imgHash}.${extensionSafe}`,imgData,{encoding: 'base64'});
return { success: 'Successfully uploaded file.', 'href': `/img/${imgHash}.${extensionSafe}`};
}
export {
backendProxy,
backend
backend,
VALID_EXTENSIONS
}