refactor: rename subscription references to subscribe plan and update related imports
This commit is contained in:
parent
cd76ded632
commit
f40f2dadde
28
app/apis/common/get-subscribe-plan.ts
Normal file
28
app/apis/common/get-subscribe-plan.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
import { HttpServer, type THttpServer } from '~/libs/http-server'
|
||||
|
||||
const subscribePlanSchema = z.object({
|
||||
id: z.string(),
|
||||
code: z.string(),
|
||||
name: z.string(),
|
||||
length: z.number(),
|
||||
price: z.number(),
|
||||
status: z.number(),
|
||||
})
|
||||
|
||||
const subscribePlanResponseSchema = z.object({
|
||||
data: z.array(subscribePlanSchema),
|
||||
})
|
||||
|
||||
export type TSubscribePlanSchema = z.infer<typeof subscribePlanSchema>
|
||||
|
||||
export const getSubscribePlan = async (parameters?: THttpServer) => {
|
||||
try {
|
||||
const { data } = await HttpServer(parameters).get(`/api/subscribe-plan`)
|
||||
return subscribePlanResponseSchema.parse(data)
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line unicorn/no-useless-promise-resolve-reject
|
||||
return Promise.reject(error)
|
||||
}
|
||||
}
|
||||
@ -1,26 +0,0 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
import { HttpServer, type THttpServer } from '~/libs/http-server'
|
||||
|
||||
const subscriptionResponseSchema = z.object({
|
||||
data: z.array(
|
||||
z.object({
|
||||
id: z.string(),
|
||||
code: z.string(),
|
||||
name: z.string(),
|
||||
length: z.number(),
|
||||
price: z.number(),
|
||||
status: z.number(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
|
||||
export const getSubscriptions = async (parameters?: THttpServer) => {
|
||||
try {
|
||||
const { data } = await HttpServer(parameters).get(`/api/subscribe-plan`)
|
||||
return subscriptionResponseSchema.parse(data)
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line unicorn/no-useless-promise-resolve-reject
|
||||
return Promise.reject(error)
|
||||
}
|
||||
}
|
||||
@ -117,7 +117,7 @@ export const SuccessModal = ({ isOpen, onClose }: ModalProperties) => {
|
||||
setIsSubscribeOpen(true)
|
||||
}}
|
||||
>
|
||||
Select Subscription
|
||||
Select Subscribe Plan
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
|
||||
@ -11,7 +11,7 @@ import { FormRegister } from '~/layouts/news/form-register'
|
||||
|
||||
import { FooterLinks } from './footer-links'
|
||||
import { FooterNewsletter } from './footer-newsletter'
|
||||
import FormSubscription from './form-subscription'
|
||||
import { FormSubscribePlan } from './form-subscribe-plan'
|
||||
import { HeaderMenu } from './header-menu'
|
||||
import { HeaderTop } from './header-top'
|
||||
|
||||
@ -74,9 +74,9 @@ export const NewsDefaultLayout = (properties: PropsWithChildren) => {
|
||||
<PopupModal
|
||||
isOpen={isSubscribeOpen}
|
||||
onClose={() => setIsSubscribeOpen(false)}
|
||||
description="Selamat Datang, silakan Pilih Subscription Anda untuk melanjutkan!"
|
||||
description="Selamat Datang, silakan Pilih Subscribe Plan Anda untuk melanjutkan!"
|
||||
>
|
||||
<FormSubscription />
|
||||
<FormSubscribePlan />
|
||||
</PopupModal>
|
||||
|
||||
<SuccessModal
|
||||
|
||||
@ -26,7 +26,7 @@ export const registerSchema = z
|
||||
.optional()
|
||||
.nullable()
|
||||
.refine((data) => !!data, {
|
||||
message: 'Please select a subscription',
|
||||
message: 'Please select a Subscribe Plan',
|
||||
}),
|
||||
})
|
||||
.refine((field) => field.password === field.rePassword, {
|
||||
@ -42,7 +42,7 @@ export const FormRegister = () => {
|
||||
const [error, setError] = useState<string>()
|
||||
const fetcher = useFetcher()
|
||||
const loaderData = useRouteLoaderData<typeof loader>('routes/_news')
|
||||
const { subscriptionsData: subscriptions } = loaderData || {}
|
||||
const { subscribePlanData: subscribePlan } = loaderData || {}
|
||||
|
||||
const formMethods = useRemixForm<TRegisterSchema>({
|
||||
mode: 'onSubmit',
|
||||
@ -107,9 +107,9 @@ export const FormRegister = () => {
|
||||
<Combobox
|
||||
id="subscribe_plan"
|
||||
name="subscribe_plan"
|
||||
label="Subscription"
|
||||
placeholder="Pilih Subscription"
|
||||
options={subscriptions}
|
||||
label="Subscribe Plan"
|
||||
placeholder="Pilih Subscribe Plan"
|
||||
options={subscribePlan}
|
||||
/>
|
||||
|
||||
{error && (
|
||||
|
||||
@ -25,12 +25,12 @@ export const subscribeSchema = z.object({
|
||||
|
||||
export type TSubscribeSchema = z.infer<typeof subscribeSchema>
|
||||
|
||||
export default function FormSubscription() {
|
||||
export const FormSubscribePlan = () => {
|
||||
const { setIsSubscribeOpen, setIsSuccessOpen } = useNewsContext()
|
||||
const fetcher = useFetcher()
|
||||
const [error, setError] = useState<string>()
|
||||
const loaderData = useRouteLoaderData<typeof loader>('routes/_news')
|
||||
const { subscriptionsData: subscriptions } = loaderData || {}
|
||||
const { subscribePlanData: subscribePlan } = loaderData || {}
|
||||
|
||||
const formMethods = useRemixForm<TSubscribeSchema>({
|
||||
mode: 'onSubmit',
|
||||
@ -64,9 +64,9 @@ export default function FormSubscription() {
|
||||
<Combobox
|
||||
id="subscribe_plan"
|
||||
name="subscribe_plan"
|
||||
label="Subscription"
|
||||
placeholder="Pilih Subscription"
|
||||
options={subscriptions}
|
||||
label="Subscribe Plan"
|
||||
placeholder="Pilih Subscribe Plan"
|
||||
options={subscribePlan}
|
||||
/>
|
||||
|
||||
{error && (
|
||||
@ -13,7 +13,7 @@ type THeaderMenuMobile = {
|
||||
menu?: TCategoriesResponse['data']
|
||||
}
|
||||
|
||||
export default function HeaderMenuMobile(properties: THeaderMenuMobile) {
|
||||
export const HeaderMenuMobile = (properties: THeaderMenuMobile) => {
|
||||
const { menu } = properties
|
||||
const [isMenuOpen, setIsMenuOpen] = useState(false)
|
||||
const { setIsLoginOpen } = useNewsContext()
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Link, useRouteLoaderData } from 'react-router'
|
||||
|
||||
import { Button } from '~/components/ui/button'
|
||||
import HeaderMenuMobile from '~/layouts/news/header-menu-mobile'
|
||||
import { HeaderMenuMobile } from '~/layouts/news/header-menu-mobile'
|
||||
import type { loader } from '~/routes/_news'
|
||||
|
||||
import { HeaderSearch } from './header-search'
|
||||
|
||||
@ -2,6 +2,7 @@ import DT from 'datatables.net-dt'
|
||||
import DataTable from 'datatables.net-react'
|
||||
import { Link, useRouteLoaderData } from 'react-router'
|
||||
|
||||
import type { TSubscribePlanSchema } from '~/apis/common/get-subscribe-plan'
|
||||
import { Button } from '~/components/ui/button'
|
||||
import { getStatusBadge, type TColorBadge } from '~/components/ui/color-badge'
|
||||
import { UiTable } from '~/components/ui/table'
|
||||
@ -15,7 +16,7 @@ export const SubscribePlanPage = () => {
|
||||
)
|
||||
|
||||
DataTable.use(DT)
|
||||
const { subscriptionsData: dataTable } = loaderData || {}
|
||||
const { subscribePlanData: dataTable } = loaderData || {}
|
||||
|
||||
const dataColumns = [
|
||||
{
|
||||
@ -65,7 +66,8 @@ export const SubscribePlanPage = () => {
|
||||
{value === 1 ? 'Active' : 'Inactive'}
|
||||
</span>
|
||||
),
|
||||
6: (value: string) => (
|
||||
6: (value: string, _type: unknown, data: TSubscribePlanSchema) =>
|
||||
data.code !== 'basic' && (
|
||||
<Button
|
||||
as="a"
|
||||
href={`/lg-admin/subscribe-plan/update/${value}`}
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import { isRouteErrorResponse } from 'react-router'
|
||||
|
||||
import { getSubscriptions } from '~/apis/common/get-subscriptions'
|
||||
import { getSubscribePlan } from '~/apis/common/get-subscribe-plan'
|
||||
import { SubscribePlanPage } from '~/pages/dashboard-subscribe-plan'
|
||||
|
||||
import type { Route } from './+types/_admin.lg-admin._dashboard.subscribe-plan._index'
|
||||
|
||||
export const loader = async ({}: Route.LoaderArgs) => {
|
||||
const { data: subscriptionsData } = await getSubscriptions()
|
||||
return { subscriptionsData }
|
||||
const { data: subscribePlanData } = await getSubscribePlan()
|
||||
return { subscribePlanData }
|
||||
}
|
||||
|
||||
export const ErrorBoundary = ({ error }: Route.ErrorBoundaryProps) => {
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import { isRouteErrorResponse } from 'react-router'
|
||||
|
||||
import { getSubscriptions } from '~/apis/common/get-subscriptions'
|
||||
import { getSubscribePlan } from '~/apis/common/get-subscribe-plan'
|
||||
import { FormSubscribePlanPage } from '~/pages/form-subscribe-plan'
|
||||
|
||||
import type { Route } from './+types/_admin.lg-admin._dashboard.subscribe-plan.update.$id'
|
||||
|
||||
export const loader = async ({ params }: Route.LoaderArgs) => {
|
||||
const { data: subscribePlansData } = await getSubscriptions()
|
||||
const { data: subscribePlansData } = await getSubscribePlan()
|
||||
const { id } = params
|
||||
const subscribePlanData = subscribePlansData.find(
|
||||
(subscribePlan) => subscribePlan.id === id,
|
||||
|
||||
@ -3,7 +3,7 @@ import { XiorError } from 'xior'
|
||||
|
||||
import { getAds } from '~/apis/common/get-ads'
|
||||
import { getCategories } from '~/apis/common/get-categories'
|
||||
import { getSubscriptions } from '~/apis/common/get-subscriptions'
|
||||
import { getSubscribePlan } from '~/apis/common/get-subscribe-plan'
|
||||
import { getUser } from '~/apis/news/get-user'
|
||||
import { NewsProvider } from '~/contexts/news'
|
||||
import { NewsDefaultLayout } from '~/layouts/news/default'
|
||||
@ -25,13 +25,13 @@ export const loader = async ({ request }: Route.LoaderArgs) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
const { data: subscriptionsData } = await getSubscriptions()
|
||||
const { data: subscribePlanData } = await getSubscribePlan()
|
||||
const { data: categoriesData } = await getCategories()
|
||||
const { data: adsData } = await getAds()
|
||||
|
||||
return {
|
||||
userData,
|
||||
subscriptionsData,
|
||||
subscribePlanData,
|
||||
categoriesData,
|
||||
adsData,
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import { getUser } from '~/apis/news/get-user'
|
||||
import {
|
||||
subscribeSchema,
|
||||
type TSubscribeSchema,
|
||||
} from '~/layouts/news/form-subscription'
|
||||
} from '~/layouts/news/form-subscribe-plan'
|
||||
import { handleCookie } from '~/libs/cookies'
|
||||
|
||||
import type { Route } from './+types/actions.subscribe'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user