Skip to content

Commit

Permalink
optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
Din committed Jan 23, 2024
1 parent f2193d9 commit 2632f22
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 40 deletions.
2 changes: 2 additions & 0 deletions @api/features/auth/email.login.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export const authEmailLoginRoute = procedure
return {
auth: {
jwt,
session,
user: existingUser,
organization: organizationMember.organization,
organizationMember,
Expand Down Expand Up @@ -130,6 +131,7 @@ export const authEmailLoginRoute = procedure
return {
auth: {
jwt,
session,
user: {
...user,
subscriptions: [],
Expand Down
26 changes: 15 additions & 11 deletions @api/features/auth/infos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,24 @@ import { signAuthJwt } from '@api/lib/auth'

export const authInfosRoute = authProcedure.query(async ({ ctx }) => {
const session = await findSessionForAuth({ ctx, sessionSecretKey: ctx.auth.sessionSecretKey })
const jwt = await signAuthJwt({
env: ctx.env,
payload: {
sessionSecretKey: session.secretKey,
userId: session.user.id,
organizationId: session.organizationMember.organizationId,
organizationRole: session.organizationMember.role,
activeSubscriptionVariantIds: getActiveSubscriptionVariantIds(session.user.subscriptions),
},
})

return {
auth: {
...session,
jwt: await signAuthJwt({
env: ctx.env,
payload: {
sessionSecretKey: session.secretKey,
userId: session.user.id,
organizationId: session.organizationMember.organizationId,
organizationRole: session.organizationMember.role,
activeSubscriptionVariantIds: getActiveSubscriptionVariantIds(session.user.subscriptions),
},
}),
jwt,
session,
user: session.user,
organization: session.organization,
organizationMember: session.organizationMember,
},
}
})
2 changes: 2 additions & 0 deletions @api/features/auth/notification.push.post-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ export const authNotificationPushPostTestRoute = authProcedure.mutation(async ({
})
}

await new Promise((resolve) => setTimeout(resolve, 10_000))

const payload = await buildPushPayload(
{
data: "You've got mail!",
Expand Down
2 changes: 2 additions & 0 deletions @api/features/auth/oauth.login.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ export const authOauthLoginRoute = procedure
return {
auth: {
jwt,
session,
user: oauthAccount.user,
organization: organizationMember.organization,
organizationMember,
Expand Down Expand Up @@ -140,6 +141,7 @@ export const authOauthLoginRoute = procedure
return {
auth: {
jwt,
session,
user: {
...user,
subscriptions: [],
Expand Down
28 changes: 15 additions & 13 deletions @api/features/auth/organization-switch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,24 @@ export const authOrganizationSwitchRoute = authProcedure
.where(eq(Sessions.secretKey, ctx.auth.sessionSecretKey))

const session = await findSessionForAuth({ ctx, sessionSecretKey: ctx.auth.sessionSecretKey })
const jwt = await signAuthJwt({
env: ctx.env,
payload: {
sessionSecretKey: session.secretKey,
userId: session.user.id,
organizationId: session.organizationMember.organizationId,
organizationRole: session.organizationMember.role,
activeSubscriptionVariantIds: getActiveSubscriptionVariantIds(session.user.subscriptions),
},
})

return {
auth: {
...session,
jwt: await signAuthJwt({
env: ctx.env,
payload: {
sessionSecretKey: session.secretKey,
userId: session.user.id,
organizationId: session.organizationMember.organizationId,
organizationRole: session.organizationMember.role,
activeSubscriptionVariantIds: getActiveSubscriptionVariantIds(
session.user.subscriptions,
),
},
}),
jwt,
session,
user: session.user,
organization: session.organization,
organizationMember: session.organizationMember,
},
}
})
2 changes: 1 addition & 1 deletion @web/pages/profile-general.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export function Component() {
<div className="pt-6 sm:flex items-center">
<dt className="font-medium text-foreground sm:w-64 sm:flex-none sm:pr-6">ID</dt>
<dd className="mt-1 flex justify-between gap-x-6 sm:mt-0 sm:flex-auto">
<div className="text-muted-foreground">{query.data.auth.userId}</div>
<div className="text-muted-foreground">{query.data.auth.user.id}</div>
</dd>
</div>
<div className="pt-6 sm:flex items-center">
Expand Down
35 changes: 20 additions & 15 deletions @web/providers/push-notification.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,37 @@ import { useEffect } from 'react'
import { P, match } from 'ts-pattern'

export function PushNotificationProvider(props: { children: React.ReactNode }) {
const useId = useAuthStore().state?.user.id
const userId = useAuthStore().state?.session.userId
const registeredPushNotification = !!useAuthStore().state?.session.pushSubscription
const { permission } = useNotificationPermission()
const { mutate } = api.auth.notification.push.register.useMutation()

const mutation = api.auth.notification.push.register.useMutation()

// TODO: optimize it
useEffect(() => {
match(permission)
if (!userId) return

return match(permission)
.with(P.union('default', 'denied'), () => {
mutation.mutate({
if (!registeredPushNotification) return

mutate({
subscription: null,
})
})
.with('granted', () => {
if (registeredPushNotification) return

const unsub = onSWMessage('handlePushSubscription', async (data) => {
mutate({
subscription: data.subscription,
})
})

postMessageToSW('subscribePushNotification', {})
})
.exhaustive()
}, [mutation, permission, useId])

useEffect(() => {
return onSWMessage('handlePushSubscription', async (data) => {
mutation.mutate({
subscription: data.subscription,
return unsub
})
})
}, [mutation])
.exhaustive()
}, [mutate, permission, userId, registeredPushNotification])

return props.children
}
2 changes: 2 additions & 0 deletions @web/stores/auth.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
organizationMemberSchema,
organizationSchema,
sessionSchema,
subscriptionSchema,
userSchema,
} from '@api/database/schema'
Expand All @@ -13,6 +14,7 @@ import { persist } from 'zustand/middleware'
export const authStateSchema = z
.object({
jwt: z.string(),
session: sessionSchema,
user: userSchema.and(
z.object({
subscriptions: z.array(subscriptionSchema),
Expand Down

0 comments on commit 2632f22

Please sign in to comment.