|
@@ -73,6 +73,7 @@ export function DialogModel(props: { providerID?: string }) {
|
|
|
map(([model, info]) => ({
|
|
map(([model, info]) => ({
|
|
|
value: { providerID: provider.id, modelID: model },
|
|
value: { providerID: provider.id, modelID: model },
|
|
|
title: info.name ?? model,
|
|
title: info.name ?? model,
|
|
|
|
|
+ releaseDate: info.release_date,
|
|
|
description: favorites.some((item) => item.providerID === provider.id && item.modelID === model)
|
|
description: favorites.some((item) => item.providerID === provider.id && item.modelID === model)
|
|
|
? "(Favorite)"
|
|
? "(Favorite)"
|
|
|
: undefined,
|
|
: undefined,
|
|
@@ -91,10 +92,7 @@ export function DialogModel(props: { providerID?: string }) {
|
|
|
return false
|
|
return false
|
|
|
return true
|
|
return true
|
|
|
}),
|
|
}),
|
|
|
- sortBy(
|
|
|
|
|
- (x) => x.footer !== "Free",
|
|
|
|
|
- (x) => x.title,
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ (options) => sortModelOptions(options, props.providerID !== undefined),
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
)
|
|
)
|
|
@@ -173,3 +171,15 @@ export function DialogModel(props: { providerID?: string }) {
|
|
|
/>
|
|
/>
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+export function sortModelOptions<T extends { footer?: string; releaseDate: string; title: string }>(
|
|
|
|
|
+ options: T[],
|
|
|
|
|
+ newestFirst: boolean,
|
|
|
|
|
+) {
|
|
|
|
|
+ if (newestFirst) return sortBy(options, [(option) => option.releaseDate, "desc"], (option) => option.title)
|
|
|
|
|
+ return sortBy(
|
|
|
|
|
+ options,
|
|
|
|
|
+ (option) => option.footer !== "Free",
|
|
|
|
|
+ (option) => option.title,
|
|
|
|
|
+ )
|
|
|
|
|
+}
|