load.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //import { Empty } from "google-protobuf/google/protobuf/empty_pb";
  2. //import { Duration } from "google-protobuf/google/protobuf/duration_pb";
  3. import { get as getToken, IUser, signIn } from "./reducers/current-user";
  4. //import { DURATION } from "./reducers/current-user";
  5. import { ISite, refresh as refreshLayout } from "./reducers/layout";
  6. import { ISettingItem, refresh as refreshSetting } from "./reducers/setting";
  7. import { get, IErrorResponse } from "./request";
  8. //import { GRPC_HOST, grpc_metadata } from "./request";
  9. import store from "./store";
  10. interface IUserResponse {
  11. ok: boolean;
  12. message: string;
  13. data: IUser;
  14. }
  15. export interface ISiteInfoResponse {
  16. title: string;
  17. }
  18. interface IUserData {
  19. nickName: string;
  20. realName: string;
  21. avatar: string;
  22. roles: string[];
  23. token: string;
  24. }
  25. export interface ITokenRefreshResponse {
  26. ok: boolean;
  27. message: string;
  28. data: IUserData;
  29. }
  30. const init = () => {
  31. get<ISiteInfoResponse | IErrorResponse>("/v2/siteinfo/en").then(
  32. (response) => {
  33. if ("title" in response) {
  34. const it: ISite = {
  35. title: response.title,
  36. subhead: "",
  37. keywords: [],
  38. description: "",
  39. copyright: "",
  40. logo: "",
  41. author: { name: "", email: "" },
  42. };
  43. store.dispatch(refreshLayout(it));
  44. }
  45. }
  46. );
  47. const token = getToken();
  48. if (token) {
  49. get<ITokenRefreshResponse | IErrorResponse>("/v2/auth/current").then(
  50. (response) => {
  51. console.log(response);
  52. if ("data" in response) {
  53. const it: IUser = {
  54. nickName: response.data.nickName,
  55. realName: response.data.realName,
  56. avatar: response.data.avatar,
  57. roles: response.data.roles,
  58. };
  59. store.dispatch(signIn([it, response.data.token]));
  60. }
  61. }
  62. );
  63. } else {
  64. console.log("no token");
  65. }
  66. //获取用户设置
  67. const setting = localStorage.getItem("user-settings");
  68. if (setting !== null) {
  69. const json = JSON.parse(setting);
  70. store.dispatch(refreshSetting(json as ISettingItem[]));
  71. }
  72. };
  73. export default init;