PageLoginMs.xaml.vb 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. Public Class PageLoginMs
  2. ''' <summary>
  3. ''' 刷新页面显示的所有信息。
  4. ''' </summary>
  5. Public Sub Reload(KeepInput As Boolean)
  6. End Sub
  7. ''' <summary>
  8. ''' 获取当前页面的登录信息。
  9. ''' </summary>
  10. Public Shared Function GetLoginData() As McLoginMs
  11. Return New McLoginMs With {.OAuthRefreshToken = Setup.Get("CacheMsOAuthRefresh"), .UserName = Setup.Get("CacheMsName")}
  12. End Function
  13. ''' <summary>
  14. ''' 当前页面的登录信息是否有效。
  15. ''' </summary>
  16. Public Shared Function IsVaild(LoginData As McLoginMs) As String
  17. If LoginData.OAuthRefreshToken = "" Then
  18. Return "请在登录账号后再继续!"
  19. Else
  20. Return ""
  21. End If
  22. End Function
  23. Public Function IsVaild() As String
  24. Return IsVaild(GetLoginData())
  25. End Function
  26. Private Sub BtnLogin_Click(sender As Object, e As EventArgs) Handles BtnLogin.Click
  27. BtnLogin.IsEnabled = False
  28. BtnLogin.Text = "登录中 0%"
  29. RunInNewThread(Sub()
  30. Try
  31. McLoginMsLoader.Start(GetLoginData(), IsForceRestart:=True)
  32. Do While McLoginMsLoader.State = LoadState.Loading
  33. RunInUi(Sub() BtnLogin.Text = "登录中 " & Math.Round(McLoginMsLoader.Progress * 100) & "%")
  34. Thread.Sleep(50)
  35. Loop
  36. If McLoginMsLoader.State = LoadState.Finished Then
  37. RunInUi(Sub() FrmLaunchLeft.RefreshPage(False, True))
  38. ElseIf McLoginMsLoader.State = LoadState.Aborted Then
  39. Throw New ThreadInterruptedException
  40. ElseIf McLoginMsLoader.Error Is Nothing Then
  41. Throw New Exception("未知错误!")
  42. Else
  43. Throw New Exception(McLoginMsLoader.Error.Message, McLoginMsLoader.Error)
  44. End If
  45. Catch ex As ThreadInterruptedException
  46. Hint("登录已取消!")
  47. Catch ex As Exception
  48. If ex.Message = "$$" Then
  49. ElseIf ex.Message.StartsWith("$") Then
  50. Hint(ex.Message.TrimStart("$"), HintType.Critical)
  51. Else
  52. Log(ex, "微软登录尝试失败", LogLevel.Msgbox)
  53. End If
  54. Finally
  55. RunInUi(Sub()
  56. BtnLogin.IsEnabled = True
  57. BtnLogin.Text = "添加账号"
  58. End Sub)
  59. End Try
  60. End Sub, "Ms Login")
  61. End Sub
  62. End Class