From a9a1a6a507616a77f70d6525dab5027f5b7a60e6 Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Wed, 26 Feb 2025 20:48:51 -0500
Subject: added typing to PostToServer calls.  made smartDraw popup create
 images locally.

---
 src/client/apis/GoogleAuthenticationManager.tsx | 27 +++++++++++++------------
 1 file changed, 14 insertions(+), 13 deletions(-)

(limited to 'src/client/apis/GoogleAuthenticationManager.tsx')

diff --git a/src/client/apis/GoogleAuthenticationManager.tsx b/src/client/apis/GoogleAuthenticationManager.tsx
index 5269f763b..94ce42d8d 100644
--- a/src/client/apis/GoogleAuthenticationManager.tsx
+++ b/src/client/apis/GoogleAuthenticationManager.tsx
@@ -11,7 +11,8 @@ const AuthenticationUrl = 'https://accounts.google.com/o/oauth2/v2/auth';
 const prompt = 'Paste authorization code here...';
 
 @observer
-export class GoogleAuthenticationManager extends React.Component<{}> {
+export class GoogleAuthenticationManager extends React.Component<object> {
+    // eslint-disable-next-line no-use-before-define
     public static Instance: GoogleAuthenticationManager;
     private authenticationLink: Opt<string> = undefined;
     @observable private openState = false;
@@ -19,7 +20,7 @@ export class GoogleAuthenticationManager extends React.Component<{}> {
     @observable private showPasteTargetState = false;
     @observable private success: Opt<boolean> = undefined;
     @observable private displayLauncher = true;
-    @observable private credentials: any;
+    @observable private credentials: { user_info: { name: string; picture: string }; access_token: string } | undefined = undefined;
     private disposer: Opt<IReactionDisposer>;
 
     private set isOpen(value: boolean) {
@@ -35,25 +36,25 @@ export class GoogleAuthenticationManager extends React.Component<{}> {
     }
 
     public fetchOrGenerateAccessToken = async (displayIfFound = false) => {
-        let response: any = await Networking.FetchFromServer('/readGoogleAccessToken');
+        const response = await Networking.FetchFromServer('/readGoogleAccessToken');
         // if this is an authentication url, activate the UI to register the new access token
         if (new RegExp(AuthenticationUrl).test(response)) {
             this.isOpen = true;
             this.authenticationLink = response;
-            return new Promise<string>(async resolve => {
+            return new Promise<string>(resolve => {
                 this.disposer?.();
                 this.disposer = reaction(
                     () => this.authenticationCode,
                     async authenticationCode => {
                         if (authenticationCode && /\d{1}\/[\w-]{55}/.test(authenticationCode)) {
                             this.disposer?.();
-                            const response = await Networking.PostToServer('/writeGoogleAccessToken', { authenticationCode });
+                            const response2 = await Networking.PostToServer('/writeGoogleAccessToken', { authenticationCode });
                             runInAction(() => {
                                 this.success = true;
-                                this.credentials = response;
+                                this.credentials = response2 as { user_info: { name: string; picture: string }; access_token: string };
                             });
                             this.resetState();
-                            resolve(response.access_token);
+                            resolve((response2 as { access_token: string }).access_token);
                         }
                     }
                 );
@@ -61,16 +62,16 @@ export class GoogleAuthenticationManager extends React.Component<{}> {
         }
 
         // otherwise, we already have a valid, stored access token and user info
-        response = JSON.parse(response);
+        const response2 = JSON.parse(response) as { user_info: { name: string; picture: string }; access_token: string };
         if (displayIfFound) {
             runInAction(() => {
                 this.success = true;
-                this.credentials = response;
+                this.credentials = response2;
             });
             this.resetState(-1, -1);
             this.isOpen = true;
         }
-        return response.access_token;
+        return (response2 as { access_token: string }).access_token;
     };
 
     resetState = action((visibleForMS: number = 3000, fadesOutInMS: number = 500) => {
@@ -106,7 +107,7 @@ export class GoogleAuthenticationManager extends React.Component<{}> {
         }
     });
 
-    constructor(props: {}) {
+    constructor(props: object) {
         super(props);
         GoogleAuthenticationManager.Instance = this;
     }
@@ -128,8 +129,8 @@ export class GoogleAuthenticationManager extends React.Component<{}> {
                 {this.showPasteTargetState ? <input className={'paste-target'} onChange={action(e => (this.authenticationCode = e.currentTarget.value))} placeholder={prompt} /> : null}
                 {this.credentials ? (
                     <>
-                        <img className={'avatar'} src={this.credentials.userInfo.picture} />
-                        <span className={'welcome'}>Welcome to Dash, {this.credentials.userInfo.name}</span>
+                        <img className={'avatar'} src={this.credentials.user_info.picture} />
+                        <span className={'welcome'}>Welcome to Dash, {this.credentials.user_info.name}</span>
                         <div
                             className={'disconnect'}
                             onClick={async () => {
-- 
cgit v1.2.3-70-g09d2

