load.ts 2.0 KB

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