diff --git a/packages/api/handlers/fetch-from-legacy.ts b/packages/api/handlers/fetch-from-legacy.ts new file mode 100644 index 0000000..ad20770 --- /dev/null +++ b/packages/api/handlers/fetch-from-legacy.ts @@ -0,0 +1,18 @@ +import { respond } from '@roleypoly/api/utils/api-tools'; +import { asEditor } from '@roleypoly/api/utils/guild'; +import { + fetchLegacyServer, + transformLegacyGuild, +} from '@roleypoly/api/utils/import-from-legacy'; +import { notFound } from '@roleypoly/api/utils/responses'; + +export const FetchFromLegacy = asEditor({}, (session, { guildID }) => async () => { + const legacyGuild = await fetchLegacyServer(guildID); + if (!legacyGuild) { + return notFound(); + } + + const transformedGuild = transformLegacyGuild(legacyGuild); + + return respond(transformedGuild); +}); diff --git a/packages/api/index.ts b/packages/api/index.ts index cd221d7..efd995e 100644 --- a/packages/api/index.ts +++ b/packages/api/index.ts @@ -1,5 +1,6 @@ import { BotJoin } from './handlers/bot-join'; import { ClearGuildCache } from './handlers/clear-guild-cache'; +import { FetchFromLegacy } from './handlers/fetch-from-legacy'; import { GetPickerData } from './handlers/get-picker-data'; import { GetSession } from './handlers/get-session'; import { GetSlug } from './handlers/get-slug'; @@ -29,9 +30,12 @@ router.add('GET', 'get-slug', GetSlug); router.add('GET', 'get-picker-data', GetPickerData); router.add('PATCH', 'update-roles', UpdateRoles); router.add('PATCH', 'update-guild', UpdateGuild); -router.add('POST', 'sync-from-legacy', SyncFromLegacy); router.add('POST', 'clear-guild-cache', ClearGuildCache); +// Legacy sync stuff +router.add('POST', 'sync-from-legacy', SyncFromLegacy); +router.add('GET', 'fetch-from-legacy', FetchFromLegacy); + // Tester Routes router.add('GET', 'x-headers', (request) => { const headers: { [x: string]: string } = {}; diff --git a/packages/api/utils/guild.ts b/packages/api/utils/guild.ts index b7edc87..7008317 100644 --- a/packages/api/utils/guild.ts +++ b/packages/api/utils/guild.ts @@ -168,7 +168,9 @@ export const getGuildData = async (id: string): Promise => { }; if (!guildData) { - return empty; + return { + ...empty, + }; } return { diff --git a/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.stories.tsx b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.stories.tsx new file mode 100644 index 0000000..5953a98 --- /dev/null +++ b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.stories.tsx @@ -0,0 +1,13 @@ +import { presentableGuild, roleypolyGuild } from '../../fixtures/storyData'; +import { EditorSyncFromLegacy } from './EditorSyncFromLegacy'; + +export default { + title: 'Organisms/Editor/Sync From Legacy', + component: EditorSyncFromLegacy, + args: { + guild: presentableGuild, + guildSlug: roleypolyGuild, + }, +}; + +export const syncFromLegacy = (args) => ; diff --git a/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.styled.ts b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.styled.ts new file mode 100644 index 0000000..e9c3b5a --- /dev/null +++ b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.styled.ts @@ -0,0 +1,2 @@ +import styled from 'styled-components'; +export const EditorSyncFromLegacyStyled = styled.div``; diff --git a/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.tsx b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.tsx new file mode 100644 index 0000000..b289c8b --- /dev/null +++ b/packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.tsx @@ -0,0 +1,25 @@ +import { + EditorUtilityProps, + EditorUtilityShell, +} from '@roleypoly/design-system/molecules/editor-utility-shell'; +import { PresentableGuild } from '@roleypoly/types'; +import { GoShield } from 'react-icons/go'; + +export type EditorSyncFromLegacyProps = { + guild: PresentableGuild; +} & EditorUtilityProps; + +export const EditorAccessControl = (props: EditorSyncFromLegacyProps) => { + return ( + } + hasChanges={false} + onSubmit={props.onSubmit} + onExit={props.onExit} + > +
hi
+
+ ); +}; diff --git a/packages/design-system/organisms/editor-sync-from-legacy/index.ts b/packages/design-system/organisms/editor-sync-from-legacy/index.ts new file mode 100644 index 0000000..61472bf --- /dev/null +++ b/packages/design-system/organisms/editor-sync-from-legacy/index.ts @@ -0,0 +1 @@ +export * from './EditorSyncFromLegacy';