53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import PocketBase from "pocketbase";
|
|
|
|
let client: PocketBase | undefined;
|
|
let clientUrl: string | undefined;
|
|
|
|
export const getPocketBase = (url: string): PocketBase => {
|
|
if (!client || clientUrl !== url) {
|
|
client = new PocketBase(url);
|
|
clientUrl = url;
|
|
}
|
|
return client;
|
|
};
|
|
|
|
export const getSubmissionFileUrl = (baseUrl: string, submissionId: string, filename: string) =>
|
|
`${baseUrl}/api/files/submissions/${submissionId}/${encodeURIComponent(filename)}`;
|
|
|
|
export interface WorkshopSubmission {
|
|
id: string;
|
|
collectionId: string;
|
|
collectionName: string;
|
|
type: "css" | "widget";
|
|
title: string;
|
|
description: string;
|
|
schemaVersion: string;
|
|
content: string;
|
|
screenshots: string[];
|
|
upvotes: number;
|
|
downvotes: number;
|
|
commentCount: number;
|
|
version: number;
|
|
changelog: string;
|
|
author: string;
|
|
authorName: string;
|
|
created: string;
|
|
}
|
|
|
|
export interface WorkshopVote {
|
|
id: string;
|
|
submission: string;
|
|
user: string;
|
|
value: 1 | -1;
|
|
}
|
|
|
|
export interface WorkshopComment {
|
|
id: string;
|
|
submission: string;
|
|
author: string;
|
|
content: string;
|
|
created: string;
|
|
updated: string;
|
|
expand?: { author?: { id: string; name?: string; username?: string } };
|
|
}
|