mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-12-28 14:38:52 +00:00
Can replace account image
This commit is contained in:
parent
d02eb7afce
commit
34b0a29e77
@ -99,6 +99,8 @@ export const Routes : Route[] = [
|
||||
|
||||
{path: "/settings/get_account_image", cb: (h) => SettingsController.GetAccountImageSettings(h)},
|
||||
|
||||
{path: "/settings/upload_account_image", cb: (h) => SettingsController.UploadAccountImage(h)},
|
||||
|
||||
|
||||
// Friends controller
|
||||
{path: "/friends/getList", cb: (h) => FriendsController.GetList(h)},
|
||||
|
@ -11,6 +11,7 @@ import { removeHTMLNodes, checkURL, fixEncoding } from "../utils/StringUtils";
|
||||
import { checkVirtualDirectoryAvailability, VirtualDirType } from "../utils/VirtualDirsUtils";
|
||||
import { AccountHelper } from "../helpers/AccountHelper";
|
||||
import { AccountImageVisibilityLevel } from "../entities/AccountImage";
|
||||
import { AccountImageHelper } from "../helpers/AccountImageHelper";
|
||||
|
||||
/**
|
||||
* API account image visibility levels
|
||||
@ -215,4 +216,20 @@ export class SettingsController {
|
||||
visibility: ACCOUNT_IMAGE_VISIBLITY_LEVELS[imageInfo.level]
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload new account image
|
||||
*
|
||||
* @param h Request handler
|
||||
*/
|
||||
public static async UploadAccountImage(h: RequestHandler) {
|
||||
if(!h.hasFile("picture"))
|
||||
h.error(400, "An error occured while receiving the image !")
|
||||
|
||||
const uri = await h.savePostImage("picture", "avatars", 800, 800);
|
||||
|
||||
await AccountImageHelper.Set(h.getUserId(), uri);
|
||||
|
||||
h.success();
|
||||
}
|
||||
}
|
@ -28,9 +28,19 @@ export class AccountImage {
|
||||
*/
|
||||
get url() : string {
|
||||
if(this.path.length < 1)
|
||||
return AccountImage.urlForFile(defaultAccountImage);
|
||||
return AccountImage.pathForFile(defaultAccountImage);
|
||||
|
||||
return AccountImage.urlForFile(this.path);
|
||||
return AccountImage.pathForFile(this.path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get account image sys path
|
||||
*/
|
||||
get sysPath() : string {
|
||||
if(this.path.length < 1)
|
||||
throw new Error("This user has no account image!");
|
||||
|
||||
return AccountImage.pathForFile(this.path, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -42,10 +52,10 @@ export class AccountImage {
|
||||
}
|
||||
|
||||
static get errorURL() : string {
|
||||
return this.urlForFile(errorAccountImage);
|
||||
return this.pathForFile(errorAccountImage);
|
||||
}
|
||||
|
||||
private static urlForFile(file : string) : string {
|
||||
return pathUserData("avatars/" + file, false);
|
||||
private static pathForFile(file : string, sysPath = false) : string {
|
||||
return pathUserData("avatars/" + file, sysPath);
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
import { pathUserData } from "../utils/UserDataUtils";
|
||||
import { existsSync, readFileSync } from "fs";
|
||||
import { existsSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
||||
import { AccountImage, AccountImageVisibilityLevel } from "../entities/AccountImage";
|
||||
|
||||
/**
|
||||
@ -24,6 +24,22 @@ export class AccountImageHelper {
|
||||
return new AccountImage(userID, accountImageFileContent, level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a new account image for a user
|
||||
*
|
||||
* @param userID Target user ID
|
||||
* @param path The path for the account image
|
||||
*/
|
||||
public static async Set(userID: number, path: string) {
|
||||
|
||||
// First, delete any previous account image
|
||||
const currInfo = await this.Get(userID);
|
||||
if(currInfo.hasImage)
|
||||
unlinkSync(currInfo.sysPath);
|
||||
|
||||
writeFileSync(this.GetPathMetadataFile(userID), path.replace("avatars/", ""));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content of the file associated to the user account image, if any
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user