Skip to content

Commit 56baadb

Browse files
committed
Merge branch 'main' of https://github.com/civitai/civitai into main
2 parents f83fde5 + 57df60c commit 56baadb

File tree

8 files changed

+77
-62
lines changed

8 files changed

+77
-62
lines changed

src/components/ImageGeneration/GeneratedImageActions.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ export function GeneratedImageActions({
9595
const workflow = data?.find((x) => x.id === image.workflowId);
9696
if (workflow) {
9797
const step = workflow.steps.find((x) => x.name === image.stepName);
98+
// TODO - handle resources
99+
const resources = step?.resources?.map(({ id, strength }) => ({ id, strength }));
98100
return { url: image.url, meta: step?.params };
99101
}
100102
})

src/components/ImageGeneration/GenerationForm/ResourceSelectModal2.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,11 @@ function ResourceSelectCard({
660660
const { id } = version;
661661

662662
setLoading(true);
663-
await fetchGenerationData({ type: 'modelVersion', id }).then((data) => {
663+
await fetchGenerationData({
664+
type: 'modelVersion',
665+
id,
666+
generation: selectSource !== 'generation' ? false : undefined,
667+
}).then((data) => {
664668
const resource = data.resources[0];
665669
if (selectSource !== 'generation') {
666670
onSelect({ ...resource, image });

src/components/Model/Infinite/ModelFiltersDropdown.tsx

-10
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ export function DumbModelFiltersDropdown({
103103
(mergedFilters.earlyAccess ? 1 : 0) +
104104
(mergedFilters.supportsGeneration ? 1 : 0) +
105105
(mergedFilters.fromPlatform ? 1 : 0) +
106-
(mergedFilters.archived ? 1 : 0) +
107106
(mergedFilters.hidden ? 1 : 0) +
108107
(mergedFilters.fileFormats?.length ?? 0) +
109108
(mergedFilters.period && mergedFilters.period !== MetricTimeframe.AllTime ? 1 : 0);
@@ -118,7 +117,6 @@ export function DumbModelFiltersDropdown({
118117
supportsGeneration: false,
119118
followed: false,
120119
hidden: undefined,
121-
archived: undefined,
122120
fileFormats: undefined,
123121
fromPlatform: false,
124122
period: MetricTimeframe.AllTime,
@@ -134,7 +132,6 @@ export function DumbModelFiltersDropdown({
134132
supportsGeneration: undefined,
135133
followed: undefined,
136134
hidden: undefined,
137-
archived: undefined,
138135
fileFormats: undefined,
139136
fromPlatform: undefined,
140137
period: MetricTimeframe.AllTime,
@@ -331,13 +328,6 @@ export function DumbModelFiltersDropdown({
331328
</Chip>
332329
</>
333330
)}
334-
<Chip
335-
checked={mergedFilters.archived}
336-
onChange={(checked) => handleChange({ archived: checked })}
337-
{...chipProps}
338-
>
339-
<span>Include Archived</span>
340-
</Chip>
341331
</Group>
342332
</Stack>
343333
{filterLength > 0 && (

src/pages/api/admin/test.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ const test = [1183765, 164821];
2929
export default WebhookEndpoint(async function (req: NextApiRequest, res: NextApiResponse) {
3030
try {
3131
const session = await getServerAuthSession({ req, res });
32-
// const modelVersions = await getGenerationResourceData({
33-
// ids: [...test, ...covered, ...notCovered],
34-
// user: session?.user,
35-
// });
32+
const modelVersions = await getResourceData({
33+
ids: [1182093],
34+
user: session?.user,
35+
});
3636
// const modelVersions = await dbRead.$queryRaw`
3737
// SELECT
3838
// mv."id",
@@ -66,12 +66,12 @@ export default WebhookEndpoint(async function (req: NextApiRequest, res: NextApi
6666
// WHERE mv.id IN (${Prisma.join([1325378])})
6767
// `;
6868

69-
const thread = await getCommentsThreadDetails2({
70-
entityId: 10936,
71-
entityType: 'article',
72-
});
69+
// const thread = await getCommentsThreadDetails2({
70+
// entityId: 10936,
71+
// entityType: 'article',
72+
// });
7373

74-
res.status(200).send(thread);
74+
res.status(200).send(modelVersions);
7575
} catch (e) {
7676
console.log(e);
7777
res.status(400).end();

src/pages/models/[id]/[[...slug]].tsx

+23-26
Original file line numberDiff line numberDiff line change
@@ -768,32 +768,6 @@ export default function ModelDetailsV2({
768768
>
769769
Edit Model
770770
</Menu.Item>
771-
{!model.mode ? (
772-
<>
773-
<Menu.Item
774-
icon={<IconArchive size={14} stroke={1.5} />}
775-
onClick={() => handleChangeMode(ModelModifier.Archived)}
776-
>
777-
Archive
778-
</Menu.Item>
779-
{isModerator && (
780-
<Menu.Item
781-
icon={<IconCircleMinus size={14} stroke={1.5} />}
782-
onClick={() => handleChangeMode(ModelModifier.TakenDown)}
783-
>
784-
Take Down
785-
</Menu.Item>
786-
)}
787-
</>
788-
) : model.mode === ModelModifier.Archived ||
789-
(isModerator && model.mode === ModelModifier.TakenDown) ? (
790-
<Menu.Item
791-
icon={<IconReload size={14} stroke={1.5} />}
792-
onClick={() => handleChangeMode(null)}
793-
>
794-
Bring Back
795-
</Menu.Item>
796-
) : null}
797771
</>
798772
)}
799773
{features.collections && (
@@ -876,6 +850,29 @@ export default function ModelDetailsV2({
876850
entityId={model.id}
877851
key="toggle-searchable-menu-item"
878852
/>
853+
{!model.mode ? (
854+
<>
855+
<Menu.Item
856+
icon={<IconArchive size={14} stroke={1.5} />}
857+
onClick={() => handleChangeMode(ModelModifier.Archived)}
858+
>
859+
Archive
860+
</Menu.Item>
861+
<Menu.Item
862+
icon={<IconCircleMinus size={14} stroke={1.5} />}
863+
onClick={() => handleChangeMode(ModelModifier.TakenDown)}
864+
>
865+
Take Down
866+
</Menu.Item>
867+
</>
868+
) : (
869+
<Menu.Item
870+
icon={<IconReload size={14} stroke={1.5} />}
871+
onClick={() => handleChangeMode(null)}
872+
>
873+
Bring Back
874+
</Menu.Item>
875+
)}
879876
</>
880877
)}
881878
</>

src/server/schema/generation.schema.ts

+14-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { userTierSchema } from '~/server/schema/user.schema';
55
import { auditPrompt } from '~/utils/metadata/audit';
66
import { imageSchema } from './image.schema';
77
import { GenerationRequestStatus } from '~/server/common/enums';
8-
import { numericStringArray } from '~/utils/zod-helpers';
8+
import { booleanString, numericStringArray } from '~/utils/zod-helpers';
99
import { modelVersionEarlyAccessConfigSchema } from '~/server/schema/model-version.schema';
1010
// export type GetGenerationResourceInput = z.infer<typeof getGenerationResourceSchema>;
1111
// export const getGenerationResourceSchema = z.object({
@@ -271,13 +271,20 @@ export const checkResourcesCoverageSchema = z.object({
271271
id: z.number(),
272272
});
273273

274-
export type GetGenerationDataInput = z.infer<typeof getGenerationDataSchema>;
274+
const baseSchema = z.object({ generation: booleanString().default(true) });
275+
export type GetGenerationDataInput = z.input<typeof getGenerationDataSchema>;
276+
export type GetGenerationDataSchema = z.infer<typeof getGenerationDataSchema>;
275277
export const getGenerationDataSchema = z.discriminatedUnion('type', [
276-
z.object({ type: z.literal('image'), id: z.coerce.number() }),
277-
z.object({ type: z.literal('video'), id: z.coerce.number() }),
278-
z.object({ type: z.literal('audio'), id: z.coerce.number() }),
279-
z.object({ type: z.literal('modelVersion'), id: z.coerce.number() }),
280-
z.object({ type: z.literal('modelVersions'), ids: numericStringArray() }),
278+
baseSchema.extend({ type: z.literal('image'), id: z.coerce.number() }),
279+
baseSchema.extend({ type: z.literal('video'), id: z.coerce.number() }),
280+
baseSchema.extend({ type: z.literal('audio'), id: z.coerce.number() }),
281+
baseSchema.extend({ type: z.literal('modelVersion'), id: z.coerce.number() }),
282+
baseSchema.extend({
283+
type: z.literal('modelVersions'),
284+
ids: z
285+
.union([z.array(z.coerce.number()), z.coerce.number()])
286+
.transform((val) => (Array.isArray(val) ? val : [val])),
287+
}),
281288
]);
282289

283290
export type BulkDeleteGeneratedImagesInput = z.infer<typeof bulkDeleteGeneratedImagesSchema>;

src/server/services/generation/generation.service.ts

+23-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
CheckResourcesCoverageSchema,
1212
GenerationStatus,
1313
generationStatusSchema,
14-
GetGenerationDataInput,
14+
GetGenerationDataSchema,
1515
GetGenerationResourcesInput,
1616
} from '~/server/schema/generation.schema';
1717

@@ -234,28 +234,39 @@ export const getGenerationData = async ({
234234
query,
235235
user,
236236
}: {
237-
query: GetGenerationDataInput;
237+
query: GetGenerationDataSchema;
238238
user?: SessionUser;
239239
}): Promise<GenerationData> => {
240240
switch (query.type) {
241241
case 'image':
242242
case 'video':
243-
return await getMediaGenerationData({ id: query.id, user });
243+
return await getMediaGenerationData({ id: query.id, user, generation: query.generation });
244244
case 'modelVersion':
245-
return await getModelVersionGenerationData({ versionIds: [query.id], user });
245+
return await getModelVersionGenerationData({
246+
versionIds: [query.id],
247+
user,
248+
generation: query.generation,
249+
});
246250
case 'modelVersions':
247-
return await getModelVersionGenerationData({ versionIds: query.ids, user });
251+
return await getModelVersionGenerationData({
252+
versionIds: query.ids,
253+
user,
254+
generation: query.generation,
255+
});
248256
default:
249257
throw new Error('unsupported generation data type');
250258
}
251259
};
252260

261+
type ResourceType = 'generation' | 'all';
253262
async function getMediaGenerationData({
254263
id,
255264
user,
265+
generation,
256266
}: {
257267
id: number;
258268
user?: SessionUser;
269+
generation: boolean;
259270
}): Promise<GenerationData> {
260271
const media = await dbRead.image.findUnique({
261272
where: { id },
@@ -294,7 +305,8 @@ async function getMediaGenerationData({
294305
const versionIds = [
295306
...new Set(imageResources.map((x) => x.modelVersionId).filter(isDefined)),
296307
];
297-
const resources = await getGenerationResourceData({ ids: versionIds, user }).then((data) =>
308+
const fn = generation ? getGenerationResourceData : getResourceData;
309+
const resources = await fn({ ids: versionIds, user }).then((data) =>
298310
data.map((item) => {
299311
const imageResource = imageResources.find((x) => x.modelVersionId === item.id);
300312
return {
@@ -379,15 +391,18 @@ async function getMediaGenerationData({
379391
const getModelVersionGenerationData = async ({
380392
versionIds,
381393
user,
394+
generation,
382395
}: {
383396
versionIds: number[];
384397
user?: SessionUser;
398+
generation: boolean;
385399
}) => {
386400
if (!versionIds.length) throw new Error('missing version ids');
387-
const resources = await getGenerationResourceData({ ids: versionIds, user });
401+
const fn = generation ? getGenerationResourceData : getResourceData;
402+
const resources = await fn({ ids: versionIds, user });
388403
const checkpoint = resources.find((x) => x.baseModel === 'Checkpoint');
389404
if (checkpoint?.vaeId) {
390-
const [vae] = await getGenerationResourceData({ ids: [checkpoint.vaeId], user });
405+
const [vae] = await fn({ ids: [checkpoint.vaeId], user });
391406
if (vae) resources.push({ ...vae, vaeId: undefined });
392407
}
393408

src/store/generation.store.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export const fetchGenerationData = async (input: GetGenerationDataInput) => {
153153
let key = 'default';
154154
switch (input.type) {
155155
case 'modelVersions':
156-
key = `${input.type}_${input.ids.join('_')}`;
156+
key = `${input.type}_${Array.isArray(input.ids) ? input.ids.join('_') : input.ids}`;
157157
break;
158158
default:
159159
key = `${input.type}_${input.id}`;

0 commit comments

Comments
 (0)