fixed oauth and uploading and file details
This commit is contained in:
parent
799c7d7cec
commit
fbf1c95b1b
@ -14,6 +14,8 @@ services:
|
|||||||
AUTH_DISCORD_SECRET: "lIrkEwb2PpMpLZM7Yb9pGVeT7YLgIC_C"
|
AUTH_DISCORD_SECRET: "lIrkEwb2PpMpLZM7Yb9pGVeT7YLgIC_C"
|
||||||
AUTH_TRUST_HOST: "true"
|
AUTH_TRUST_HOST: "true"
|
||||||
SKIP_ENV_VALIDATION: "true"
|
SKIP_ENV_VALIDATION: "true"
|
||||||
|
PAGE_URL: "https://file-hosting.example.com"
|
||||||
|
NEXTAUTH_URL: "https://file-hosting.example.com"
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: /mnt/0TB/DATA/AppData/file-hosting/uploads
|
source: /mnt/0TB/DATA/AppData/file-hosting/uploads
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { env } from "~/env.js";
|
||||||
|
|
||||||
interface File {
|
interface File {
|
||||||
id: string;
|
id: string;
|
||||||
@ -97,7 +98,7 @@ export default function FileGrid({ session }: FileGridProps) {
|
|||||||
|
|
||||||
const handleCopyUrl = (url: string) => {
|
const handleCopyUrl = (url: string) => {
|
||||||
navigator.clipboard
|
navigator.clipboard
|
||||||
.writeText(url)
|
.writeText(env.PAGE_URL + url)
|
||||||
.then(() => toast.success("File URL copied to clipboard!"))
|
.then(() => toast.success("File URL copied to clipboard!"))
|
||||||
.catch(() => toast.error("Failed to copy URL."));
|
.catch(() => toast.error("Failed to copy URL."));
|
||||||
};
|
};
|
||||||
@ -136,7 +137,7 @@ export default function FileGrid({ session }: FileGridProps) {
|
|||||||
className="flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 hover:bg-white/20"
|
className="flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 hover:bg-white/20"
|
||||||
>
|
>
|
||||||
|
|
||||||
<button onClick={() => router.push(file.url)}>
|
<button onClick={() => router.push(env.PAGE_URL + file.url)}>
|
||||||
<h3 className="text-2xl font-bold">{file.name}</h3>
|
<h3 className="text-2xl font-bold">{file.name}</h3>
|
||||||
</button>
|
</button>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
|
|||||||
@ -61,14 +61,11 @@ export async function POST(req: Request) {
|
|||||||
try {
|
try {
|
||||||
const filePath = path.join(uploadDir, fileName);
|
const filePath = path.join(uploadDir, fileName);
|
||||||
await fs.writeFile(filePath, fileBuffer);
|
await fs.writeFile(filePath, fileBuffer);
|
||||||
const pageurl = new URL(req.url);
|
|
||||||
//get root path of the url
|
|
||||||
const pagePath = `${pageurl.protocol}//${pageurl.host}`;
|
|
||||||
|
|
||||||
// Save file metadata to the database
|
// Save file metadata to the database
|
||||||
const newFile = await db.file.create({
|
const newFile = await db.file.create({
|
||||||
data: {
|
data: {
|
||||||
url: `${pagePath}/share?id=${fileName}`,
|
url: `/share?id=${fileName}`,
|
||||||
name: fileName,
|
name: fileName,
|
||||||
size: fileBuffer.length,
|
size: fileBuffer.length,
|
||||||
extension: path.extname(fileName),
|
extension: path.extname(fileName),
|
||||||
|
|||||||
@ -19,6 +19,7 @@ export const env = createEnv({
|
|||||||
NODE_ENV: z
|
NODE_ENV: z
|
||||||
.enum(["development", "test", "production"])
|
.enum(["development", "test", "production"])
|
||||||
.default("development"),
|
.default("development"),
|
||||||
|
PAGE_URL: z.string().url(),
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,6 +41,7 @@ export const env = createEnv({
|
|||||||
AUTH_DISCORD_SECRET: process.env.AUTH_DISCORD_SECRET,
|
AUTH_DISCORD_SECRET: process.env.AUTH_DISCORD_SECRET,
|
||||||
DATABASE_URL: process.env.DATABASE_URL,
|
DATABASE_URL: process.env.DATABASE_URL,
|
||||||
NODE_ENV: process.env.NODE_ENV,
|
NODE_ENV: process.env.NODE_ENV,
|
||||||
|
PAGE_URL: process.env.PAGE_URL,
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially
|
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user