fix: restore ArchiveTeam Warrior as a proper integration

The widget-only integrations refactor incorrectly removed the
ArchiveTeam Warrior integration entirely. It only needed to be
excluded from auto-seeding (by removing defaultUrl), not deleted.

This restores the integration class, reverts the widget/router/handler
to use integration middleware, and removes archiveTeamWarrior from the
widget-only-integrations migration.
This commit is contained in:
Thomas Camlong committed 2026-06-27 10:57:13 +02:00
1 parent d18d07d2f1
commit 8a5ad5861b
18 files changed
+573 -388

No files matched your search

@@ -1,37 +1,39 @@
import { observable } from "@trpc/server/observable";
import { z } from "zod/v4";
import type { ArchiveTeamWarriorStatus } from "@homarr/request-handler/archive-team-warrior";
import type { ArchiveTeamWarriorStatus } from "@homarr/integrations";
import { archiveTeamWarriorRequestHandler } from "@homarr/request-handler/archive-team-warrior";
import { createOneIntegrationMiddleware } from "../../middlewares/integration";
import { createTRPCRouter, publicProcedure } from "../../trpc";
const inputSchema = z.object({ url: z.string().url() });
export const archiveTeamWarriorRouter = createTRPCRouter({
getStatus: publicProcedure.input(inputSchema).query(async ({ input }) => {
const handler = archiveTeamWarriorRequestHandler.handler({ url: input.url });
const { data, timestamp } = await handler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
getStatus: publicProcedure
.concat(createOneIntegrationMiddleware("query", "archiveTeamWarrior"))
.query(async ({ ctx }) => {
const handler = archiveTeamWarriorRequestHandler.handler(ctx.integration, {});
const { data, timestamp } = await handler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
return {
status: data,
updatedAt: timestamp,
};
}),
subscribeStatus: publicProcedure.input(inputSchema).subscription(({ input }) => {
return observable<{ status: ArchiveTeamWarriorStatus; updatedAt: Date }>((emit) => {
const handler = archiveTeamWarriorRequestHandler.handler({ url: input.url });
const unsubscribe = handler.subscribe((status) => {
emit.next({
status,
updatedAt: new Date(),
});
});
return () => {
unsubscribe();
return {
status: data,
updatedAt: timestamp,
};
});
}),
}),
subscribeStatus: publicProcedure
.concat(createOneIntegrationMiddleware("query", "archiveTeamWarrior"))
.subscription(({ ctx }) => {
return observable<{ status: ArchiveTeamWarriorStatus; updatedAt: Date }>((emit) => {
const handler = archiveTeamWarriorRequestHandler.handler(ctx.integration, {});
const unsubscribe = handler.subscribe((status) => {
emit.next({
status,
updatedAt: new Date(),
});
});
return () => {
unsubscribe();
};
});
}),
});