From 881ed31dd130cad2b3c2c496b9e5dc11d66406a5 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 6 Jul 2023 00:03:21 -0700 Subject: [PATCH] Create UserTransformer Transforms data into User objects and back again. We added the UserParams interface to handle sending data back to the API in a uniform manner. We also modified the User object to store the user's language and theme for simplicity's sake, since the app state wants this information today. --- transformers/UserTransformer.tsx | 26 ++++++++++++++++++++++++++ types/User.d.ts | 2 ++ types/UserParams.d.ts | 8 ++++++++ 3 files changed, 36 insertions(+) create mode 100644 transformers/UserTransformer.tsx create mode 100644 types/UserParams.d.ts diff --git a/transformers/UserTransformer.tsx b/transformers/UserTransformer.tsx new file mode 100644 index 00000000..225b1aa1 --- /dev/null +++ b/transformers/UserTransformer.tsx @@ -0,0 +1,26 @@ +// Transforms API response to User object +export function toObject(data: any): User { + return { + id: data.id, + username: data.username, + avatar: { + picture: data.avatar.picture, + element: data.avatar.element, + }, + gender: data.gender, + language: data.language, + theme: data.theme, + } as User +} + +// Transforms User object into API parameters +export function toParams(data: User): UserParams { + return { + username: data.username, + picture: data.avatar.picture, + element: data.avatar.element, + language: data.language, + gender: data.gender, + theme: data.theme, + } +} diff --git a/types/User.d.ts b/types/User.d.ts index b79e76f2..e80c561c 100644 --- a/types/User.d.ts +++ b/types/User.d.ts @@ -7,4 +7,6 @@ interface User { element: string } gender: number + language: string + theme: string } diff --git a/types/UserParams.d.ts b/types/UserParams.d.ts new file mode 100644 index 00000000..e7c92d57 --- /dev/null +++ b/types/UserParams.d.ts @@ -0,0 +1,8 @@ +interface UserParams { + username?: string + picture?: string + element?: string + language?: string + gender?: number + theme?: string +}