@sunggang/ui-lib 0.4.40 → 0.4.41
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.
- package/LiffProvider.cjs.js +56 -144
- package/LiffProvider.esm.js +56 -144
- package/package.json +1 -1
package/LiffProvider.cjs.js
CHANGED
|
@@ -254,7 +254,7 @@ var fetchAPI = function() {
|
|
|
254
254
|
};
|
|
255
255
|
}();
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
function _array_like_to_array(arr, len) {
|
|
258
258
|
if (len == null || len > arr.length) len = arr.length;
|
|
259
259
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
260
260
|
return arr2;
|
|
@@ -465,7 +465,7 @@ var LiffProvider = function(param) {
|
|
|
465
465
|
// userInfo 的 localStorage key
|
|
466
466
|
var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
|
|
467
467
|
// 從 localStorage 載入 userInfo
|
|
468
|
-
var loadUserInfoFromStorage =
|
|
468
|
+
var loadUserInfoFromStorage = function() {
|
|
469
469
|
try {
|
|
470
470
|
var storedUserInfo = window.localStorage.getItem(userInfoStorageKey);
|
|
471
471
|
if (storedUserInfo) {
|
|
@@ -477,20 +477,16 @@ var LiffProvider = function(param) {
|
|
|
477
477
|
console.error("載入 userInfo 失敗:", err);
|
|
478
478
|
}
|
|
479
479
|
return null;
|
|
480
|
-
}
|
|
481
|
-
userInfoStorageKey
|
|
482
|
-
]);
|
|
480
|
+
};
|
|
483
481
|
// 儲存 userInfo 到 localStorage
|
|
484
|
-
var saveUserInfoToStorage =
|
|
482
|
+
var saveUserInfoToStorage = function(info) {
|
|
485
483
|
try {
|
|
486
484
|
window.localStorage.setItem(userInfoStorageKey, JSON.stringify(info));
|
|
487
485
|
} catch (err) {
|
|
488
486
|
console.error("儲存 userInfo 失敗:", err);
|
|
489
487
|
}
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
]);
|
|
493
|
-
var fetchMemberInfo = React.useCallback(function() {
|
|
488
|
+
};
|
|
489
|
+
var fetchMemberInfo = function() {
|
|
494
490
|
var _ref = _async_to_generator(function(token) {
|
|
495
491
|
var response, err;
|
|
496
492
|
return _ts_generator(this, function(_state) {
|
|
@@ -535,23 +531,19 @@ var LiffProvider = function(param) {
|
|
|
535
531
|
}
|
|
536
532
|
});
|
|
537
533
|
});
|
|
538
|
-
return function(token) {
|
|
534
|
+
return function fetchMemberInfo(token) {
|
|
539
535
|
return _ref.apply(this, arguments);
|
|
540
536
|
};
|
|
541
|
-
}()
|
|
542
|
-
memberInfoUrl,
|
|
543
|
-
saveUserInfoToStorage
|
|
544
|
-
]);
|
|
537
|
+
}();
|
|
545
538
|
// 檢查 token 的有效性
|
|
546
|
-
var checkTokenFunc =
|
|
539
|
+
var checkTokenFunc = function() {
|
|
547
540
|
var _ref = _async_to_generator(function(token) {
|
|
548
541
|
var finalToken, response, err;
|
|
549
542
|
return _ts_generator(this, function(_state) {
|
|
550
543
|
switch(_state.label){
|
|
551
544
|
case 0:
|
|
552
545
|
if (!checkTokenUrl) return [
|
|
553
|
-
2
|
|
554
|
-
false
|
|
546
|
+
2
|
|
555
547
|
];
|
|
556
548
|
finalToken = token.startsWith("Bearer ") ? token : "Bearer ".concat(token);
|
|
557
549
|
_state.label = 1;
|
|
@@ -614,17 +606,12 @@ var LiffProvider = function(param) {
|
|
|
614
606
|
}
|
|
615
607
|
});
|
|
616
608
|
});
|
|
617
|
-
return function(token) {
|
|
609
|
+
return function checkTokenFunc(token) {
|
|
618
610
|
return _ref.apply(this, arguments);
|
|
619
611
|
};
|
|
620
|
-
}()
|
|
621
|
-
checkTokenUrl,
|
|
622
|
-
memberInfoUrl,
|
|
623
|
-
userInfoStorageKey,
|
|
624
|
-
fetchMemberInfo
|
|
625
|
-
]);
|
|
612
|
+
}();
|
|
626
613
|
// 登入初始化函數
|
|
627
|
-
var loginInit =
|
|
614
|
+
var loginInit = function() {
|
|
628
615
|
var _ref = _async_to_generator(function(token) {
|
|
629
616
|
var _resData_data, _resData_data1, response, resData, loginToken, err;
|
|
630
617
|
return _ts_generator(this, function(_state) {
|
|
@@ -709,34 +696,22 @@ var LiffProvider = function(param) {
|
|
|
709
696
|
}
|
|
710
697
|
});
|
|
711
698
|
});
|
|
712
|
-
return function(token) {
|
|
699
|
+
return function loginInit(token) {
|
|
713
700
|
return _ref.apply(this, arguments);
|
|
714
701
|
};
|
|
715
|
-
}()
|
|
716
|
-
loginUrl,
|
|
717
|
-
ignoreCheckAddFriend,
|
|
718
|
-
inviteCode,
|
|
719
|
-
localStorageKey,
|
|
720
|
-
memberInfoUrl,
|
|
721
|
-
handleLoginError,
|
|
722
|
-
fetchMemberInfo,
|
|
723
|
-
saveUserInfoToStorage
|
|
724
|
-
]);
|
|
702
|
+
}();
|
|
725
703
|
// 初始化 LIFF
|
|
726
|
-
var initializeLiff =
|
|
704
|
+
var initializeLiff = function() {
|
|
727
705
|
var _ref = _async_to_generator(function(isValid) {
|
|
728
|
-
var
|
|
706
|
+
var customFetch, liff, originalFetch, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
|
|
729
707
|
return _ts_generator(this, function(_state) {
|
|
730
708
|
switch(_state.label){
|
|
731
709
|
case 0:
|
|
732
|
-
originalFetch = window.fetch;
|
|
733
|
-
_state.label = 1;
|
|
734
|
-
case 1:
|
|
735
710
|
_state.trys.push([
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
711
|
+
0,
|
|
712
|
+
9,
|
|
713
|
+
,
|
|
714
|
+
10
|
|
740
715
|
]);
|
|
741
716
|
customFetch = // 自訂 fetch 函數,避免每次請求都改變 URL
|
|
742
717
|
// eslint-disable-next-line no-inner-declarations
|
|
@@ -750,15 +725,11 @@ var LiffProvider = function(param) {
|
|
|
750
725
|
4,
|
|
751
726
|
Promise.resolve().then(function () { return require('./index.cjs3.js'); })
|
|
752
727
|
];
|
|
753
|
-
case
|
|
728
|
+
case 1:
|
|
754
729
|
liff = _state.sent().liff;
|
|
730
|
+
originalFetch = window.fetch;
|
|
755
731
|
window.fetch = customFetch;
|
|
756
732
|
if (openInApp && !(liff === null || liff === void 0 ? void 0 : liff.isInClient()) && (liff === null || liff === void 0 ? void 0 : liff.getOS()) !== "web") window.location.href = "line://app/".concat(liffId);
|
|
757
|
-
console.log("Initializing LIFF with ID:", liff);
|
|
758
|
-
if (!!(liff === null || liff === void 0 ? void 0 : liff.isLoggedIn())) return [
|
|
759
|
-
3,
|
|
760
|
-
4
|
|
761
|
-
];
|
|
762
733
|
return [
|
|
763
734
|
4,
|
|
764
735
|
liff.init({
|
|
@@ -766,17 +737,11 @@ var LiffProvider = function(param) {
|
|
|
766
737
|
withLoginOnExternalBrowser: false
|
|
767
738
|
})
|
|
768
739
|
];
|
|
769
|
-
case
|
|
740
|
+
case 2:
|
|
770
741
|
_state.sent();
|
|
771
742
|
console.log("LIFF init succeeded.");
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
5
|
|
775
|
-
];
|
|
776
|
-
case 4:
|
|
777
|
-
console.log("LIFF already logged in, skip init.");
|
|
778
|
-
_state.label = 5;
|
|
779
|
-
case 5:
|
|
743
|
+
setLiffObject(liff);
|
|
744
|
+
lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
|
|
780
745
|
// 未登入先進行登入
|
|
781
746
|
if (!liff.isLoggedIn()) {
|
|
782
747
|
redirectUri = customerRedirectUrl || "".concat(window.location.href);
|
|
@@ -795,58 +760,42 @@ var LiffProvider = function(param) {
|
|
|
795
760
|
redirectUri: redirectUri
|
|
796
761
|
});
|
|
797
762
|
}
|
|
798
|
-
setLiffObject(liff);
|
|
799
|
-
lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
|
|
800
|
-
// 已登入且 token 有效,跳過 loginInit
|
|
801
|
-
if (isValid) {
|
|
802
|
-
console.log("✅ Token 已驗證有效,跳過 loginInit");
|
|
803
|
-
return [
|
|
804
|
-
2
|
|
805
|
-
];
|
|
806
|
-
}
|
|
807
763
|
tempFriendship = null;
|
|
808
764
|
if (!lineToken) return [
|
|
809
765
|
3,
|
|
810
|
-
|
|
766
|
+
8
|
|
811
767
|
];
|
|
812
|
-
_state.label =
|
|
813
|
-
case
|
|
768
|
+
_state.label = 3;
|
|
769
|
+
case 3:
|
|
814
770
|
_state.trys.push([
|
|
815
|
-
|
|
816
|
-
|
|
771
|
+
3,
|
|
772
|
+
5,
|
|
817
773
|
,
|
|
818
|
-
|
|
774
|
+
6
|
|
819
775
|
]);
|
|
820
|
-
if (!!(liff === null || liff === void 0 ? void 0 : liff.isLoggedIn())) return [
|
|
821
|
-
3,
|
|
822
|
-
8
|
|
823
|
-
];
|
|
824
776
|
return [
|
|
825
777
|
4,
|
|
826
778
|
liff.getFriendship()
|
|
827
779
|
];
|
|
828
|
-
case
|
|
780
|
+
case 4:
|
|
829
781
|
friendship = _state.sent();
|
|
830
782
|
friendFlag = friendship === null || friendship === void 0 ? void 0 : friendship.friendFlag;
|
|
831
783
|
setFriendship(friendFlag);
|
|
832
784
|
tempFriendship = friendFlag;
|
|
833
785
|
console.log("isFriendship", friendFlag);
|
|
834
|
-
_state.label = 8;
|
|
835
|
-
case 8:
|
|
836
786
|
return [
|
|
837
787
|
3,
|
|
838
|
-
|
|
788
|
+
6
|
|
839
789
|
];
|
|
840
|
-
case
|
|
790
|
+
case 5:
|
|
841
791
|
error = _state.sent();
|
|
842
792
|
console.error("Error in liff.getFriendship():", error);
|
|
843
793
|
return [
|
|
844
794
|
3,
|
|
845
|
-
|
|
795
|
+
6
|
|
846
796
|
];
|
|
847
|
-
case
|
|
797
|
+
case 6:
|
|
848
798
|
console.log("isValid", isValid);
|
|
849
|
-
// 如果是好友且 token 有效,跳過 loginInit
|
|
850
799
|
if (tempFriendship && isValid) return [
|
|
851
800
|
2
|
|
852
801
|
];
|
|
@@ -854,52 +803,34 @@ var LiffProvider = function(param) {
|
|
|
854
803
|
4,
|
|
855
804
|
loginInit(lineToken)
|
|
856
805
|
];
|
|
857
|
-
case
|
|
806
|
+
case 7:
|
|
858
807
|
_state.sent();
|
|
859
|
-
_state.label =
|
|
860
|
-
case
|
|
808
|
+
_state.label = 8;
|
|
809
|
+
case 8:
|
|
861
810
|
return [
|
|
862
811
|
3,
|
|
863
|
-
|
|
812
|
+
10
|
|
864
813
|
];
|
|
865
|
-
case
|
|
814
|
+
case 9:
|
|
866
815
|
err = _state.sent();
|
|
867
816
|
setLiffError(err.toString());
|
|
868
817
|
console.log("LIFF init failed.", err);
|
|
869
818
|
return [
|
|
870
819
|
3,
|
|
871
|
-
|
|
872
|
-
];
|
|
873
|
-
case 14:
|
|
874
|
-
// 確保還原全域 fetch
|
|
875
|
-
try {
|
|
876
|
-
window.fetch = originalFetch;
|
|
877
|
-
} catch (e) {
|
|
878
|
-
// ignore
|
|
879
|
-
}
|
|
880
|
-
return [
|
|
881
|
-
7
|
|
820
|
+
10
|
|
882
821
|
];
|
|
883
|
-
case
|
|
822
|
+
case 10:
|
|
884
823
|
return [
|
|
885
824
|
2
|
|
886
825
|
];
|
|
887
826
|
}
|
|
888
827
|
});
|
|
889
828
|
});
|
|
890
|
-
return function(isValid) {
|
|
829
|
+
return function initializeLiff(isValid) {
|
|
891
830
|
return _ref.apply(this, arguments);
|
|
892
831
|
};
|
|
893
|
-
}()
|
|
894
|
-
|
|
895
|
-
liffId,
|
|
896
|
-
liffLogin,
|
|
897
|
-
loginByUser,
|
|
898
|
-
ignoreRoute,
|
|
899
|
-
customerRedirectUrl,
|
|
900
|
-
loginInit
|
|
901
|
-
]);
|
|
902
|
-
var accountLogin = React.useCallback(function() {
|
|
832
|
+
}();
|
|
833
|
+
var accountLogin = function() {
|
|
903
834
|
var _ref = _async_to_generator(function(username, password) {
|
|
904
835
|
var response, token, tokenType, finalToken, err;
|
|
905
836
|
return _ts_generator(this, function(_state) {
|
|
@@ -966,14 +897,10 @@ var LiffProvider = function(param) {
|
|
|
966
897
|
}
|
|
967
898
|
});
|
|
968
899
|
});
|
|
969
|
-
return function(username, password) {
|
|
900
|
+
return function accountLogin(username, password) {
|
|
970
901
|
return _ref.apply(this, arguments);
|
|
971
902
|
};
|
|
972
|
-
}()
|
|
973
|
-
accountLoginUrl,
|
|
974
|
-
localStorageKey,
|
|
975
|
-
fetchMemberInfo
|
|
976
|
-
]);
|
|
903
|
+
}();
|
|
977
904
|
var ensureLiffTokenValid = React.useCallback(/*#__PURE__*/ _async_to_generator(function() {
|
|
978
905
|
var _parsedStore_data, _parsedStore_state, jwtTokenValue, jwtToken, parsedStore, isValid, _tmp, err;
|
|
979
906
|
return _ts_generator(this, function(_state) {
|
|
@@ -1062,34 +989,26 @@ var LiffProvider = function(param) {
|
|
|
1062
989
|
});
|
|
1063
990
|
}), [
|
|
1064
991
|
liffObject,
|
|
1065
|
-
userInfoStorageKey
|
|
1066
|
-
checkTokenFunc,
|
|
1067
|
-
localStorageKey,
|
|
1068
|
-
loginData
|
|
992
|
+
userInfoStorageKey
|
|
1069
993
|
]);
|
|
1070
994
|
var normalizeToken = function(token) {
|
|
1071
995
|
var trimmed = token.trim();
|
|
1072
996
|
return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
|
|
1073
997
|
};
|
|
1074
|
-
|
|
1075
|
-
// (會在後面的 useEffect 中建立)
|
|
1076
|
-
var searchParams = null;
|
|
998
|
+
var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
|
|
1077
999
|
// 初始載入時從 localStorage 載入 userInfo
|
|
1078
1000
|
React.useEffect(function() {
|
|
1079
1001
|
loadUserInfoFromStorage();
|
|
1080
|
-
}, [
|
|
1081
|
-
loadUserInfoFromStorage
|
|
1082
|
-
]);
|
|
1002
|
+
}, []);
|
|
1083
1003
|
// 客戶端初始化 LIFF
|
|
1084
1004
|
React.useEffect(function() {
|
|
1085
1005
|
var checkAndInitialize = function() {
|
|
1086
1006
|
var _ref = _async_to_generator(function() {
|
|
1087
|
-
var
|
|
1007
|
+
var tokenFromQuery, finalToken, isValid, loginStore, jwtToken, _parsedStore_data, _parsedStore_state, parsedStore, isValid1, _tmp;
|
|
1088
1008
|
return _ts_generator(this, function(_state) {
|
|
1089
1009
|
switch(_state.label){
|
|
1090
1010
|
case 0:
|
|
1091
|
-
|
|
1092
|
-
tokenFromQuery = searchParamsLocal === null || searchParamsLocal === void 0 ? void 0 : searchParamsLocal.get("token");
|
|
1011
|
+
tokenFromQuery = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("token");
|
|
1093
1012
|
if (!tokenFromQuery) return [
|
|
1094
1013
|
3,
|
|
1095
1014
|
2
|
|
@@ -1156,13 +1075,7 @@ var LiffProvider = function(param) {
|
|
|
1156
1075
|
};
|
|
1157
1076
|
}();
|
|
1158
1077
|
checkAndInitialize();
|
|
1159
|
-
}, [
|
|
1160
|
-
checkTokenFunc,
|
|
1161
|
-
initializeLiff,
|
|
1162
|
-
localStorageKey,
|
|
1163
|
-
loginData,
|
|
1164
|
-
searchParams
|
|
1165
|
-
]);
|
|
1078
|
+
}, []);
|
|
1166
1079
|
var contextValue = React.useMemo(function() {
|
|
1167
1080
|
return {
|
|
1168
1081
|
liffObject: liffObject,
|
|
@@ -1187,8 +1100,7 @@ var LiffProvider = function(param) {
|
|
|
1187
1100
|
isFriendship,
|
|
1188
1101
|
ensureLiffTokenValid,
|
|
1189
1102
|
accountLogin,
|
|
1190
|
-
loginType
|
|
1191
|
-
initializeLiff
|
|
1103
|
+
loginType
|
|
1192
1104
|
]);
|
|
1193
1105
|
return /*#__PURE__*/ jsxRuntime.jsx(LiffContext.Provider, {
|
|
1194
1106
|
value: contextValue,
|
package/LiffProvider.esm.js
CHANGED
|
@@ -250,7 +250,7 @@ var fetchAPI = function() {
|
|
|
250
250
|
};
|
|
251
251
|
}();
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
function _array_like_to_array(arr, len) {
|
|
254
254
|
if (len == null || len > arr.length) len = arr.length;
|
|
255
255
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
256
256
|
return arr2;
|
|
@@ -461,7 +461,7 @@ var LiffProvider = function(param) {
|
|
|
461
461
|
// userInfo 的 localStorage key
|
|
462
462
|
var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
|
|
463
463
|
// 從 localStorage 載入 userInfo
|
|
464
|
-
var loadUserInfoFromStorage =
|
|
464
|
+
var loadUserInfoFromStorage = function() {
|
|
465
465
|
try {
|
|
466
466
|
var storedUserInfo = window.localStorage.getItem(userInfoStorageKey);
|
|
467
467
|
if (storedUserInfo) {
|
|
@@ -473,20 +473,16 @@ var LiffProvider = function(param) {
|
|
|
473
473
|
console.error("載入 userInfo 失敗:", err);
|
|
474
474
|
}
|
|
475
475
|
return null;
|
|
476
|
-
}
|
|
477
|
-
userInfoStorageKey
|
|
478
|
-
]);
|
|
476
|
+
};
|
|
479
477
|
// 儲存 userInfo 到 localStorage
|
|
480
|
-
var saveUserInfoToStorage =
|
|
478
|
+
var saveUserInfoToStorage = function(info) {
|
|
481
479
|
try {
|
|
482
480
|
window.localStorage.setItem(userInfoStorageKey, JSON.stringify(info));
|
|
483
481
|
} catch (err) {
|
|
484
482
|
console.error("儲存 userInfo 失敗:", err);
|
|
485
483
|
}
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
]);
|
|
489
|
-
var fetchMemberInfo = useCallback(function() {
|
|
484
|
+
};
|
|
485
|
+
var fetchMemberInfo = function() {
|
|
490
486
|
var _ref = _async_to_generator(function(token) {
|
|
491
487
|
var response, err;
|
|
492
488
|
return _ts_generator(this, function(_state) {
|
|
@@ -531,23 +527,19 @@ var LiffProvider = function(param) {
|
|
|
531
527
|
}
|
|
532
528
|
});
|
|
533
529
|
});
|
|
534
|
-
return function(token) {
|
|
530
|
+
return function fetchMemberInfo(token) {
|
|
535
531
|
return _ref.apply(this, arguments);
|
|
536
532
|
};
|
|
537
|
-
}()
|
|
538
|
-
memberInfoUrl,
|
|
539
|
-
saveUserInfoToStorage
|
|
540
|
-
]);
|
|
533
|
+
}();
|
|
541
534
|
// 檢查 token 的有效性
|
|
542
|
-
var checkTokenFunc =
|
|
535
|
+
var checkTokenFunc = function() {
|
|
543
536
|
var _ref = _async_to_generator(function(token) {
|
|
544
537
|
var finalToken, response, err;
|
|
545
538
|
return _ts_generator(this, function(_state) {
|
|
546
539
|
switch(_state.label){
|
|
547
540
|
case 0:
|
|
548
541
|
if (!checkTokenUrl) return [
|
|
549
|
-
2
|
|
550
|
-
false
|
|
542
|
+
2
|
|
551
543
|
];
|
|
552
544
|
finalToken = token.startsWith("Bearer ") ? token : "Bearer ".concat(token);
|
|
553
545
|
_state.label = 1;
|
|
@@ -610,17 +602,12 @@ var LiffProvider = function(param) {
|
|
|
610
602
|
}
|
|
611
603
|
});
|
|
612
604
|
});
|
|
613
|
-
return function(token) {
|
|
605
|
+
return function checkTokenFunc(token) {
|
|
614
606
|
return _ref.apply(this, arguments);
|
|
615
607
|
};
|
|
616
|
-
}()
|
|
617
|
-
checkTokenUrl,
|
|
618
|
-
memberInfoUrl,
|
|
619
|
-
userInfoStorageKey,
|
|
620
|
-
fetchMemberInfo
|
|
621
|
-
]);
|
|
608
|
+
}();
|
|
622
609
|
// 登入初始化函數
|
|
623
|
-
var loginInit =
|
|
610
|
+
var loginInit = function() {
|
|
624
611
|
var _ref = _async_to_generator(function(token) {
|
|
625
612
|
var _resData_data, _resData_data1, response, resData, loginToken, err;
|
|
626
613
|
return _ts_generator(this, function(_state) {
|
|
@@ -705,34 +692,22 @@ var LiffProvider = function(param) {
|
|
|
705
692
|
}
|
|
706
693
|
});
|
|
707
694
|
});
|
|
708
|
-
return function(token) {
|
|
695
|
+
return function loginInit(token) {
|
|
709
696
|
return _ref.apply(this, arguments);
|
|
710
697
|
};
|
|
711
|
-
}()
|
|
712
|
-
loginUrl,
|
|
713
|
-
ignoreCheckAddFriend,
|
|
714
|
-
inviteCode,
|
|
715
|
-
localStorageKey,
|
|
716
|
-
memberInfoUrl,
|
|
717
|
-
handleLoginError,
|
|
718
|
-
fetchMemberInfo,
|
|
719
|
-
saveUserInfoToStorage
|
|
720
|
-
]);
|
|
698
|
+
}();
|
|
721
699
|
// 初始化 LIFF
|
|
722
|
-
var initializeLiff =
|
|
700
|
+
var initializeLiff = function() {
|
|
723
701
|
var _ref = _async_to_generator(function(isValid) {
|
|
724
|
-
var
|
|
702
|
+
var customFetch, liff, originalFetch, lineToken, redirectUri, tempFriendship, friendship, friendFlag, error, err;
|
|
725
703
|
return _ts_generator(this, function(_state) {
|
|
726
704
|
switch(_state.label){
|
|
727
705
|
case 0:
|
|
728
|
-
originalFetch = window.fetch;
|
|
729
|
-
_state.label = 1;
|
|
730
|
-
case 1:
|
|
731
706
|
_state.trys.push([
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
707
|
+
0,
|
|
708
|
+
9,
|
|
709
|
+
,
|
|
710
|
+
10
|
|
736
711
|
]);
|
|
737
712
|
customFetch = // 自訂 fetch 函數,避免每次請求都改變 URL
|
|
738
713
|
// eslint-disable-next-line no-inner-declarations
|
|
@@ -746,15 +721,11 @@ var LiffProvider = function(param) {
|
|
|
746
721
|
4,
|
|
747
722
|
import('./index.esm3.js')
|
|
748
723
|
];
|
|
749
|
-
case
|
|
724
|
+
case 1:
|
|
750
725
|
liff = _state.sent().liff;
|
|
726
|
+
originalFetch = window.fetch;
|
|
751
727
|
window.fetch = customFetch;
|
|
752
728
|
if (openInApp && !(liff === null || liff === void 0 ? void 0 : liff.isInClient()) && (liff === null || liff === void 0 ? void 0 : liff.getOS()) !== "web") window.location.href = "line://app/".concat(liffId);
|
|
753
|
-
console.log("Initializing LIFF with ID:", liff);
|
|
754
|
-
if (!!(liff === null || liff === void 0 ? void 0 : liff.isLoggedIn())) return [
|
|
755
|
-
3,
|
|
756
|
-
4
|
|
757
|
-
];
|
|
758
729
|
return [
|
|
759
730
|
4,
|
|
760
731
|
liff.init({
|
|
@@ -762,17 +733,11 @@ var LiffProvider = function(param) {
|
|
|
762
733
|
withLoginOnExternalBrowser: false
|
|
763
734
|
})
|
|
764
735
|
];
|
|
765
|
-
case
|
|
736
|
+
case 2:
|
|
766
737
|
_state.sent();
|
|
767
738
|
console.log("LIFF init succeeded.");
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
5
|
|
771
|
-
];
|
|
772
|
-
case 4:
|
|
773
|
-
console.log("LIFF already logged in, skip init.");
|
|
774
|
-
_state.label = 5;
|
|
775
|
-
case 5:
|
|
739
|
+
setLiffObject(liff);
|
|
740
|
+
lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
|
|
776
741
|
// 未登入先進行登入
|
|
777
742
|
if (!liff.isLoggedIn()) {
|
|
778
743
|
redirectUri = customerRedirectUrl || "".concat(window.location.href);
|
|
@@ -791,58 +756,42 @@ var LiffProvider = function(param) {
|
|
|
791
756
|
redirectUri: redirectUri
|
|
792
757
|
});
|
|
793
758
|
}
|
|
794
|
-
setLiffObject(liff);
|
|
795
|
-
lineToken = liff === null || liff === void 0 ? void 0 : liff.getAccessToken();
|
|
796
|
-
// 已登入且 token 有效,跳過 loginInit
|
|
797
|
-
if (isValid) {
|
|
798
|
-
console.log("✅ Token 已驗證有效,跳過 loginInit");
|
|
799
|
-
return [
|
|
800
|
-
2
|
|
801
|
-
];
|
|
802
|
-
}
|
|
803
759
|
tempFriendship = null;
|
|
804
760
|
if (!lineToken) return [
|
|
805
761
|
3,
|
|
806
|
-
|
|
762
|
+
8
|
|
807
763
|
];
|
|
808
|
-
_state.label =
|
|
809
|
-
case
|
|
764
|
+
_state.label = 3;
|
|
765
|
+
case 3:
|
|
810
766
|
_state.trys.push([
|
|
811
|
-
|
|
812
|
-
|
|
767
|
+
3,
|
|
768
|
+
5,
|
|
813
769
|
,
|
|
814
|
-
|
|
770
|
+
6
|
|
815
771
|
]);
|
|
816
|
-
if (!!(liff === null || liff === void 0 ? void 0 : liff.isLoggedIn())) return [
|
|
817
|
-
3,
|
|
818
|
-
8
|
|
819
|
-
];
|
|
820
772
|
return [
|
|
821
773
|
4,
|
|
822
774
|
liff.getFriendship()
|
|
823
775
|
];
|
|
824
|
-
case
|
|
776
|
+
case 4:
|
|
825
777
|
friendship = _state.sent();
|
|
826
778
|
friendFlag = friendship === null || friendship === void 0 ? void 0 : friendship.friendFlag;
|
|
827
779
|
setFriendship(friendFlag);
|
|
828
780
|
tempFriendship = friendFlag;
|
|
829
781
|
console.log("isFriendship", friendFlag);
|
|
830
|
-
_state.label = 8;
|
|
831
|
-
case 8:
|
|
832
782
|
return [
|
|
833
783
|
3,
|
|
834
|
-
|
|
784
|
+
6
|
|
835
785
|
];
|
|
836
|
-
case
|
|
786
|
+
case 5:
|
|
837
787
|
error = _state.sent();
|
|
838
788
|
console.error("Error in liff.getFriendship():", error);
|
|
839
789
|
return [
|
|
840
790
|
3,
|
|
841
|
-
|
|
791
|
+
6
|
|
842
792
|
];
|
|
843
|
-
case
|
|
793
|
+
case 6:
|
|
844
794
|
console.log("isValid", isValid);
|
|
845
|
-
// 如果是好友且 token 有效,跳過 loginInit
|
|
846
795
|
if (tempFriendship && isValid) return [
|
|
847
796
|
2
|
|
848
797
|
];
|
|
@@ -850,52 +799,34 @@ var LiffProvider = function(param) {
|
|
|
850
799
|
4,
|
|
851
800
|
loginInit(lineToken)
|
|
852
801
|
];
|
|
853
|
-
case
|
|
802
|
+
case 7:
|
|
854
803
|
_state.sent();
|
|
855
|
-
_state.label =
|
|
856
|
-
case
|
|
804
|
+
_state.label = 8;
|
|
805
|
+
case 8:
|
|
857
806
|
return [
|
|
858
807
|
3,
|
|
859
|
-
|
|
808
|
+
10
|
|
860
809
|
];
|
|
861
|
-
case
|
|
810
|
+
case 9:
|
|
862
811
|
err = _state.sent();
|
|
863
812
|
setLiffError(err.toString());
|
|
864
813
|
console.log("LIFF init failed.", err);
|
|
865
814
|
return [
|
|
866
815
|
3,
|
|
867
|
-
|
|
868
|
-
];
|
|
869
|
-
case 14:
|
|
870
|
-
// 確保還原全域 fetch
|
|
871
|
-
try {
|
|
872
|
-
window.fetch = originalFetch;
|
|
873
|
-
} catch (e) {
|
|
874
|
-
// ignore
|
|
875
|
-
}
|
|
876
|
-
return [
|
|
877
|
-
7
|
|
816
|
+
10
|
|
878
817
|
];
|
|
879
|
-
case
|
|
818
|
+
case 10:
|
|
880
819
|
return [
|
|
881
820
|
2
|
|
882
821
|
];
|
|
883
822
|
}
|
|
884
823
|
});
|
|
885
824
|
});
|
|
886
|
-
return function(isValid) {
|
|
825
|
+
return function initializeLiff(isValid) {
|
|
887
826
|
return _ref.apply(this, arguments);
|
|
888
827
|
};
|
|
889
|
-
}()
|
|
890
|
-
|
|
891
|
-
liffId,
|
|
892
|
-
liffLogin,
|
|
893
|
-
loginByUser,
|
|
894
|
-
ignoreRoute,
|
|
895
|
-
customerRedirectUrl,
|
|
896
|
-
loginInit
|
|
897
|
-
]);
|
|
898
|
-
var accountLogin = useCallback(function() {
|
|
828
|
+
}();
|
|
829
|
+
var accountLogin = function() {
|
|
899
830
|
var _ref = _async_to_generator(function(username, password) {
|
|
900
831
|
var response, token, tokenType, finalToken, err;
|
|
901
832
|
return _ts_generator(this, function(_state) {
|
|
@@ -962,14 +893,10 @@ var LiffProvider = function(param) {
|
|
|
962
893
|
}
|
|
963
894
|
});
|
|
964
895
|
});
|
|
965
|
-
return function(username, password) {
|
|
896
|
+
return function accountLogin(username, password) {
|
|
966
897
|
return _ref.apply(this, arguments);
|
|
967
898
|
};
|
|
968
|
-
}()
|
|
969
|
-
accountLoginUrl,
|
|
970
|
-
localStorageKey,
|
|
971
|
-
fetchMemberInfo
|
|
972
|
-
]);
|
|
899
|
+
}();
|
|
973
900
|
var ensureLiffTokenValid = useCallback(/*#__PURE__*/ _async_to_generator(function() {
|
|
974
901
|
var _parsedStore_data, _parsedStore_state, jwtTokenValue, jwtToken, parsedStore, isValid, _tmp, err;
|
|
975
902
|
return _ts_generator(this, function(_state) {
|
|
@@ -1058,34 +985,26 @@ var LiffProvider = function(param) {
|
|
|
1058
985
|
});
|
|
1059
986
|
}), [
|
|
1060
987
|
liffObject,
|
|
1061
|
-
userInfoStorageKey
|
|
1062
|
-
checkTokenFunc,
|
|
1063
|
-
localStorageKey,
|
|
1064
|
-
loginData
|
|
988
|
+
userInfoStorageKey
|
|
1065
989
|
]);
|
|
1066
990
|
var normalizeToken = function(token) {
|
|
1067
991
|
var trimmed = token.trim();
|
|
1068
992
|
return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
|
|
1069
993
|
};
|
|
1070
|
-
|
|
1071
|
-
// (會在後面的 useEffect 中建立)
|
|
1072
|
-
var searchParams = null;
|
|
994
|
+
var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
|
|
1073
995
|
// 初始載入時從 localStorage 載入 userInfo
|
|
1074
996
|
useEffect(function() {
|
|
1075
997
|
loadUserInfoFromStorage();
|
|
1076
|
-
}, [
|
|
1077
|
-
loadUserInfoFromStorage
|
|
1078
|
-
]);
|
|
998
|
+
}, []);
|
|
1079
999
|
// 客戶端初始化 LIFF
|
|
1080
1000
|
useEffect(function() {
|
|
1081
1001
|
var checkAndInitialize = function() {
|
|
1082
1002
|
var _ref = _async_to_generator(function() {
|
|
1083
|
-
var
|
|
1003
|
+
var tokenFromQuery, finalToken, isValid, loginStore, jwtToken, _parsedStore_data, _parsedStore_state, parsedStore, isValid1, _tmp;
|
|
1084
1004
|
return _ts_generator(this, function(_state) {
|
|
1085
1005
|
switch(_state.label){
|
|
1086
1006
|
case 0:
|
|
1087
|
-
|
|
1088
|
-
tokenFromQuery = searchParamsLocal === null || searchParamsLocal === void 0 ? void 0 : searchParamsLocal.get("token");
|
|
1007
|
+
tokenFromQuery = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("token");
|
|
1089
1008
|
if (!tokenFromQuery) return [
|
|
1090
1009
|
3,
|
|
1091
1010
|
2
|
|
@@ -1152,13 +1071,7 @@ var LiffProvider = function(param) {
|
|
|
1152
1071
|
};
|
|
1153
1072
|
}();
|
|
1154
1073
|
checkAndInitialize();
|
|
1155
|
-
}, [
|
|
1156
|
-
checkTokenFunc,
|
|
1157
|
-
initializeLiff,
|
|
1158
|
-
localStorageKey,
|
|
1159
|
-
loginData,
|
|
1160
|
-
searchParams
|
|
1161
|
-
]);
|
|
1074
|
+
}, []);
|
|
1162
1075
|
var contextValue = useMemo(function() {
|
|
1163
1076
|
return {
|
|
1164
1077
|
liffObject: liffObject,
|
|
@@ -1183,8 +1096,7 @@ var LiffProvider = function(param) {
|
|
|
1183
1096
|
isFriendship,
|
|
1184
1097
|
ensureLiffTokenValid,
|
|
1185
1098
|
accountLogin,
|
|
1186
|
-
loginType
|
|
1187
|
-
initializeLiff
|
|
1099
|
+
loginType
|
|
1188
1100
|
]);
|
|
1189
1101
|
return /*#__PURE__*/ jsx(LiffContext.Provider, {
|
|
1190
1102
|
value: contextValue,
|