11package  io.agora.scene.convoai.ui 
22
33import  android.app.Activity 
4+ import  android.content.Context 
45import  android.content.Intent 
56import  android.graphics.PorterDuff 
67import  android.os.Build 
@@ -13,6 +14,7 @@ import android.view.WindowManager
1314import  android.webkit.CookieManager 
1415import  android.widget.Toast 
1516import  androidx.activity.result.ActivityResultLauncher 
17+ import  androidx.activity.result.contract.ActivityResultContract 
1618import  androidx.activity.result.contract.ActivityResultContracts 
1719import  androidx.activity.viewModels 
1820import  androidx.core.app.NotificationManagerCompat 
@@ -180,11 +182,27 @@ class CovLivingActivity : BaseActivity<CovActivityLivingBinding>() {
180182
181183    private  var  mLoginDialog:  LoginDialog ?  =  null 
182184
183-     private  lateinit  var  activityResultLauncher:  ActivityResultLauncher <Intent >
185+     private  lateinit  var  activityResultLauncher:  ActivityResultLauncher <Int >
184186    private  lateinit  var  mPermissionHelp:  PermissionHelp 
185187
186188    private  val  mLoginViewModel:  LoginViewModel  by viewModels()
187189
190+     private  class  SSOWebViewContract  : ActivityResultContract <Int , String ?>() {
191+         override  fun  createIntent (context :  Context , input :  Int ): Intent  {
192+             return  Intent (context, SSOWebViewActivity ::class .java).apply  {
193+                 putExtra(SSOWebViewActivity .EXTRA_TYPE , input)
194+             }
195+         }
196+ 
197+         override  fun  parseResult (resultCode :  Int , intent :  Intent ? ): String?  {
198+             return  if  (resultCode ==  Activity .RESULT_OK ) {
199+                 intent?.getStringExtra(SSOWebViewActivity .EXTRA_TOKEN )
200+             } else  {
201+                 null 
202+             }
203+         }
204+     }
205+ 
188206    private  var  conversationalAIAPI:  IConversationalAIAPI ?  =  null 
189207
190208    override  fun  getViewBinding (): CovActivityLivingBinding  {
@@ -932,22 +950,16 @@ class CovLivingActivity : BaseActivity<CovActivityLivingBinding>() {
932950        " Are you ok?" 
933951        " How are you?" 
934952    )
953+ 
935954    private  fun  setupView () {
936-         activityResultLauncher = 
937-             registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) { result -> 
938-                 if  (result.resultCode ==  Activity .RESULT_OK ) {
939-                     val  data:  Intent ?  =  result.data
940-                     val  token =  data?.getStringExtra(" token" 
941-                     if  (token !=  null ) {
942-                         SSOUserManager .saveToken(token)
943-                         mLoginViewModel.getUserInfoByToken(token)
944-                     } else  {
945-                         showLoginLoading(false )
946-                     }
947-                 } else  {
948-                     showLoginLoading(false )
949-                 }
955+         activityResultLauncher =  registerForActivityResult(SSOWebViewContract ()) { token:  String?  -> 
956+             if  (token !=  null ) {
957+                 SSOUserManager .saveToken(token)
958+                 mLoginViewModel.getUserInfoByToken(token)
959+             } else  {
960+                 showLoginLoading(false )
950961            }
962+         }
951963        mPermissionHelp =  PermissionHelp (this )
952964        mBinding?.apply  {
953965            window.addFlags(WindowManager .LayoutParams .FLAG_KEEP_SCREEN_ON )
@@ -1305,9 +1317,13 @@ class CovLivingActivity : BaseActivity<CovActivityLivingBinding>() {
13051317                    }
13061318
13071319                    override  fun  onClickStartSSO () {
1308-                         activityResultLauncher.launch(
1309-                             Intent (this @CovLivingActivity, SSOWebViewActivity ::class .java)
1310-                         )
1320+                         activityResultLauncher.launch(SSOWebViewActivity .TYPE_LOGIN )
1321+                         showLoginLoading(true )
1322+                     }
1323+ 
1324+                     override  fun  onClickSignupSSO () {
1325+                         cleanCookie()
1326+                         activityResultLauncher.launch(SSOWebViewActivity .TYPE_SIGNUP )
13111327                        showLoginLoading(true )
13121328                    }
13131329
0 commit comments