mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-13 00:02:37 +10:00
feat(ui): more ui improvements
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
import { EnumDictionary } from "../utils/types";
|
||||
import https from "https";
|
||||
import { useGlobalCertificateAuthority } from "~/server/plugins/ca";
|
||||
import { useCertificateAuthority } from "~/server/plugins/ca";
|
||||
import prisma from "../db/database";
|
||||
import { ClientCapabilities } from "@prisma/client";
|
||||
|
||||
@ -48,7 +48,7 @@ class CapabilityManager {
|
||||
)
|
||||
return false;
|
||||
|
||||
const ca = useGlobalCertificateAuthority();
|
||||
const ca = useCertificateAuthority();
|
||||
const serverCertificate = await ca.fetchClientCertificate("server");
|
||||
if (!serverCertificate)
|
||||
throw new Error(
|
||||
|
||||
@ -45,6 +45,11 @@ interface GameResult {
|
||||
publishers: Array<{ id: number; name: string }>;
|
||||
|
||||
number_of_user_reviews: number; // Doesn't provide an actual rating, so kinda useless
|
||||
original_release_date?: string;
|
||||
|
||||
expected_release_day?: number;
|
||||
expected_release_month?: number;
|
||||
expected_release_year?: number;
|
||||
|
||||
image: {
|
||||
icon_url: string;
|
||||
@ -180,11 +185,20 @@ export class GiantBombProvider implements MetadataProvider {
|
||||
|
||||
const images = [banner, ...imageURLs.map(createObject)];
|
||||
|
||||
const releaseDate = gameData.original_release_date
|
||||
? moment(gameData.original_release_date).toDate()
|
||||
: moment(
|
||||
`${gameData.expected_release_day ?? 1}/${
|
||||
gameData.expected_release_month ?? 1
|
||||
}/${gameData.expected_release_year ?? new Date().getFullYear()}`
|
||||
).toDate();
|
||||
|
||||
const metadata: GameMetadata = {
|
||||
id: gameData.guid,
|
||||
name: gameData.name,
|
||||
shortDescription: gameData.deck,
|
||||
description: longDescription,
|
||||
released: releaseDate,
|
||||
|
||||
reviewCount: 0,
|
||||
reviewRating: 0,
|
||||
|
||||
@ -26,10 +26,10 @@ export abstract class MetadataProvider {
|
||||
abstract search(query: string): Promise<GameMetadataSearchResult[]>;
|
||||
abstract fetchGame(params: _FetchGameMetadataParams): Promise<GameMetadata>;
|
||||
abstract fetchPublisher(
|
||||
params: _FetchPublisherMetadataParams,
|
||||
params: _FetchPublisherMetadataParams
|
||||
): Promise<PublisherMetadata>;
|
||||
abstract fetchDeveloper(
|
||||
params: _FetchDeveloperMetadataParams,
|
||||
params: _FetchDeveloperMetadataParams
|
||||
): Promise<DeveloperMetadata>;
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ export class MetadataHandler {
|
||||
Object.assign({}, result, {
|
||||
sourceId: provider.id(),
|
||||
sourceName: provider.name(),
|
||||
}),
|
||||
})
|
||||
);
|
||||
resolve(mappedResults);
|
||||
});
|
||||
@ -74,7 +74,7 @@ export class MetadataHandler {
|
||||
|
||||
async createGame(
|
||||
result: InternalGameMetadataResult,
|
||||
libraryBasePath: string,
|
||||
libraryBasePath: string
|
||||
) {
|
||||
const provider = this.providers.get(result.sourceId);
|
||||
if (!provider)
|
||||
@ -92,7 +92,7 @@ export class MetadataHandler {
|
||||
|
||||
const [createObject, pullObjects, dumpObjects] = this.objectHandler.new(
|
||||
{},
|
||||
["internal:read"],
|
||||
["internal:read"]
|
||||
);
|
||||
|
||||
let metadata;
|
||||
@ -127,6 +127,7 @@ export class MetadataHandler {
|
||||
|
||||
mReviewCount: metadata.reviewCount,
|
||||
mReviewRating: metadata.reviewRating,
|
||||
mReleased: metadata.released,
|
||||
|
||||
mIconId: metadata.icon,
|
||||
mBannerId: metadata.bannerId,
|
||||
@ -144,7 +145,7 @@ export class MetadataHandler {
|
||||
return (await this.fetchDeveloperPublisher(
|
||||
query,
|
||||
"fetchDeveloper",
|
||||
"developer",
|
||||
"developer"
|
||||
)) as Developer;
|
||||
}
|
||||
|
||||
@ -152,7 +153,7 @@ export class MetadataHandler {
|
||||
return (await this.fetchDeveloperPublisher(
|
||||
query,
|
||||
"fetchPublisher",
|
||||
"publisher",
|
||||
"publisher"
|
||||
)) as Publisher;
|
||||
}
|
||||
|
||||
@ -161,7 +162,7 @@ export class MetadataHandler {
|
||||
private async fetchDeveloperPublisher(
|
||||
query: string,
|
||||
functionName: any,
|
||||
databaseName: any,
|
||||
databaseName: any
|
||||
) {
|
||||
const existing = await (prisma as any)[databaseName].findFirst({
|
||||
where: {
|
||||
@ -173,7 +174,7 @@ export class MetadataHandler {
|
||||
for (const provider of this.providers.values() as any) {
|
||||
const [createObject, pullObjects, dumpObjects] = this.objectHandler.new(
|
||||
{},
|
||||
["internal:read"],
|
||||
["internal:read"]
|
||||
);
|
||||
let result;
|
||||
try {
|
||||
@ -206,7 +207,7 @@ export class MetadataHandler {
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`No metadata provider found a ${databaseName} for "${query}"`,
|
||||
`No metadata provider found a ${databaseName} for "${query}"`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
76
server/internal/metadata/types.d.ts
vendored
76
server/internal/metadata/types.d.ts
vendored
@ -2,66 +2,68 @@ import { Developer, Publisher } from "@prisma/client";
|
||||
import { ObjectReference } from "../objects";
|
||||
|
||||
export interface GameMetadataSearchResult {
|
||||
id: string;
|
||||
name: string;
|
||||
icon: string;
|
||||
description: string;
|
||||
year: number;
|
||||
id: string;
|
||||
name: string;
|
||||
icon: string;
|
||||
description: string;
|
||||
year: number;
|
||||
}
|
||||
|
||||
export interface GameMetadataSource {
|
||||
sourceId: string;
|
||||
sourceName: string;
|
||||
sourceId: string;
|
||||
sourceName: string;
|
||||
}
|
||||
|
||||
export type InternalGameMetadataResult = GameMetadataSearchResult & GameMetadataSource;
|
||||
export type InternalGameMetadataResult = GameMetadataSearchResult &
|
||||
GameMetadataSource;
|
||||
|
||||
export interface GameMetadata {
|
||||
id: string;
|
||||
name: string;
|
||||
shortDescription: string;
|
||||
description: string;
|
||||
id: string;
|
||||
name: string;
|
||||
shortDescription: string;
|
||||
description: string;
|
||||
released: Date;
|
||||
|
||||
// These are created using utility functions passed to the metadata loader
|
||||
// (that then call back into the metadata provider chain)
|
||||
publishers: Publisher[]
|
||||
developers: Developer[]
|
||||
// These are created using utility functions passed to the metadata loader
|
||||
// (that then call back into the metadata provider chain)
|
||||
publishers: Publisher[];
|
||||
developers: Developer[];
|
||||
|
||||
reviewCount: number;
|
||||
reviewRating: number;
|
||||
reviewCount: number;
|
||||
reviewRating: number;
|
||||
|
||||
// Created with another utility function
|
||||
icon: ObjectReference,
|
||||
bannerId: ObjectReference,
|
||||
coverId: ObjectReference;
|
||||
images: ObjectReference[],
|
||||
// Created with another utility function
|
||||
icon: ObjectReference;
|
||||
bannerId: ObjectReference;
|
||||
coverId: ObjectReference;
|
||||
images: ObjectReference[];
|
||||
}
|
||||
|
||||
export interface PublisherMetadata {
|
||||
id: string;
|
||||
name: string;
|
||||
shortDescription: string;
|
||||
description: string;
|
||||
id: string;
|
||||
name: string;
|
||||
shortDescription: string;
|
||||
description: string;
|
||||
|
||||
logo: ObjectReference;
|
||||
banner: ObjectReference;
|
||||
website: String;
|
||||
logo: ObjectReference;
|
||||
banner: ObjectReference;
|
||||
website: String;
|
||||
}
|
||||
|
||||
export type DeveloperMetadata = PublisherMetadata;
|
||||
|
||||
export interface _FetchGameMetadataParams {
|
||||
id: string,
|
||||
id: string;
|
||||
|
||||
publisher: (query: string) => Promise<Publisher>
|
||||
developer: (query: string) => Promise<Developer>
|
||||
publisher: (query: string) => Promise<Publisher>;
|
||||
developer: (query: string) => Promise<Developer>;
|
||||
|
||||
createObject: (url: string) => ObjectReference
|
||||
createObject: (url: string) => ObjectReference;
|
||||
}
|
||||
|
||||
export interface _FetchPublisherMetadataParams {
|
||||
query: string;
|
||||
createObject: (url: string) => ObjectReference;
|
||||
query: string;
|
||||
createObject: (url: string) => ObjectReference;
|
||||
}
|
||||
|
||||
export type _FetchDeveloperMetadataParams = _FetchPublisherMetadataParams;
|
||||
export type _FetchDeveloperMetadataParams = _FetchPublisherMetadataParams;
|
||||
|
||||
Reference in New Issue
Block a user