From c4dda617b1f1634cdbc00f4a63e00f09c33e5eb1 Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Sun, 1 Aug 2021 13:17:34 -0400 Subject: [PATCH] chore: sync from legacy redo --- packages/api/handlers/fetch-from-legacy.ts | 18 +++++++++++++ packages/api/index.ts | 6 ++++- packages/api/utils/guild.ts | 4 ++- .../EditorSyncFromLegacy.stories.tsx | 13 ++++++++++ .../EditorSyncFromLegacy.styled.ts | 2 ++ .../EditorSyncFromLegacy.tsx | 25 +++++++++++++++++++ .../editor-sync-from-legacy/index.ts | 1 + 7 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 packages/api/handlers/fetch-from-legacy.ts create mode 100644 packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.stories.tsx create mode 100644 packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.styled.ts create mode 100644 packages/design-system/organisms/editor-sync-from-legacy/EditorSyncFromLegacy.tsx create mode 100644 packages/design-system/organisms/editor-sync-from-legacy/index.ts 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';