feat: add import for config files from oldmarr (#1019)
* wip: add oldmarr config import
* wip: add support for wrong amount of categories / sections with autofix, color mapping, position adjustments of wrappers
* fix: lockfile broken
* feat: add support for form data trpc requests
* wip: improve file upload
* refactor: restructure import, add import configuration
* wip: add configurations for import to modal
* refactor: move oldmarr import to old-import package
* fix: column count not respects screen size for board
* feat: add beta badge for oldmarr config import
* chore: address pull request feedback
* fix: format issues
* fix: inconsistent versions
* fix: deepsource issues
* fix: revert {} to Record<string, never> convertion to prevent typecheck issue
* fix: inconsistent zod version
* fix: format issue
* chore: address pull request feedback
* fix: wrong import
* fix: broken lock file
* fix: inconsistent versions
* fix: format issues
This commit is contained in:
75
packages/old-import/src/widgets/definitions/index.ts
Normal file
75
packages/old-import/src/widgets/definitions/index.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
import { objectEntries } from "@homarr/common";
|
||||
import type { WidgetKind } from "@homarr/definitions";
|
||||
|
||||
import type { OldmarrBookmarkDefinition } from "./bookmark";
|
||||
import type { OldmarrCalendarDefinition } from "./calendar";
|
||||
import type { OldmarrDashdotDefinition } from "./dashdot";
|
||||
import type { OldmarrDateDefinition } from "./date";
|
||||
import type { OldmarrDlspeedDefinition } from "./dlspeed";
|
||||
import type { OldmarrDnsHoleControlsDefinition } from "./dns-hole-controls";
|
||||
import type { OldmarrDnsHoleSummaryDefinition } from "./dns-hole-summary";
|
||||
import type { OldmarrHealthMonitoringDefinition } from "./health-monitoring";
|
||||
import type { OldmarrIframeDefinition } from "./iframe";
|
||||
import type { OldmarrIndexerManagerDefinition } from "./indexer-manager";
|
||||
import type { OldmarrMediaRequestListDefinition } from "./media-requests-list";
|
||||
import type { OldmarrMediaRequestStatsDefinition } from "./media-requests-stats";
|
||||
import type { OldmarrMediaServerDefinition } from "./media-server";
|
||||
import type { OldmarrMediaTranscodingDefinition } from "./media-transcoding";
|
||||
import type { OldmarrNotebookDefinition } from "./notebook";
|
||||
import type { OldmarrRssDefinition } from "./rss";
|
||||
import type { OldmarrSmartHomeEntityStateDefinition } from "./smart-home-entity-state";
|
||||
import type { OldmarrSmartHomeTriggerAutomationDefinition } from "./smart-home-trigger-automation";
|
||||
import type { OldmarrTorrentStatusDefinition } from "./torrent-status";
|
||||
import type { OldmarrUsenetDefinition } from "./usenet";
|
||||
import type { OldmarrVideoStreamDefinition } from "./video-stream";
|
||||
import type { OldmarrWeatherDefinition } from "./weather";
|
||||
|
||||
export type OldmarrWidgetDefinitions =
|
||||
| OldmarrWeatherDefinition
|
||||
| OldmarrDateDefinition
|
||||
| OldmarrCalendarDefinition
|
||||
| OldmarrIndexerManagerDefinition
|
||||
| OldmarrDashdotDefinition
|
||||
| OldmarrUsenetDefinition
|
||||
| OldmarrTorrentStatusDefinition
|
||||
| OldmarrDlspeedDefinition
|
||||
| OldmarrRssDefinition
|
||||
| OldmarrVideoStreamDefinition
|
||||
| OldmarrIframeDefinition
|
||||
| OldmarrMediaServerDefinition
|
||||
| OldmarrMediaRequestListDefinition
|
||||
| OldmarrMediaRequestStatsDefinition
|
||||
| OldmarrDnsHoleSummaryDefinition
|
||||
| OldmarrDnsHoleControlsDefinition
|
||||
| OldmarrBookmarkDefinition
|
||||
| OldmarrNotebookDefinition
|
||||
| OldmarrSmartHomeEntityStateDefinition
|
||||
| OldmarrSmartHomeTriggerAutomationDefinition
|
||||
| OldmarrHealthMonitoringDefinition
|
||||
| OldmarrMediaTranscodingDefinition;
|
||||
|
||||
export const widgetKindMapping = {
|
||||
app: null, // In oldmarr apps were not widgets
|
||||
clock: "date",
|
||||
calendar: "calendar",
|
||||
weather: "weather",
|
||||
rssFeed: "rss",
|
||||
video: "video-stream",
|
||||
iframe: "iframe",
|
||||
mediaServer: "media-server",
|
||||
dnsHoleSummary: "dns-hole-summary",
|
||||
dnsHoleControls: "dns-hole-controls",
|
||||
notebook: "notebook",
|
||||
"smartHome-entityState": "smart-home/entity-state",
|
||||
"smartHome-executeAutomation": "smart-home/trigger-automation",
|
||||
"mediaRequests-requestList": "media-requests-list",
|
||||
"mediaRequests-requestStats": "media-requests-stats",
|
||||
} satisfies Record<WidgetKind, OldmarrWidgetDefinitions["id"] | null>;
|
||||
// Use null for widgets that did not exist in oldmarr
|
||||
// TODO: revert assignment so that only old widgets are needed in the object,
|
||||
// this can be done ones all widgets are implemented
|
||||
|
||||
export type WidgetMapping = typeof widgetKindMapping;
|
||||
|
||||
export const mapKind = (kind: OldmarrWidgetDefinitions["id"]): WidgetKind | undefined =>
|
||||
objectEntries(widgetKindMapping).find(([_, value]) => value === kind)?.[0];
|
||||
Reference in New Issue
Block a user