diff --git a/src/components/form/SortableList.tsx b/src/components/form/SortableList.tsx
index 27975bd1..bdbb0fdd 100644
--- a/src/components/form/SortableList.tsx
+++ b/src/components/form/SortableList.tsx
@@ -19,9 +19,14 @@ import classNames from "classnames";
import { Icon, Icons } from "../Icon";
-function SortableItem(props: { id: string }) {
+export interface Item {
+ id: string;
+ name: string;
+}
+
+function SortableItem(props: { item: Item }) {
const { attributes, listeners, setNodeRef, transform, transition } =
- useSortable({ id: props.id });
+ useSortable({ id: props.item.id });
const style = {
transform: CSS.Transform.toString(transform),
@@ -39,15 +44,15 @@ function SortableItem(props: { id: string }) {
transform && "cursor-grabbing",
)}
>
- {props.id}
+ {props.item.name}
);
}
export function SortableList(props: {
- items: string[];
- setItems: (items: string[]) => void;
+ items: Item[];
+ setItems: (items: Item[]) => void;
}) {
const sensors = useSensors(
useSensor(PointerSensor),
@@ -61,8 +66,8 @@ export function SortableList(props: {
if (!over) return;
if (active.id !== over.id) {
const currentItems = props.items;
- const oldIndex = currentItems.indexOf(active.id as string);
- const newIndex = currentItems.indexOf(over.id as string);
+ const oldIndex = currentItems.findIndex((item) => item.id === active.id);
+ const newIndex = currentItems.findIndex((item) => item.id === over.id);
const newItems = arrayMove(currentItems, oldIndex, newIndex);
props.setItems(newItems);
}
@@ -79,8 +84,8 @@ export function SortableList(props: {
strategy={verticalListSortingStrategy}
>
- {props.items.map((id) => (
-
+ {props.items.map((item) => (
+
))}
diff --git a/src/pages/parts/settings/PreferencesPart.tsx b/src/pages/parts/settings/PreferencesPart.tsx
index 1afef469..de943325 100644
--- a/src/pages/parts/settings/PreferencesPart.tsx
+++ b/src/pages/parts/settings/PreferencesPart.tsx
@@ -1,6 +1,8 @@
import classNames from "classnames";
import { useTranslation } from "react-i18next";
+import { getCachedMetadata } from "@/backend/helpers/providerApi";
+import { getProviders } from "@/backend/providers/providers";
import { Toggle } from "@/components/buttons/Toggle";
import { FlagIcon } from "@/components/FlagIcon";
import { Dropdown } from "@/components/form/Dropdown";
@@ -107,8 +109,16 @@ export function PreferencesPart(props: {
({
+ id,
+ name:
+ getProviders()
+ .listSources()
+ .find((s) => s.id === id)?.name || id,
+ }))}
+ setItems={(items) =>
+ props.setSourceOrder(items.map((item) => item.id))
+ }
/>