fix: one click demo

This commit is contained in:
Ahmed Bouhuolia
2024-08-19 21:21:39 +02:00
parent fed620505d
commit cca596b4a9
10 changed files with 270 additions and 23 deletions

View File

@@ -16,7 +16,7 @@ import {
/**
* Saves the response data to cookies.
*/
function setAuthLoginCookies(data) {
export function setAuthLoginCookies(data) {
setCookie('token', data.token);
setCookie('authenticated_user_id', data.user.id);
setCookie('organization_id', data.tenant.organization_id);

View File

@@ -6,9 +6,22 @@ import {
useQueryClient,
} from 'react-query';
import useApiRequest from '../useRequest';
import {
useSetAuthToken,
useSetAuthUserId,
useSetLocale,
useSetOrganizationId,
useSetTenantId,
} from '../state';
import { setAuthLoginCookies } from './authentication';
import { batch } from 'react-redux';
interface CreateOneClickDemoValues {}
interface CreateOneClickDemoRes {}
interface CreateOneClickDemoRes {
email: string;
signedIn: any;
buildJob: any;
}
/**
*
@@ -33,3 +46,54 @@ export function useCreateOneClickDemo(
},
);
}
interface OneClickSigninDemoValues {
demoId: string;
}
interface OneClickSigninDemoRes {}
/**
*
* @param {UseMutationOptions<OneClickSigninDemoRes, Error, OneClickSigninDemoValues>} props
* @returns {UseMutationResult<OneClickSigninDemoRes, Error, OneClickSigninDemoValues>}
*/
export function useOneClickDemoSignin(
props?: UseMutationOptions<
OneClickSigninDemoRes,
Error,
OneClickSigninDemoValues
>,
): UseMutationResult<OneClickSigninDemoRes, Error, OneClickSigninDemoValues> {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
const setAuthToken = useSetAuthToken();
const setOrganizationId = useSetOrganizationId();
const setUserId = useSetAuthUserId();
const setTenantId = useSetTenantId();
const setLocale = useSetLocale();
return useMutation<OneClickSigninDemoRes, Error, OneClickSigninDemoValues>(
({ demoId }) =>
apiRequest.post(`/demo/one_click_signin`, { demo_id: demoId }),
{
onSuccess: (res, id) => {
// Set authentication cookies.
setAuthLoginCookies(res.data);
batch(() => {
// Sets the auth metadata to global state.
setAuthToken(res.data.token);
setOrganizationId(res.data.tenant.organization_id);
setUserId(res.data.user.id);
setTenantId(res.data.tenant.id);
if (res.data?.tenant?.metadata?.language) {
setLocale(res.data?.tenant?.metadata?.language);
}
});
},
...props,
},
);
}