feat: resolve public url for avatar

This commit is contained in:
Steve Korshakov 2025-08-26 22:39:28 -07:00
parent 4a8f7447e9
commit 9ad11b8f9e
4 changed files with 13 additions and 2 deletions

View File

@ -33,6 +33,8 @@ spec:
value: "3005" value: "3005"
- name: REDIS_URL - name: REDIS_URL
value: redis://happy-redis:6379 value: redis://happy-redis:6379
- name: S3_PUBLIC_URL
value: https://files.happy-servers.com/happy
envFrom: envFrom:
- secretRef: - secretRef:
name: handy-secrets name: handy-secrets

View File

@ -37,6 +37,7 @@ import { encryptBytes, encryptString } from "@/modules/encrypt";
import { GitHubProfile } from "./types"; import { GitHubProfile } from "./types";
import { uploadImage } from "@/storage/uploadImage"; import { uploadImage } from "@/storage/uploadImage";
import { separateName } from "@/utils/separateName"; import { separateName } from "@/utils/separateName";
import { getPublicUrl } from "@/storage/files";
declare module 'fastify' { declare module 'fastify' {
@ -1000,7 +1001,7 @@ export async function startApi(): Promise<{ app: FastifyInstance; io: Server }>
timestamp: Date.now(), timestamp: Date.now(),
firstName: user.firstName, firstName: user.firstName,
lastName: user.lastName, lastName: user.lastName,
avatar: user.avatar, avatar: user.avatar ? { ...user.avatar, url: getPublicUrl(user.avatar.path) } : null,
github: user.githubUser ? user.githubUser.profile : null github: user.githubUser ? user.githubUser.profile : null
}); });
}); });

View File

@ -2,6 +2,7 @@ import { Socket } from "socket.io";
import { log } from "@/utils/log"; import { log } from "@/utils/log";
import { GitHubProfile } from "@/app/types"; import { GitHubProfile } from "@/app/types";
import { AccountProfile } from "@/types"; import { AccountProfile } from "@/types";
import { getPublicUrl } from "@/storage/files";
// === CONNECTION TYPES === // === CONNECTION TYPES ===
@ -338,7 +339,8 @@ export function buildUpdateAccountUpdate(userId: string, profile: Partial<Accoun
body: { body: {
t: 'update-account', t: 'update-account',
id: userId, id: userId,
...profile ...profile,
avatar: profile.avatar ? { ...profile.avatar, url: getPublicUrl(profile.avatar.path) } : undefined
}, },
createdAt: Date.now() createdAt: Date.now()
}; };

View File

@ -11,10 +11,16 @@ export const s3bucket = process.env.S3_BUCKET!;
export const s3host = process.env.S3_HOST! export const s3host = process.env.S3_HOST!
export const s3public = process.env.S3_PUBLIC_URL!;
export async function loadFiles() { export async function loadFiles() {
await s3client.bucketExists(s3bucket); // Throws if bucket does not exist or is not accessible await s3client.bucketExists(s3bucket); // Throws if bucket does not exist or is not accessible
} }
export function getPublicUrl(path: string) {
return `${s3public}/${path}`;
}
export type ImageRef = { export type ImageRef = {
width: number; width: number;
height: number; height: number;