Skip to content

Commit 389ad7f

Browse files
alcalawilocasta181frostbournesb
authored
add demo logs (#25)
* add logs * Update src/lib/StringPay.ts Co-authored-by: akfoster <ocasta181@gmail.com> * Update src/lib/StringPay.ts Co-authored-by: akfoster <ocasta181@gmail.com> * Update src/lib/StringPay.ts Co-authored-by: akfoster <ocasta181@gmail.com> * Update src/lib/StringPay.ts Co-authored-by: akfoster <ocasta181@gmail.com> * get user logged in on iframe ready * Update src/lib/events.ts Co-authored-by: akfoster <ocasta181@gmail.com> * Update src/lib/events.ts Co-authored-by: Frostbourne <85953565+frostbournesb@users.noreply.github.com> * Update src/lib/StringPay.ts Co-authored-by: akfoster <ocasta181@gmail.com> * cleanup --------- Co-authored-by: akfoster <ocasta181@gmail.com> Co-authored-by: Frostbourne <85953565+frostbournesb@users.noreply.github.com>
1 parent 2aa6e73 commit 389ad7f

2 files changed

Lines changed: 18 additions & 10 deletions

File tree

src/lib/StringPay.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,15 @@ export class StringPay {
4545
while (container.firstChild) {
4646
container.removeChild(container.firstChild);
4747
}
48-
49-
this.container = container;
50-
48+
5149
// Validate payload
5250
if (!payload) return err("No payload specified");
5351
if (!payload.apiKey) return err("You must have an api key in your payload");
5452
if (payload.apiKey.slice(0, 4) !== "str.") return err(`Invalid API Key: ${payload.apiKey}`);
5553
if (!payload.userAddress) return err("No user address found, please connect wallet")
5654
if (!IFRAME_URL) return err("IFRAME_URL not specified");
5755

56+
// Set payload
5857
this.payload = payload;
5958

6059
// Create iframe in dom
@@ -64,6 +63,7 @@ export class StringPay {
6463
iframe.style.overflow = "none";
6564
iframe.src = IFRAME_URL;
6665
container.appendChild(iframe);
66+
this.container = container;
6767
this.frame = iframe;
6868

6969
// set the default gas limit
@@ -80,10 +80,8 @@ export class StringPay {
8080
// since apiClient is a singleton, we can `globally` set the user address
8181
services.apiClient.setWalletAddress(this.payload.userAddress);
8282

83-
const user = await services.authService.fetchLoggedInUser(this.payload.userAddress);
84-
8583
// Register events
86-
const eventsService = createEventsService(this, services, user);
84+
const eventsService = createEventsService(this, services);
8785
eventsService.registerEvents();
8886
eventsService.watchWalletChange();
8987

src/lib/events.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { QuoteRequestPayload, TransactPayload, User } from './services/apiC
55
const CHANNEL = "STRING_PAY"
66
const IFRAME_URL = new URL(import.meta.env.VITE_IFRAME_URL).origin;
77

8-
export function createEventsService(stringPay: StringPay, services: Services, user: User | null) {
8+
export function createEventsService(stringPay: StringPay, services: Services) {
99
const { authService, quoteService } = services;
1010

1111
if (!stringPay.frame || !stringPay.payload) {
@@ -30,6 +30,7 @@ export function createEventsService(stringPay: StringPay, services: Services, us
3030
if (!frame) {
3131
err("a frame was not provided to sendEvent")
3232
}
33+
3334
const stringEvent: StringEvent = { eventName, data, error };
3435
const message = JSON.stringify({
3536
channel: CHANNEL,
@@ -58,24 +59,32 @@ export function createEventsService(stringPay: StringPay, services: Services, us
5859

5960
const registerEvents = () => {
6061
unregisterEvents();
61-
62+
6263
window.addEventListener('message', _handleEvent);
6364
};
6465

6566
const unregisterEvents = () => {
66-
window.removeEventListener('message', _handleEvent, false);
67+
window.removeEventListener('message', _handleEvent);
6768
};
6869

6970
/** -------------- EVENT HANDLERS ---------------- */
7071

7172
async function onIframeReady() {
73+
let user = null as User | null;
74+
try {
75+
user = await authService.fetchLoggedInUser(stringPayload.userAddress);
76+
} catch (e) {
77+
console.debug("fetchLoggedInUser error", e);
78+
}
79+
7280
const iframePayload = createIframePayload(stringPayload, user);
7381
sendEvent(frame, Events.LOAD_PAYLOAD, iframePayload);
7482
stringPay.isLoaded = true;
7583
stringPay.onFrameLoad();
7684
}
7785

7886
async function onIframeClose() {
87+
console.debug('SDK :: onIframeClose');
7988
stringPay.frame?.remove();
8089
stringPay.frame = undefined;
8190
stringPay.isLoaded = false;
@@ -95,7 +104,7 @@ export function createEventsService(stringPay: StringPay, services: Services, us
95104
const { user } = await authService.loginOrCreateUser(stringPayload.userAddress);
96105
sendEvent(frame, Events.RECEIVE_AUTHORIZE_USER, { user });
97106
} catch (error: any) {
98-
console.log('SDK :: onAuthorizeUser error: ', error);
107+
console.debug('SDK :: onAuthorizeUser error: ', error);
99108
sendEvent(frame, Events.RECEIVE_AUTHORIZE_USER, {}, error);
100109
}
101110
}
@@ -142,6 +151,7 @@ export function createEventsService(stringPay: StringPay, services: Services, us
142151
}
143152

144153
const watchWalletChange = () => {
154+
window.ethereum.removeAllListeners('accountsChanged');
145155
window.ethereum.on('accountsChanged', (accounts: string[]) => {
146156
services.apiClient.setWalletAddress(accounts[0]);
147157
onIframeClose();

0 commit comments

Comments
 (0)