@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
47 lines (37 loc) • 1.49 kB
text/typescript
import { getActiveClient } from '../api/activeClient';
import { setSessionState } from '../api/setSessionState';
import { getToken } from '../api/getToken';
/**
* A util to set or refresh client token
*
* @param params.userId the user ID for the current session
* @param params.displayName the user's displayName for the current session
* @param params.deviceId Manual override of the user's device id (for device management)
* @param params.authToken The authentication token - necessary when network option is set to secure
* @returns token & user info
*
* @category private
* @async
*/
export const setClientToken = async (params: Parameters<typeof getToken>[0]) => {
const client = getActiveClient();
// begin establishing session
setSessionState(Amity.SessionStates.ESTABLISHING);
const { accessToken, users, expiresAt, issuedAt } = await getToken(params);
// manually setup the token for http transport
client.http.defaults.headers.common.Authorization = `Bearer ${accessToken}`;
client.http.defaults.metadata = {
tokenExpiry: expiresAt,
isGlobalBanned: false,
isUserDeleted: false,
};
client.upload.defaults.headers.common.Authorization = `Bearer ${accessToken}`;
client.upload.defaults.metadata = {
tokenExpiry: expiresAt,
isGlobalBanned: false,
isUserDeleted: false,
};
client.token = { accessToken, issuedAt, expiresAt };
setSessionState(Amity.SessionStates.ESTABLISHED);
return { accessToken, users };
};