@sunggang/ui-lib 0.4.51 → 0.4.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -460,10 +460,13 @@ var LiffProvider = function(param) {
460
460
  var _useState2 = _sliced_to_array(React.useState(null), 2), liffError = _useState2[0], setLiffError = _useState2[1];
461
461
  var _useState3 = _sliced_to_array(React.useState(null), 2), loginData = _useState3[0], setLoginData = _useState3[1];
462
462
  var _useState4 = _sliced_to_array(React.useState(null), 2), userInfo = _useState4[0], setUserInfo = _useState4[1];
463
- var _useState5 = _sliced_to_array(React.useState(null), 2), isFriendship = _useState5[0], setFriendship = _useState5[1];
464
- var _useState6 = _sliced_to_array(React.useState(null), 2), loginType = _useState6[0], setLoginType = _useState6[1];
463
+ var _useState5 = _sliced_to_array(React.useState(null), 2), liffProfile = _useState5[0], setLiffProfile = _useState5[1];
464
+ var _useState6 = _sliced_to_array(React.useState(null), 2), isFriendship = _useState6[0], setFriendship = _useState6[1];
465
+ var _useState7 = _sliced_to_array(React.useState(null), 2), loginType = _useState7[0], setLoginType = _useState7[1];
465
466
  // userInfo 的 localStorage key
466
467
  var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
468
+ // liff profile 的 localStorage key
469
+ var liffUserInfoStorageKey = "".concat(localStorageKey, "-liffUserInfo");
467
470
  // 從 localStorage 載入 userInfo
468
471
  var loadUserInfoFromStorage = function() {
469
472
  try {
@@ -486,6 +489,28 @@ var LiffProvider = function(param) {
486
489
  console.error("儲存 userInfo 失敗:", err);
487
490
  }
488
491
  };
492
+ // 從 localStorage 載入 LIFF profile
493
+ var loadLiffUserInfoFromStorage = function() {
494
+ try {
495
+ var stored = window.localStorage.getItem(liffUserInfoStorageKey);
496
+ if (stored) {
497
+ var parsed = JSON.parse(stored);
498
+ setLiffProfile(parsed);
499
+ return parsed;
500
+ }
501
+ } catch (err) {
502
+ console.error("載入 liffUserInfo 失敗:", err);
503
+ }
504
+ return null;
505
+ };
506
+ // 儲存 LIFF profile 到 localStorage
507
+ var saveLiffUserInfoToStorage = function(info) {
508
+ try {
509
+ window.localStorage.setItem(liffUserInfoStorageKey, JSON.stringify(info));
510
+ } catch (err) {
511
+ console.error("儲存 liffUserInfo 失敗:", err);
512
+ }
513
+ };
489
514
  var fetchMemberInfo = function() {
490
515
  var _ref = _async_to_generator(function(token) {
491
516
  var response, err;
@@ -703,15 +728,15 @@ var LiffProvider = function(param) {
703
728
  // 初始化 LIFF
704
729
  var initializeLiff = function() {
705
730
  var _ref = _async_to_generator(function(isValid) {
706
- var customFetch, liff, originalFetch, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
731
+ var customFetch, liff, originalFetch, profile, profileErr, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
707
732
  return _ts_generator(this, function(_state) {
708
733
  switch(_state.label){
709
734
  case 0:
710
735
  _state.trys.push([
711
736
  0,
712
- 9,
737
+ 13,
713
738
  ,
714
- 10
739
+ 14
715
740
  ]);
716
741
  customFetch = // 自訂 fetch 函數,避免每次請求都改變 URL
717
742
  // eslint-disable-next-line no-inner-declarations
@@ -741,6 +766,34 @@ var LiffProvider = function(param) {
741
766
  _state.sent();
742
767
  console.log("LIFF init succeeded.");
743
768
  setLiffObject(liff);
769
+ _state.label = 3;
770
+ case 3:
771
+ _state.trys.push([
772
+ 3,
773
+ 5,
774
+ ,
775
+ 6
776
+ ]);
777
+ return [
778
+ 4,
779
+ liff.getProfile()
780
+ ];
781
+ case 4:
782
+ profile = _state.sent();
783
+ setLiffProfile(profile);
784
+ saveLiffUserInfoToStorage(profile);
785
+ return [
786
+ 3,
787
+ 6
788
+ ];
789
+ case 5:
790
+ profileErr = _state.sent();
791
+ console.warn("取得 LIFF profile 失敗(非致命):", profileErr);
792
+ return [
793
+ 3,
794
+ 6
795
+ ];
796
+ case 6:
744
797
  lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
745
798
  // 未登入先進行登入
746
799
  if (!liff.isLoggedIn()) {
@@ -763,21 +816,21 @@ var LiffProvider = function(param) {
763
816
  tempFriendship = null;
764
817
  if (!lineToken) return [
765
818
  3,
766
- 8
819
+ 12
767
820
  ];
768
- _state.label = 3;
769
- case 3:
821
+ _state.label = 7;
822
+ case 7:
770
823
  _state.trys.push([
771
- 3,
772
- 5,
824
+ 7,
825
+ 9,
773
826
  ,
774
- 6
827
+ 10
775
828
  ]);
776
829
  return [
777
830
  4,
778
831
  liff.getFriendship()
779
832
  ];
780
- case 4:
833
+ case 8:
781
834
  friendship = _state.sent();
782
835
  friendFlag = friendship === null || friendship === void 0 ? void 0 : friendship.friendFlag;
783
836
  setFriendship(friendFlag);
@@ -785,16 +838,16 @@ var LiffProvider = function(param) {
785
838
  console.log("isFriendship", friendFlag);
786
839
  return [
787
840
  3,
788
- 6
841
+ 10
789
842
  ];
790
- case 5:
843
+ case 9:
791
844
  error = _state.sent();
792
845
  console.error("Error in liff.getFriendship():", error);
793
846
  return [
794
847
  3,
795
- 6
848
+ 10
796
849
  ];
797
- case 6:
850
+ case 10:
798
851
  console.log("isValid", isValid);
799
852
  if (tempFriendship && isValid) return [
800
853
  2
@@ -803,23 +856,23 @@ var LiffProvider = function(param) {
803
856
  4,
804
857
  loginInit(lineToken)
805
858
  ];
806
- case 7:
859
+ case 11:
807
860
  _state.sent();
808
- _state.label = 8;
809
- case 8:
861
+ _state.label = 12;
862
+ case 12:
810
863
  return [
811
864
  3,
812
- 10
865
+ 14
813
866
  ];
814
- case 9:
867
+ case 13:
815
868
  err = _state.sent();
816
869
  setLiffError(err.toString());
817
870
  console.log("LIFF init failed.", err);
818
871
  return [
819
872
  3,
820
- 10
873
+ 14
821
874
  ];
822
- case 10:
875
+ case 14:
823
876
  return [
824
877
  2
825
878
  ];
@@ -996,9 +1049,10 @@ var LiffProvider = function(param) {
996
1049
  return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
997
1050
  };
998
1051
  var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
999
- // 初始載入時從 localStorage 載入 userInfo
1052
+ // 初始載入時從 localStorage 載入
1000
1053
  React.useEffect(function() {
1001
1054
  loadUserInfoFromStorage();
1055
+ loadLiffUserInfoFromStorage();
1002
1056
  }, []);
1003
1057
  // 客戶端初始化 LIFF
1004
1058
  React.useEffect(function() {
@@ -1089,7 +1143,8 @@ var LiffProvider = function(param) {
1089
1143
  isFriendship: isFriendship,
1090
1144
  ensureLiffTokenValid: ensureLiffTokenValid,
1091
1145
  accountLogin: accountLogin,
1092
- loginType: loginType
1146
+ loginType: loginType,
1147
+ liffProfile: liffProfile
1093
1148
  };
1094
1149
  }, [
1095
1150
  liffObject,
@@ -1100,7 +1155,8 @@ var LiffProvider = function(param) {
1100
1155
  isFriendship,
1101
1156
  ensureLiffTokenValid,
1102
1157
  accountLogin,
1103
- loginType
1158
+ loginType,
1159
+ liffProfile
1104
1160
  ]);
1105
1161
  return /*#__PURE__*/ jsxRuntime.jsx(LiffContext.Provider, {
1106
1162
  value: contextValue,
@@ -456,10 +456,13 @@ var LiffProvider = function(param) {
456
456
  var _useState2 = _sliced_to_array(useState(null), 2), liffError = _useState2[0], setLiffError = _useState2[1];
457
457
  var _useState3 = _sliced_to_array(useState(null), 2), loginData = _useState3[0], setLoginData = _useState3[1];
458
458
  var _useState4 = _sliced_to_array(useState(null), 2), userInfo = _useState4[0], setUserInfo = _useState4[1];
459
- var _useState5 = _sliced_to_array(useState(null), 2), isFriendship = _useState5[0], setFriendship = _useState5[1];
460
- var _useState6 = _sliced_to_array(useState(null), 2), loginType = _useState6[0], setLoginType = _useState6[1];
459
+ var _useState5 = _sliced_to_array(useState(null), 2), liffProfile = _useState5[0], setLiffProfile = _useState5[1];
460
+ var _useState6 = _sliced_to_array(useState(null), 2), isFriendship = _useState6[0], setFriendship = _useState6[1];
461
+ var _useState7 = _sliced_to_array(useState(null), 2), loginType = _useState7[0], setLoginType = _useState7[1];
461
462
  // userInfo 的 localStorage key
462
463
  var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
464
+ // liff profile 的 localStorage key
465
+ var liffUserInfoStorageKey = "".concat(localStorageKey, "-liffUserInfo");
463
466
  // 從 localStorage 載入 userInfo
464
467
  var loadUserInfoFromStorage = function() {
465
468
  try {
@@ -482,6 +485,28 @@ var LiffProvider = function(param) {
482
485
  console.error("儲存 userInfo 失敗:", err);
483
486
  }
484
487
  };
488
+ // 從 localStorage 載入 LIFF profile
489
+ var loadLiffUserInfoFromStorage = function() {
490
+ try {
491
+ var stored = window.localStorage.getItem(liffUserInfoStorageKey);
492
+ if (stored) {
493
+ var parsed = JSON.parse(stored);
494
+ setLiffProfile(parsed);
495
+ return parsed;
496
+ }
497
+ } catch (err) {
498
+ console.error("載入 liffUserInfo 失敗:", err);
499
+ }
500
+ return null;
501
+ };
502
+ // 儲存 LIFF profile 到 localStorage
503
+ var saveLiffUserInfoToStorage = function(info) {
504
+ try {
505
+ window.localStorage.setItem(liffUserInfoStorageKey, JSON.stringify(info));
506
+ } catch (err) {
507
+ console.error("儲存 liffUserInfo 失敗:", err);
508
+ }
509
+ };
485
510
  var fetchMemberInfo = function() {
486
511
  var _ref = _async_to_generator(function(token) {
487
512
  var response, err;
@@ -699,15 +724,15 @@ var LiffProvider = function(param) {
699
724
  // 初始化 LIFF
700
725
  var initializeLiff = function() {
701
726
  var _ref = _async_to_generator(function(isValid) {
702
- var customFetch, liff, originalFetch, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
727
+ var customFetch, liff, originalFetch, profile, profileErr, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
703
728
  return _ts_generator(this, function(_state) {
704
729
  switch(_state.label){
705
730
  case 0:
706
731
  _state.trys.push([
707
732
  0,
708
- 9,
733
+ 13,
709
734
  ,
710
- 10
735
+ 14
711
736
  ]);
712
737
  customFetch = // 自訂 fetch 函數,避免每次請求都改變 URL
713
738
  // eslint-disable-next-line no-inner-declarations
@@ -737,6 +762,34 @@ var LiffProvider = function(param) {
737
762
  _state.sent();
738
763
  console.log("LIFF init succeeded.");
739
764
  setLiffObject(liff);
765
+ _state.label = 3;
766
+ case 3:
767
+ _state.trys.push([
768
+ 3,
769
+ 5,
770
+ ,
771
+ 6
772
+ ]);
773
+ return [
774
+ 4,
775
+ liff.getProfile()
776
+ ];
777
+ case 4:
778
+ profile = _state.sent();
779
+ setLiffProfile(profile);
780
+ saveLiffUserInfoToStorage(profile);
781
+ return [
782
+ 3,
783
+ 6
784
+ ];
785
+ case 5:
786
+ profileErr = _state.sent();
787
+ console.warn("取得 LIFF profile 失敗(非致命):", profileErr);
788
+ return [
789
+ 3,
790
+ 6
791
+ ];
792
+ case 6:
740
793
  lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
741
794
  // 未登入先進行登入
742
795
  if (!liff.isLoggedIn()) {
@@ -759,21 +812,21 @@ var LiffProvider = function(param) {
759
812
  tempFriendship = null;
760
813
  if (!lineToken) return [
761
814
  3,
762
- 8
815
+ 12
763
816
  ];
764
- _state.label = 3;
765
- case 3:
817
+ _state.label = 7;
818
+ case 7:
766
819
  _state.trys.push([
767
- 3,
768
- 5,
820
+ 7,
821
+ 9,
769
822
  ,
770
- 6
823
+ 10
771
824
  ]);
772
825
  return [
773
826
  4,
774
827
  liff.getFriendship()
775
828
  ];
776
- case 4:
829
+ case 8:
777
830
  friendship = _state.sent();
778
831
  friendFlag = friendship === null || friendship === void 0 ? void 0 : friendship.friendFlag;
779
832
  setFriendship(friendFlag);
@@ -781,16 +834,16 @@ var LiffProvider = function(param) {
781
834
  console.log("isFriendship", friendFlag);
782
835
  return [
783
836
  3,
784
- 6
837
+ 10
785
838
  ];
786
- case 5:
839
+ case 9:
787
840
  error = _state.sent();
788
841
  console.error("Error in liff.getFriendship():", error);
789
842
  return [
790
843
  3,
791
- 6
844
+ 10
792
845
  ];
793
- case 6:
846
+ case 10:
794
847
  console.log("isValid", isValid);
795
848
  if (tempFriendship && isValid) return [
796
849
  2
@@ -799,23 +852,23 @@ var LiffProvider = function(param) {
799
852
  4,
800
853
  loginInit(lineToken)
801
854
  ];
802
- case 7:
855
+ case 11:
803
856
  _state.sent();
804
- _state.label = 8;
805
- case 8:
857
+ _state.label = 12;
858
+ case 12:
806
859
  return [
807
860
  3,
808
- 10
861
+ 14
809
862
  ];
810
- case 9:
863
+ case 13:
811
864
  err = _state.sent();
812
865
  setLiffError(err.toString());
813
866
  console.log("LIFF init failed.", err);
814
867
  return [
815
868
  3,
816
- 10
869
+ 14
817
870
  ];
818
- case 10:
871
+ case 14:
819
872
  return [
820
873
  2
821
874
  ];
@@ -992,9 +1045,10 @@ var LiffProvider = function(param) {
992
1045
  return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
993
1046
  };
994
1047
  var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
995
- // 初始載入時從 localStorage 載入 userInfo
1048
+ // 初始載入時從 localStorage 載入
996
1049
  useEffect(function() {
997
1050
  loadUserInfoFromStorage();
1051
+ loadLiffUserInfoFromStorage();
998
1052
  }, []);
999
1053
  // 客戶端初始化 LIFF
1000
1054
  useEffect(function() {
@@ -1085,7 +1139,8 @@ var LiffProvider = function(param) {
1085
1139
  isFriendship: isFriendship,
1086
1140
  ensureLiffTokenValid: ensureLiffTokenValid,
1087
1141
  accountLogin: accountLogin,
1088
- loginType: loginType
1142
+ loginType: loginType,
1143
+ liffProfile: liffProfile
1089
1144
  };
1090
1145
  }, [
1091
1146
  liffObject,
@@ -1096,7 +1151,8 @@ var LiffProvider = function(param) {
1096
1151
  isFriendship,
1097
1152
  ensureLiffTokenValid,
1098
1153
  accountLogin,
1099
- loginType
1154
+ loginType,
1155
+ liffProfile
1100
1156
  ]);
1101
1157
  return /*#__PURE__*/ jsx(LiffContext.Provider, {
1102
1158
  value: contextValue,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sunggang/ui-lib",
3
- "version": "0.4.51",
3
+ "version": "0.4.52",
4
4
  "sideEffects": [
5
5
  "*.css",
6
6
  "./src/style.css",
@@ -3,6 +3,7 @@ type LiffContextType = {
3
3
  liffObject: any;
4
4
  loginData: any;
5
5
  userInfo?: any;
6
+ liffProfile?: any;
6
7
  accessToken: string;
7
8
  liffError: string | null;
8
9
  initializeLiff: () => Promise<void>;