mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-10 07:25:48 +01:00
🏗️ Migrate config list to tRPC
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
import { Center, Dialog, Loader, Notification, Select, Tooltip } from '@mantine/core';
|
import { Center, Dialog, Loader, Notification, Select, Tooltip } from '@mantine/core';
|
||||||
import { useToggle } from '@mantine/hooks';
|
import { useToggle } from '@mantine/hooks';
|
||||||
import { useQuery } from '@tanstack/react-query';
|
import { notifications } from '@mantine/notifications';
|
||||||
|
import { IconCheck } from '@tabler/icons-react';
|
||||||
import { setCookie } from 'cookies-next';
|
import { setCookie } from 'cookies-next';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { notifications } from '@mantine/notifications';
|
import { api } from '~/utils/api';
|
||||||
import { IconCheck } from '@tabler/icons-react';
|
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '../../config/provider';
|
||||||
|
|
||||||
export default function ConfigChanger() {
|
export default function ConfigChanger() {
|
||||||
@@ -95,10 +95,4 @@ export default function ConfigChanger() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const useConfigsQuery = () =>
|
const useConfigsQuery = () => api.config.all.useQuery();
|
||||||
useQuery({
|
|
||||||
queryKey: ['config/get-all'],
|
|
||||||
queryFn: fetchConfigs,
|
|
||||||
});
|
|
||||||
|
|
||||||
const fetchConfigs = async () => (await (await fetch('/api/configs')).json()) as string[];
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { createTRPCRouter } from '~/server/api/trpc';
|
import { createTRPCRouter } from '~/server/api/trpc';
|
||||||
import { appRouter } from './routers/app';
|
import { appRouter } from './routers/app';
|
||||||
import { rssRouter } from './routers/rss';
|
import { rssRouter } from './routers/rss';
|
||||||
|
import { configRouter } from './routers/config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the primary router for your server.
|
* This is the primary router for your server.
|
||||||
@@ -10,6 +11,7 @@ import { rssRouter } from './routers/rss';
|
|||||||
export const rootRouter = createTRPCRouter({
|
export const rootRouter = createTRPCRouter({
|
||||||
app: appRouter,
|
app: appRouter,
|
||||||
rss: rssRouter,
|
rss: rssRouter,
|
||||||
|
config: configRouter,
|
||||||
});
|
});
|
||||||
|
|
||||||
// export type definition of API
|
// export type definition of API
|
||||||
|
|||||||
12
src/server/api/routers/config.ts
Normal file
12
src/server/api/routers/config.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import { createTRPCRouter, publicProcedure } from '../trpc';
|
||||||
|
|
||||||
|
export const configRouter = createTRPCRouter({
|
||||||
|
all: publicProcedure.query(async () => {
|
||||||
|
// Get all the configs in the /data/configs folder
|
||||||
|
// All the files that end in ".json"
|
||||||
|
const files = fs.readdirSync('./data/configs').filter((file) => file.endsWith('.json'));
|
||||||
|
// Strip the .json extension from the file name
|
||||||
|
return files.map((file) => file.replace('.json', ''));
|
||||||
|
}),
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user