@reown/appkit-controllers
Version:
#### 🔗 [Website](https://reown.com/appkit)
89 lines • 3.54 kB
JavaScript
import { ConstantsUtil } from '@reown/appkit-common';
import { AccountController } from '../controllers/AccountController.js';
import { ChainController } from '../controllers/ChainController.js';
import { ConnectorController } from '../controllers/ConnectorController.js';
import { EventsController } from '../controllers/EventsController.js';
import { RouterController } from '../controllers/RouterController.js';
import { SnackController } from '../controllers/SnackController.js';
import { CoreHelperUtil } from './CoreHelperUtil.js';
import { StorageUtil } from './StorageUtil.js';
function getPopupWindow() {
try {
return CoreHelperUtil.returnOpenHref(`${ConstantsUtil.SECURE_SITE_SDK_ORIGIN}/loading`, 'popupWindow', 'width=600,height=800,scrollbars=yes');
}
catch (error) {
throw new Error('Could not open social popup');
}
}
export async function connectFarcaster() {
RouterController.push('ConnectingFarcaster');
const authConnector = ConnectorController.getAuthConnector();
if (authConnector) {
if (!AccountController.state.farcasterUrl) {
try {
const { url } = await authConnector.provider.getFarcasterUri();
AccountController.setFarcasterUrl(url, ChainController.state.activeChain);
}
catch (error) {
RouterController.goBack();
SnackController.showError(error);
}
}
}
}
export async function connectSocial(socialProvider) {
RouterController.push('ConnectingSocial');
const authConnector = ConnectorController.getAuthConnector();
let popupWindow = null;
try {
const timeout = setTimeout(() => {
throw new Error('Social login timed out. Please try again.');
}, 45_000);
if (authConnector && socialProvider) {
if (!CoreHelperUtil.isTelegram()) {
popupWindow = getPopupWindow();
}
if (popupWindow) {
AccountController.setSocialWindow(popupWindow, ChainController.state.activeChain);
}
else if (!CoreHelperUtil.isTelegram()) {
throw new Error('Could not create social popup');
}
const { uri } = await authConnector.provider.getSocialRedirectUri({
provider: socialProvider
});
if (!uri) {
popupWindow?.close();
throw new Error('Could not fetch the social redirect uri');
}
if (popupWindow) {
popupWindow.location.href = uri;
}
if (CoreHelperUtil.isTelegram()) {
StorageUtil.setTelegramSocialProvider(socialProvider);
const parsedUri = CoreHelperUtil.formatTelegramSocialLoginUrl(uri);
CoreHelperUtil.openHref(parsedUri, '_top');
}
clearTimeout(timeout);
}
}
catch (error) {
popupWindow?.close();
SnackController.showError(error?.message);
}
}
export async function executeSocialLogin(socialProvider) {
AccountController.setSocialProvider(socialProvider, ChainController.state.activeChain);
EventsController.sendEvent({
type: 'track',
event: 'SOCIAL_LOGIN_STARTED',
properties: { provider: socialProvider }
});
if (socialProvider === 'farcaster') {
await connectFarcaster();
}
else {
await connectSocial(socialProvider);
}
}
//# sourceMappingURL=SocialsUtil.js.map