Skip to content

Commit 55c9dc6

Browse files
committed
feat: twitch login
1 parent ccff347 commit 55c9dc6

File tree

12 files changed

+126
-87
lines changed

12 files changed

+126
-87
lines changed

apps/dashboard/src/app/(dashboard)/dashboard/connect/ecosystem/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export const authOptions = [
55
"discord",
66
"farcaster",
77
"telegram",
8+
"twitch",
89
"phone",
910
"email",
1011
"guest",

apps/dashboard/src/components/wallets/ConnectWalletMiniPlayground/MiniPlayground.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ function usePlaygroundWallets() {
6969
google: true,
7070
discord: true,
7171
telegram: true,
72+
twitch: false,
7273
farcaster: true,
7374
facebook: false,
7475
apple: false,

apps/playground-web/src/app/connect/sign-in/components/InAppWalletFormGroup.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const allInAppWalletLoginMethods: InAppWalletAuth[] = [
1010
"google",
1111
"discord",
1212
"telegram",
13+
"twitch",
1314
"farcaster",
1415
"email",
1516
"passkey",

packages/thirdweb/src/react/core/utils/walletIcon.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ const farcasterIconUri =
1515
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiByeD0iMjAwIiBmaWxsPSIjODU1RENEIi8+CjxwYXRoIGQ9Ik0yNTcuNzc4IDE1NS41NTZINzQyLjIyMlY4NDQuNDQ0SDY3MS4xMTFWNTI4Ljg4OUg2NzAuNDE0QzY2Mi41NTQgNDQxLjY3NyA1ODkuMjU4IDM3My4zMzMgNTAwIDM3My4zMzNDNDEwLjc0MiAzNzMuMzMzIDMzNy40NDYgNDQxLjY3NyAzMjkuNTg2IDUyOC44ODlIMzI4Ljg4OVY4NDQuNDQ0SDI1Ny43NzhWMTU1LjU1NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMjguODg5IDI1My4zMzNMMTU3Ljc3OCAzNTEuMTExSDE4Mi4yMjJWNzQ2LjY2N0MxNjkuOTQ5IDc0Ni42NjcgMTYwIDc1Ni42MTYgMTYwIDc2OC44ODlWNzk1LjU1NkgxNTUuNTU2QzE0My4yODMgNzk1LjU1NiAxMzMuMzMzIDgwNS41MDUgMTMzLjMzMyA4MTcuNzc4Vjg0NC40NDRIMzgyLjIyMlY4MTcuNzc4QzM4Mi4yMjIgODA1LjUwNSAzNzIuMjczIDc5NS41NTYgMzYwIDc5NS41NTZIMzU1LjU1NlY3NjguODg5QzM1NS41NTYgNzU2LjYxNiAzNDUuNjA2IDc0Ni42NjcgMzMzLjMzMyA3NDYuNjY3SDMwNi42NjdWMjUzLjMzM0gxMjguODg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTY3NS41NTYgNzQ2LjY2N0M2NjMuMjgzIDc0Ni42NjcgNjUzLjMzMyA3NTYuNjE2IDY1My4zMzMgNzY4Ljg4OVY3OTUuNTU2SDY0OC44ODlDNjM2LjYxNiA3OTUuNTU2IDYyNi42NjcgODA1LjUwNSA2MjYuNjY3IDgxNy43NzhWODQ0LjQ0NEg4NzUuNTU2VjgxNy43NzhDODc1LjU1NiA4MDUuNTA1IDg2NS42MDYgNzk1LjU1NiA4NTMuMzMzIDc5NS41NTZIODQ4Ljg4OVY3NjguODg5Qzg0OC44ODkgNzU2LjYxNiA4MzguOTQgNzQ2LjY2NyA4MjYuNjY3IDc0Ni42NjdWMzUxLjExMUg4NTEuMTExTDg4MCAyNTMuMzMzSDcwMi4yMjJWNzQ2LjY2N0g2NzUuNTU2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
1616
const telegramIconUri =
1717
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwMHB4IiBoZWlnaHQ9IjEwMDBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTMuMiAoNzI2NDMpIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkFydGJvYXJkPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9Ijk5LjI1ODM0MDQlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyQUFCRUUiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyOUVEOSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJBcnRib2FyZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgY3g9IjUwMCIgY3k9IjUwMCIgcj0iNTAwIj48L2NpcmNsZT4KICAgICAgICA8cGF0aCBkPSJNMjI2LjMyODQxOSw0OTQuNzIyMDY5IEMzNzIuMDg4NTczLDQzMS4yMTY2ODUgNDY5LjI4NDgzOSwzODkuMzUwMDQ5IDUxNy45MTcyMTYsMzY5LjEyMjE2MSBDNjU2Ljc3MjUzNSwzMTEuMzY3NDMgNjg1LjYyNTQ4MSwzMDEuMzM0ODE1IDcwNC40MzE0MjcsMzAxLjAwMzUzMiBDNzA4LjU2NzYyMSwzMDAuOTMwNjcgNzE3LjgxNTgzOSwzMDEuOTU1NzQzIDcyMy44MDY0NDYsMzA2LjgxNjcwNyBDNzI4Ljg2NDc5NywzMTAuOTIxMjEgNzMwLjI1NjU1MiwzMTYuNDY1ODEgNzMwLjkyMjU1MSwzMjAuMzU3MzI5IEM3MzEuNTg4NTUxLDMyNC4yNDg4NDggNzMyLjQxNzg3OSwzMzMuMTEzODI4IDczMS43NTg2MjYsMzQwLjA0MDY2NiBDNzI0LjIzNDAwNyw0MTkuMTAyNDg2IDY5MS42NzUxMDQsNjEwLjk2NDY3NCA2NzUuMTEwOTgyLDY5OS41MTUyNjcgQzY2OC4xMDIwOCw3MzYuOTg0MzQyIDY1NC4zMDEzMzYsNzQ5LjU0NzUzMiA2NDAuOTQwNjE4LDc1MC43NzcwMDYgQzYxMS45MDQ2ODQsNzUzLjQ0ODkzOCA1ODkuODU2MTE1LDczMS41ODgwMzUgNTYxLjczMzM5Myw3MTMuMTUzMjM3IEM1MTcuNzI2ODg2LDY4NC4zMDY0MTYgNDkyLjg2NjAwOSw2NjYuMzQ5MTgxIDQ1MC4xNTAwNzQsNjM4LjIwMDAxMyBDNDAwLjc4NDQyLDYwNS42Njg3OCA0MzIuNzg2MTE5LDU4Ny43ODkwNDggNDYwLjkxOTQ2Miw1NTguNTY4NTYzIEM0NjguMjgyMDkxLDU1MC45MjE0MjMgNTk2LjIxNTA4LDQzNC41NTY0NzkgNTk4LjY5MTIyNyw0MjQuMDAwMzU1IEM1OTkuMDAwOTEsNDIyLjY4MDEzNSA1OTkuMjg4MzEyLDQxNy43NTg5ODEgNTk2LjM2NDc0LDQxNS4xNjA0MzEgQzU5My40NDExNjgsNDEyLjU2MTg4MSA1ODkuMTI2MjI5LDQxMy40NTA0ODQgNTg2LjAxMjQ0OCw0MTQuMTU3MTk4IEM1ODEuNTk4NzU4LDQxNS4xNTg5NDMgNTExLjI5Nzc5Myw0NjEuNjI1Mjc0IDM3NS4xMDk1NTMsNTUzLjU1NjE4OSBDMzU1LjE1NDg1OCw1NjcuMjU4NjIzIDMzNy4wODA1MTUsNTczLjkzNDkwOCAzMjAuODg2NTI0LDU3My41ODUwNDYgQzMwMy4wMzM5NDgsNTczLjE5OTM1MSAyNjguNjkyNzU0LDU2My40OTA5MjggMjQzLjE2MzYwNiw1NTUuMTkyNDA4IEMyMTEuODUxMDY3LDU0NS4wMTM5MzYgMTg2Ljk2NDQ4NCw1MzkuNjMyNTA0IDE4OS4xMzE1NDcsNTIyLjM0NjMwOSBDMTkwLjI2MDI4Nyw1MTMuMzQyNTg5IDIwMi42NTkyNDQsNTA0LjEzNDUwOSAyMjYuMzI4NDE5LDQ5NC43MjIwNjkgWiIgaWQ9IlBhdGgtMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=";
18+
const twitchIconUri =
19+
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjQwMCAyODAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNDAwIDI4MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDojOTE0NkZGO30KPC9zdHlsZT4KPHRpdGxlPkFzc2V0IDI8L3RpdGxlPgo8Zz4KCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMjIwMCwxMzAwIDE4MDAsMTcwMCAxNDAwLDE3MDAgMTA1MCwyMDUwIDEwNTAsMTcwMCA2MDAsMTcwMCA2MDAsMjAwIDIyMDAsMjAwIAkiLz4KCTxnPgoJCTxnIGlkPSJMYXllcl8xLTIiPgoJCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNTAwLDBMMCw1MDB2MTgwMGg2MDB2NTAwbDUwMC01MDBoNDAwbDkwMC05MDBWMEg1MDB6IE0yMjAwLDEzMDBsLTQwMCw0MDBoLTQwMGwtMzUwLDM1MHYtMzUwSDYwMFYyMDBoMTYwMAoJCQkJVjEzMDB6Ii8+CgkJCTxyZWN0IHg9IjE3MDAiIHk9IjU1MCIgY2xhc3M9InN0MSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI2MDAiLz4KCQkJPHJlY3QgeD0iMTE1MCIgeT0iNTUwIiBjbGFzcz0ic3QxIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjYwMCIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K";
1820
const xIcon =
1921
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iMjQiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNzcuMzE1IDE0NS4zMzVMMjQ1LjA2OCA2N0gyMjkuMDEzTDE3MC4xODIgMTM1LjAxN0wxMjMuMTk1IDY3SDY5TDE0MC4wNTUgMTY5Ljg1NEw2OSAyNTJIODUuMDU2M0wxNDcuMTgzIDE4MC4xNzJMMTk2LjgwNSAyNTJIMjUxTDE3Ny4zMTEgMTQ1LjMzNUgxNzcuMzE1Wk0xNTUuMzIzIDE3MC43NkwxNDguMTI0IDE2MC41MThMOTAuODQxNyA3OS4wMjJIMTE1LjUwM0wxNjEuNzMxIDE0NC43OTJMMTY4LjkzIDE1NS4wMzRMMjI5LjAyIDI0MC41MjVIMjA0LjM1OUwxNTUuMzIzIDE3MC43NjRWMTcwLjc2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
2022
export const emailIcon =
@@ -40,6 +42,7 @@ export const socialIcons = {
4042
x: xIcon,
4143
farcaster: farcasterIconUri,
4244
telegram: telegramIconUri,
45+
twitch: twitchIconUri,
4346
};
4447

4548
// TODO: this should return actual <svg> elements so they can be themed
@@ -69,6 +72,8 @@ export function getWalletIcon(provider: string) {
6972
return farcasterIconUri;
7073
case "telegram":
7174
return telegramIconUri;
75+
case "twitch":
76+
return twitchIconUri;
7277
case "guest":
7378
return guestIcon;
7479
default:

packages/thirdweb/src/react/native/ui/components/WalletImage.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
PASSKEY_ICON,
2020
PHONE_ICON,
2121
TELEGRAM_ICON,
22+
TWITCH_ICON,
2223
WALLET_ICON,
2324
X_ICON,
2425
} from "../icons/svgs.js";
@@ -60,7 +61,7 @@ export const WalletImage = (props: {
6061
if (externalWalletImage) {
6162
return resolveScheme({ client, uri: externalWalletImage });
6263
}
63-
} catch {}
64+
} catch { }
6465

6566
return WALLET_ICON;
6667
},
@@ -102,6 +103,8 @@ export function getAuthProviderImage(authProvider: string | null): string {
102103
return FARCASTER_ICON;
103104
case "telegram":
104105
return TELEGRAM_ICON;
106+
case "twitch":
107+
return TWITCH_ICON;
105108
case "guest":
106109
return GUEST_ICON;
107110
default:

packages/thirdweb/src/react/native/ui/connect/InAppWalletUI.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
FARCASTER_ICON,
3737
GOOGLE_ICON,
3838
LINE_ICON,
39+
TWITCH_ICON,
3940
TELEGRAM_ICON,
4041
X_ICON,
4142
} from "../icons/svgs.js";
@@ -61,6 +62,7 @@ const socialIcons = {
6162
x: X_ICON,
6263
farcaster: FARCASTER_ICON,
6364
telegram: TELEGRAM_ICON,
65+
twitch: TWITCH_ICON,
6466
};
6567

6668
type InAppWalletFormUIProps = {

packages/thirdweb/src/react/native/ui/icons/svgs.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,26 @@ export const TELEGRAM_ICON = `<svg width={width} height={height} viewBox="0 0 10
7171
</g>
7272
</svg>`;
7373

74+
export const TWITCH_ICON = `<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
75+
viewBox="0 0 2400 2800" style="enable-background:new 0 0 2400 2800;" xml:space="preserve">
76+
<style type="text/css">
77+
.st0{fill:#FFFFFF;}
78+
.st1{fill:#9146FF;}
79+
</style>
80+
<title>Asset 2</title>
81+
<g>
82+
<polygon class="st0" points="2200,1300 1800,1700 1400,1700 1050,2050 1050,1700 600,1700 600,200 2200,200 "/>
83+
<g>
84+
<g id="Layer_1-2">
85+
<path class="st1" d="M500,0L0,500v1800h600v500l500-500h400l900-900V0H500z M2200,1300l-400,400h-400l-350,350v-350H600V200h1600
86+
V1300z"/>
87+
<rect x="1700" y="550" class="st1" width="200" height="600"/>
88+
<rect x="1150" y="550" class="st1" width="200" height="600"/>
89+
</g>
90+
</g>
91+
</g>
92+
</svg>`;
93+
7494
export const EMAIL_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
7595
<path d="M13.3335 2.6665H2.66683C1.93045 2.6665 1.3335 3.26346 1.3335 3.99984V11.9998C1.3335 12.7362 1.93045 13.3332 2.66683 13.3332H13.3335C14.0699 13.3332 14.6668 12.7362 14.6668 11.9998V3.99984C14.6668 3.26346 14.0699 2.6665 13.3335 2.6665Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
7696
<path d="M14.6668 4.6665L8.68683 8.4665C8.48101 8.59545 8.24304 8.66384 8.00016 8.66384C7.75728 8.66384 7.51931 8.59545 7.3135 8.4665L1.3335 4.6665" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>

packages/thirdweb/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,18 @@ import { openOauthSignInWindow } from "./oauthSignIn.js";
4747
export type ConnectWalletSelectUIState =
4848
| undefined
4949
| {
50-
emailLogin?: string;
51-
phoneLogin?: string;
52-
socialLogin?: {
53-
type: SocialAuthOption;
54-
connectionPromise: Promise<Account | Profile[]>;
55-
};
56-
guestLogin?: {
57-
connectionPromise: Promise<Account | Profile[]>;
58-
};
59-
passkeyLogin?: boolean;
60-
walletLogin?: boolean;
50+
emailLogin?: string;
51+
phoneLogin?: string;
52+
socialLogin?: {
53+
type: SocialAuthOption;
54+
connectionPromise: Promise<Account | Profile[]>;
55+
};
56+
guestLogin?: {
57+
connectionPromise: Promise<Account | Profile[]>;
6158
};
59+
passkeyLogin?: boolean;
60+
walletLogin?: boolean;
61+
};
6262

6363
const defaultAuthOptions: AuthOption[] = [
6464
"email",
@@ -114,6 +114,7 @@ export const ConnectWalletSocialOptions = (
114114
coinbase: "Coinbase",
115115
farcaster: "Farcaster",
116116
telegram: "Telegram",
117+
twitch: "Twitch",
117118
};
118119

119120
const { data: ecosystemAuthOptions, isLoading } = useQuery({
@@ -128,8 +129,8 @@ export const ConnectWalletSocialOptions = (
128129
retry: false,
129130
});
130131
const authOptions = isEcosystemWallet(wallet)
131-
? (ecosystemAuthOptions ?? defaultAuthOptions)
132-
: (wallet.getConfig()?.auth?.options ?? defaultAuthOptions);
132+
? ecosystemAuthOptions ?? defaultAuthOptions
133+
: wallet.getConfig()?.auth?.options ?? defaultAuthOptions;
133134

134135
const emailIndex = authOptions.indexOf("email");
135136
const isEmailEnabled = emailIndex !== -1;
@@ -199,9 +200,9 @@ export const ConnectWalletSocialOptions = (
199200
const hasSocialLogins = socialLogins.length > 0;
200201
const ecosystemInfo = isEcosystemWallet(wallet)
201202
? {
202-
id: wallet.id,
203-
partnerId: wallet.getConfig()?.partnerId,
204-
}
203+
id: wallet.id,
204+
partnerId: wallet.getConfig()?.partnerId,
205+
}
205206
: undefined;
206207

207208
const handleGuestLogin = async () => {

packages/thirdweb/src/react/web/wallets/shared/oauthSignIn.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ function getOauthLoginPath(
3838
case "google":
3939
case "farcaster":
4040
case "telegram":
41+
case "twitch":
4142
case "line":
4243
case "x":
4344
case "guest":

packages/thirdweb/src/wallets/in-app/core/authentication/types.ts

Lines changed: 71 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import type { Ecosystem } from "../wallet/types.js";
88

99
export type MultiStepAuthProviderType =
1010
| {
11-
strategy: "email";
12-
email: string;
13-
}
11+
strategy: "email";
12+
email: string;
13+
}
1414
| {
15-
strategy: "phone";
16-
phoneNumber: string;
17-
};
15+
strategy: "phone";
16+
phoneNumber: string;
17+
};
1818
export type PreAuthArgsType = MultiStepAuthProviderType & {
1919
client: ThirdwebClient;
2020
ecosystem?: Ecosystem;
@@ -37,45 +37,45 @@ export type SingleStepAuthArgsType =
3737
| { strategy: "jwt"; jwt: string; encryptionKey: string }
3838
| { strategy: "auth_endpoint"; payload: string; encryptionKey: string }
3939
| {
40-
/**
41-
* @deprecated
42-
*/
43-
strategy: "iframe_email_verification";
44-
email: string;
45-
}
46-
| {
47-
/**
48-
* @deprecated
49-
*/
50-
strategy: "iframe";
51-
}
52-
| {
53-
strategy: "passkey";
54-
/**
55-
* Whether to create a new passkey (sign up) or login to an existing one (sign in).
56-
* You can use `hasStoredPasskey()` to check if a user has previously logged in with a passkey on this device.
57-
*/
58-
type: "sign-up" | "sign-in";
59-
/**
60-
* Optional name of the passkey to create, defaults to a generated name
61-
*/
62-
passkeyName?: string;
63-
/**
64-
* Whether to store the last used passkey from local storage.
65-
* This is useful if you want to automatically log in the user with their last used passkey.
66-
* Defaults to true.
67-
*/
68-
storeLastUsedPasskey?: boolean;
69-
}
70-
| {
71-
strategy: "wallet";
72-
wallet: Wallet;
73-
chain: Chain;
74-
}
75-
| {
76-
strategy: "guest";
77-
client: ThirdwebClient;
78-
};
40+
/**
41+
* @deprecated
42+
*/
43+
strategy: "iframe_email_verification";
44+
email: string;
45+
}
46+
| {
47+
/**
48+
* @deprecated
49+
*/
50+
strategy: "iframe";
51+
}
52+
| {
53+
strategy: "passkey";
54+
/**
55+
* Whether to create a new passkey (sign up) or login to an existing one (sign in).
56+
* You can use `hasStoredPasskey()` to check if a user has previously logged in with a passkey on this device.
57+
*/
58+
type: "sign-up" | "sign-in";
59+
/**
60+
* Optional name of the passkey to create, defaults to a generated name
61+
*/
62+
passkeyName?: string;
63+
/**
64+
* Whether to store the last used passkey from local storage.
65+
* This is useful if you want to automatically log in the user with their last used passkey.
66+
* Defaults to true.
67+
*/
68+
storeLastUsedPasskey?: boolean;
69+
}
70+
| {
71+
strategy: "wallet";
72+
wallet: Wallet;
73+
chain: Chain;
74+
}
75+
| {
76+
strategy: "guest";
77+
client: ThirdwebClient;
78+
};
7979

8080
export type AuthArgsType = (MultiStepAuthArgsType | SingleStepAuthArgsType) & {
8181
client: ThirdwebClient;
@@ -100,6 +100,7 @@ export type AuthProvider =
100100
| "Coinbase"
101101
| "X"
102102
| "Line"
103+
| "Twitch"
103104
| "Farcaster"
104105
| "Telegram";
105106

@@ -157,11 +158,11 @@ export type AuthLoginReturnType = { user: InitializedUser };
157158
// Auth Types
158159
export type AuthDetails = (
159160
| {
160-
email?: string;
161-
}
161+
email?: string;
162+
}
162163
| {
163-
phoneNumber?: string;
164-
}
164+
phoneNumber?: string;
165+
}
165166
) & {
166167
userWalletId: string;
167168
encryptionKey?: string;
@@ -211,36 +212,36 @@ export type LogoutReturnType = { success: boolean };
211212
// this is the return type from the InAppWallet Class getUserWalletStatus method iframe call
212213
export type GetUserWalletStatusRpcReturnType =
213214
| {
214-
status: "Logged Out";
215-
user: undefined;
216-
}
215+
status: "Logged Out";
216+
user: undefined;
217+
}
217218
| {
218-
status: "Logged In, Wallet Uninitialized";
219-
user: { authDetails: AuthDetails };
220-
}
219+
status: "Logged In, Wallet Uninitialized";
220+
user: { authDetails: AuthDetails };
221+
}
221222
| {
222-
status: "Logged In, New Device";
223-
user: { authDetails: AuthDetails; walletAddress: string };
224-
}
223+
status: "Logged In, New Device";
224+
user: { authDetails: AuthDetails; walletAddress: string };
225+
}
225226
| {
226-
status: "Logged In, Wallet Initialized";
227-
user: Omit<InitializedUser, "account" | "status">;
228-
};
227+
status: "Logged In, Wallet Initialized";
228+
user: Omit<InitializedUser, "account" | "status">;
229+
};
229230

230231
// this is the return type from the InAppWallet Class getUserWalletStatus method
231232
export type GetUser =
232233
| {
233-
status: "Logged Out";
234-
}
234+
status: "Logged Out";
235+
}
235236
| {
236-
status: "Logged In, Wallet Uninitialized";
237-
authDetails: AuthDetails;
238-
}
237+
status: "Logged In, Wallet Uninitialized";
238+
authDetails: AuthDetails;
239+
}
239240
| {
240-
status: "Logged In, New Device";
241-
authDetails: AuthDetails;
242-
walletAddress: string;
243-
}
241+
status: "Logged In, New Device";
242+
authDetails: AuthDetails;
243+
walletAddress: string;
244+
}
244245
| InitializedUser;
245246

246247
export type GetAuthenticatedUserParams = {

0 commit comments

Comments
 (0)