@sunggang/ui-lib 0.4.59 → 0.4.60
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 +0 -131
- package/LiffProvider.esm.js +0 -131
- package/package.json +1 -1
- package/src/lib/Provider/LiffProvider.d.ts +4 -2
package/LiffProvider.cjs.js
CHANGED
|
@@ -574,76 +574,8 @@ var LiffProvider = function(param) {
|
|
|
574
574
|
var _useState7 = _sliced_to_array(React.useState(null), 2), loginType = _useState7[0], setLoginType = _useState7[1];
|
|
575
575
|
// userInfo 的 localStorage key
|
|
576
576
|
var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
|
|
577
|
-
// liff profile 的 localStorage key
|
|
578
|
-
var liffUserInfoStorageKey = "".concat(localStorageKey, "-liffUserInfo");
|
|
579
|
-
// 從 localStorage 載入 userInfo
|
|
580
|
-
var loadUserInfoFromStorage = function() {
|
|
581
|
-
try {
|
|
582
|
-
var storedUserInfo = window.localStorage.getItem(userInfoStorageKey);
|
|
583
|
-
if (storedUserInfo) {
|
|
584
|
-
var parsedUserInfo = JSON.parse(storedUserInfo);
|
|
585
|
-
setUserInfo(parsedUserInfo);
|
|
586
|
-
return parsedUserInfo;
|
|
587
|
-
}
|
|
588
|
-
} catch (err) {
|
|
589
|
-
console.error("載入 userInfo 失敗:", err);
|
|
590
|
-
}
|
|
591
|
-
return null;
|
|
592
|
-
};
|
|
593
|
-
// 儲存 userInfo 到 localStorage
|
|
594
|
-
var saveUserInfoToStorage = function(info) {
|
|
595
|
-
try {
|
|
596
|
-
window.localStorage.setItem(userInfoStorageKey, JSON.stringify(info));
|
|
597
|
-
} catch (err) {
|
|
598
|
-
console.error("儲存 userInfo 失敗:", err);
|
|
599
|
-
}
|
|
600
|
-
};
|
|
601
|
-
// 從 localStorage 載入 LIFF profile
|
|
602
|
-
var loadLiffUserInfoFromStorage = function() {
|
|
603
|
-
try {
|
|
604
|
-
var stored = window.localStorage.getItem(liffUserInfoStorageKey);
|
|
605
|
-
if (stored) {
|
|
606
|
-
var parsed = JSON.parse(stored);
|
|
607
|
-
setLiffProfile(parsed);
|
|
608
|
-
return parsed;
|
|
609
|
-
}
|
|
610
|
-
} catch (err) {
|
|
611
|
-
console.error("載入 liffUserInfo 失敗:", err);
|
|
612
|
-
}
|
|
613
|
-
return null;
|
|
614
|
-
};
|
|
615
|
-
// 儲存 LIFF profile 到 localStorage
|
|
616
|
-
var saveLiffUserInfoToStorage = function(info) {
|
|
617
|
-
try {
|
|
618
|
-
window.localStorage.setItem(liffUserInfoStorageKey, JSON.stringify(info));
|
|
619
|
-
} catch (err) {
|
|
620
|
-
console.error("儲存 liffUserInfo 失敗:", err);
|
|
621
|
-
}
|
|
622
|
-
};
|
|
623
|
-
// 移除 LIFF profile 的 localStorage
|
|
624
|
-
var removeLiffUserInfoFromStorage = function() {
|
|
625
|
-
try {
|
|
626
|
-
window.localStorage.removeItem(liffUserInfoStorageKey);
|
|
627
|
-
} catch (err) {
|
|
628
|
-
// ignore
|
|
629
|
-
}
|
|
630
|
-
};
|
|
631
|
-
// 移除 LIFF initialized flag
|
|
632
|
-
var removeLiffInitializedFromStorage = function() {
|
|
633
|
-
try {
|
|
634
|
-
window.localStorage.removeItem("".concat(localStorageKey, "-liffInitialized"));
|
|
635
|
-
} catch (err) {
|
|
636
|
-
// ignore
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
577
|
// 清除 LIFF 相關快取與狀態(暴露給外部 as needed)
|
|
640
578
|
var clearLiffData = function() {
|
|
641
|
-
try {
|
|
642
|
-
removeLiffUserInfoFromStorage();
|
|
643
|
-
removeLiffInitializedFromStorage();
|
|
644
|
-
} catch (e) {
|
|
645
|
-
// ignore
|
|
646
|
-
}
|
|
647
579
|
setLiffProfile(null);
|
|
648
580
|
setLiffObject(null);
|
|
649
581
|
};
|
|
@@ -673,7 +605,6 @@ var LiffProvider = function(param) {
|
|
|
673
605
|
case 2:
|
|
674
606
|
response = _state.sent();
|
|
675
607
|
setUserInfo(response);
|
|
676
|
-
saveUserInfoToStorage(response);
|
|
677
608
|
return [
|
|
678
609
|
3,
|
|
679
610
|
4
|
|
@@ -842,7 +773,6 @@ var LiffProvider = function(param) {
|
|
|
842
773
|
case 5:
|
|
843
774
|
// 登入沒有回傳 token,視為登入失敗 — 清除 LIFF 快取
|
|
844
775
|
setUserInfo(response);
|
|
845
|
-
saveUserInfoToStorage(response);
|
|
846
776
|
try {
|
|
847
777
|
clearLiffData();
|
|
848
778
|
} catch (e) {
|
|
@@ -903,9 +833,6 @@ var LiffProvider = function(param) {
|
|
|
903
833
|
originalFetch = window.fetch;
|
|
904
834
|
window.fetch = customFetch;
|
|
905
835
|
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);
|
|
906
|
-
if (isValid) return [
|
|
907
|
-
2
|
|
908
|
-
];
|
|
909
836
|
return [
|
|
910
837
|
4,
|
|
911
838
|
liff.init({
|
|
@@ -952,7 +879,6 @@ var LiffProvider = function(param) {
|
|
|
952
879
|
case 4:
|
|
953
880
|
profile = _state.sent();
|
|
954
881
|
setLiffProfile(profile);
|
|
955
|
-
saveLiffUserInfoToStorage(profile);
|
|
956
882
|
return [
|
|
957
883
|
3,
|
|
958
884
|
6
|
|
@@ -1205,62 +1131,7 @@ var LiffProvider = function(param) {
|
|
|
1205
1131
|
var trimmed = token.trim();
|
|
1206
1132
|
return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
|
|
1207
1133
|
};
|
|
1208
|
-
// 提供給 context 的 lazy-load 函式(會嘗試回傳已存在的 liffObject,否則 dynamic import)
|
|
1209
|
-
var getLiff = React.useCallback(/*#__PURE__*/ _async_to_generator(function() {
|
|
1210
|
-
var mod, sdk, e;
|
|
1211
|
-
return _ts_generator(this, function(_state) {
|
|
1212
|
-
switch(_state.label){
|
|
1213
|
-
case 0:
|
|
1214
|
-
if (liffObject) return [
|
|
1215
|
-
2,
|
|
1216
|
-
liffObject
|
|
1217
|
-
];
|
|
1218
|
-
if (typeof window === "undefined") return [
|
|
1219
|
-
2,
|
|
1220
|
-
null
|
|
1221
|
-
];
|
|
1222
|
-
_state.label = 1;
|
|
1223
|
-
case 1:
|
|
1224
|
-
_state.trys.push([
|
|
1225
|
-
1,
|
|
1226
|
-
3,
|
|
1227
|
-
,
|
|
1228
|
-
4
|
|
1229
|
-
]);
|
|
1230
|
-
return [
|
|
1231
|
-
4,
|
|
1232
|
-
Promise.resolve().then(function () { return require('./index.cjs3.js'); })
|
|
1233
|
-
];
|
|
1234
|
-
case 2:
|
|
1235
|
-
mod = _state.sent();
|
|
1236
|
-
sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
|
|
1237
|
-
if (sdk) setLiffObject(sdk);
|
|
1238
|
-
return [
|
|
1239
|
-
2,
|
|
1240
|
-
sdk || null
|
|
1241
|
-
];
|
|
1242
|
-
case 3:
|
|
1243
|
-
e = _state.sent();
|
|
1244
|
-
console.error("lazy import @line/liff failed", e);
|
|
1245
|
-
return [
|
|
1246
|
-
2,
|
|
1247
|
-
null
|
|
1248
|
-
];
|
|
1249
|
-
case 4:
|
|
1250
|
-
return [
|
|
1251
|
-
2
|
|
1252
|
-
];
|
|
1253
|
-
}
|
|
1254
|
-
});
|
|
1255
|
-
}), [
|
|
1256
|
-
liffObject
|
|
1257
|
-
]);
|
|
1258
1134
|
var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
|
|
1259
|
-
// 初始載入時從 localStorage 載入
|
|
1260
|
-
React.useEffect(function() {
|
|
1261
|
-
loadUserInfoFromStorage();
|
|
1262
|
-
loadLiffUserInfoFromStorage();
|
|
1263
|
-
}, []);
|
|
1264
1135
|
// 客戶端初始化 LIFF
|
|
1265
1136
|
React.useEffect(function() {
|
|
1266
1137
|
var checkAndInitialize = function() {
|
|
@@ -1340,8 +1211,6 @@ var LiffProvider = function(param) {
|
|
|
1340
1211
|
var contextValue = React.useMemo(function() {
|
|
1341
1212
|
return {
|
|
1342
1213
|
liffObject: liffObject,
|
|
1343
|
-
// 非同步取得 LIFF SDK 的 helper(lazy-load),使用時可以呼叫 `await getLiff()`
|
|
1344
|
-
getLiff: getLiff,
|
|
1345
1214
|
// helper:透過 fetchLiffSdk 執行更完整的 fetch + optional init
|
|
1346
1215
|
fetchLiffSdk: function(liffId) {
|
|
1347
1216
|
return fetchLiffSdk(liffId);
|
package/LiffProvider.esm.js
CHANGED
|
@@ -570,76 +570,8 @@ var LiffProvider = function(param) {
|
|
|
570
570
|
var _useState7 = _sliced_to_array(useState(null), 2), loginType = _useState7[0], setLoginType = _useState7[1];
|
|
571
571
|
// userInfo 的 localStorage key
|
|
572
572
|
var userInfoStorageKey = "".concat(localStorageKey, "-userInfo");
|
|
573
|
-
// liff profile 的 localStorage key
|
|
574
|
-
var liffUserInfoStorageKey = "".concat(localStorageKey, "-liffUserInfo");
|
|
575
|
-
// 從 localStorage 載入 userInfo
|
|
576
|
-
var loadUserInfoFromStorage = function() {
|
|
577
|
-
try {
|
|
578
|
-
var storedUserInfo = window.localStorage.getItem(userInfoStorageKey);
|
|
579
|
-
if (storedUserInfo) {
|
|
580
|
-
var parsedUserInfo = JSON.parse(storedUserInfo);
|
|
581
|
-
setUserInfo(parsedUserInfo);
|
|
582
|
-
return parsedUserInfo;
|
|
583
|
-
}
|
|
584
|
-
} catch (err) {
|
|
585
|
-
console.error("載入 userInfo 失敗:", err);
|
|
586
|
-
}
|
|
587
|
-
return null;
|
|
588
|
-
};
|
|
589
|
-
// 儲存 userInfo 到 localStorage
|
|
590
|
-
var saveUserInfoToStorage = function(info) {
|
|
591
|
-
try {
|
|
592
|
-
window.localStorage.setItem(userInfoStorageKey, JSON.stringify(info));
|
|
593
|
-
} catch (err) {
|
|
594
|
-
console.error("儲存 userInfo 失敗:", err);
|
|
595
|
-
}
|
|
596
|
-
};
|
|
597
|
-
// 從 localStorage 載入 LIFF profile
|
|
598
|
-
var loadLiffUserInfoFromStorage = function() {
|
|
599
|
-
try {
|
|
600
|
-
var stored = window.localStorage.getItem(liffUserInfoStorageKey);
|
|
601
|
-
if (stored) {
|
|
602
|
-
var parsed = JSON.parse(stored);
|
|
603
|
-
setLiffProfile(parsed);
|
|
604
|
-
return parsed;
|
|
605
|
-
}
|
|
606
|
-
} catch (err) {
|
|
607
|
-
console.error("載入 liffUserInfo 失敗:", err);
|
|
608
|
-
}
|
|
609
|
-
return null;
|
|
610
|
-
};
|
|
611
|
-
// 儲存 LIFF profile 到 localStorage
|
|
612
|
-
var saveLiffUserInfoToStorage = function(info) {
|
|
613
|
-
try {
|
|
614
|
-
window.localStorage.setItem(liffUserInfoStorageKey, JSON.stringify(info));
|
|
615
|
-
} catch (err) {
|
|
616
|
-
console.error("儲存 liffUserInfo 失敗:", err);
|
|
617
|
-
}
|
|
618
|
-
};
|
|
619
|
-
// 移除 LIFF profile 的 localStorage
|
|
620
|
-
var removeLiffUserInfoFromStorage = function() {
|
|
621
|
-
try {
|
|
622
|
-
window.localStorage.removeItem(liffUserInfoStorageKey);
|
|
623
|
-
} catch (err) {
|
|
624
|
-
// ignore
|
|
625
|
-
}
|
|
626
|
-
};
|
|
627
|
-
// 移除 LIFF initialized flag
|
|
628
|
-
var removeLiffInitializedFromStorage = function() {
|
|
629
|
-
try {
|
|
630
|
-
window.localStorage.removeItem("".concat(localStorageKey, "-liffInitialized"));
|
|
631
|
-
} catch (err) {
|
|
632
|
-
// ignore
|
|
633
|
-
}
|
|
634
|
-
};
|
|
635
573
|
// 清除 LIFF 相關快取與狀態(暴露給外部 as needed)
|
|
636
574
|
var clearLiffData = function() {
|
|
637
|
-
try {
|
|
638
|
-
removeLiffUserInfoFromStorage();
|
|
639
|
-
removeLiffInitializedFromStorage();
|
|
640
|
-
} catch (e) {
|
|
641
|
-
// ignore
|
|
642
|
-
}
|
|
643
575
|
setLiffProfile(null);
|
|
644
576
|
setLiffObject(null);
|
|
645
577
|
};
|
|
@@ -669,7 +601,6 @@ var LiffProvider = function(param) {
|
|
|
669
601
|
case 2:
|
|
670
602
|
response = _state.sent();
|
|
671
603
|
setUserInfo(response);
|
|
672
|
-
saveUserInfoToStorage(response);
|
|
673
604
|
return [
|
|
674
605
|
3,
|
|
675
606
|
4
|
|
@@ -838,7 +769,6 @@ var LiffProvider = function(param) {
|
|
|
838
769
|
case 5:
|
|
839
770
|
// 登入沒有回傳 token,視為登入失敗 — 清除 LIFF 快取
|
|
840
771
|
setUserInfo(response);
|
|
841
|
-
saveUserInfoToStorage(response);
|
|
842
772
|
try {
|
|
843
773
|
clearLiffData();
|
|
844
774
|
} catch (e) {
|
|
@@ -899,9 +829,6 @@ var LiffProvider = function(param) {
|
|
|
899
829
|
originalFetch = window.fetch;
|
|
900
830
|
window.fetch = customFetch;
|
|
901
831
|
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);
|
|
902
|
-
if (isValid) return [
|
|
903
|
-
2
|
|
904
|
-
];
|
|
905
832
|
return [
|
|
906
833
|
4,
|
|
907
834
|
liff.init({
|
|
@@ -948,7 +875,6 @@ var LiffProvider = function(param) {
|
|
|
948
875
|
case 4:
|
|
949
876
|
profile = _state.sent();
|
|
950
877
|
setLiffProfile(profile);
|
|
951
|
-
saveLiffUserInfoToStorage(profile);
|
|
952
878
|
return [
|
|
953
879
|
3,
|
|
954
880
|
6
|
|
@@ -1201,62 +1127,7 @@ var LiffProvider = function(param) {
|
|
|
1201
1127
|
var trimmed = token.trim();
|
|
1202
1128
|
return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
|
|
1203
1129
|
};
|
|
1204
|
-
// 提供給 context 的 lazy-load 函式(會嘗試回傳已存在的 liffObject,否則 dynamic import)
|
|
1205
|
-
var getLiff = useCallback(/*#__PURE__*/ _async_to_generator(function() {
|
|
1206
|
-
var mod, sdk, e;
|
|
1207
|
-
return _ts_generator(this, function(_state) {
|
|
1208
|
-
switch(_state.label){
|
|
1209
|
-
case 0:
|
|
1210
|
-
if (liffObject) return [
|
|
1211
|
-
2,
|
|
1212
|
-
liffObject
|
|
1213
|
-
];
|
|
1214
|
-
if (typeof window === "undefined") return [
|
|
1215
|
-
2,
|
|
1216
|
-
null
|
|
1217
|
-
];
|
|
1218
|
-
_state.label = 1;
|
|
1219
|
-
case 1:
|
|
1220
|
-
_state.trys.push([
|
|
1221
|
-
1,
|
|
1222
|
-
3,
|
|
1223
|
-
,
|
|
1224
|
-
4
|
|
1225
|
-
]);
|
|
1226
|
-
return [
|
|
1227
|
-
4,
|
|
1228
|
-
import('./index.esm3.js')
|
|
1229
|
-
];
|
|
1230
|
-
case 2:
|
|
1231
|
-
mod = _state.sent();
|
|
1232
|
-
sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
|
|
1233
|
-
if (sdk) setLiffObject(sdk);
|
|
1234
|
-
return [
|
|
1235
|
-
2,
|
|
1236
|
-
sdk || null
|
|
1237
|
-
];
|
|
1238
|
-
case 3:
|
|
1239
|
-
e = _state.sent();
|
|
1240
|
-
console.error("lazy import @line/liff failed", e);
|
|
1241
|
-
return [
|
|
1242
|
-
2,
|
|
1243
|
-
null
|
|
1244
|
-
];
|
|
1245
|
-
case 4:
|
|
1246
|
-
return [
|
|
1247
|
-
2
|
|
1248
|
-
];
|
|
1249
|
-
}
|
|
1250
|
-
});
|
|
1251
|
-
}), [
|
|
1252
|
-
liffObject
|
|
1253
|
-
]);
|
|
1254
1130
|
var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
|
|
1255
|
-
// 初始載入時從 localStorage 載入
|
|
1256
|
-
useEffect(function() {
|
|
1257
|
-
loadUserInfoFromStorage();
|
|
1258
|
-
loadLiffUserInfoFromStorage();
|
|
1259
|
-
}, []);
|
|
1260
1131
|
// 客戶端初始化 LIFF
|
|
1261
1132
|
useEffect(function() {
|
|
1262
1133
|
var checkAndInitialize = function() {
|
|
@@ -1336,8 +1207,6 @@ var LiffProvider = function(param) {
|
|
|
1336
1207
|
var contextValue = useMemo(function() {
|
|
1337
1208
|
return {
|
|
1338
1209
|
liffObject: liffObject,
|
|
1339
|
-
// 非同步取得 LIFF SDK 的 helper(lazy-load),使用時可以呼叫 `await getLiff()`
|
|
1340
|
-
getLiff: getLiff,
|
|
1341
1210
|
// helper:透過 fetchLiffSdk 執行更完整的 fetch + optional init
|
|
1342
1211
|
fetchLiffSdk: function(liffId) {
|
|
1343
1212
|
return fetchLiffSdk(liffId);
|
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type LiffContextType = {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
fetchLiffSdk?: (liffId?: string) => Promise<{
|
|
4
|
+
sdk: any;
|
|
5
|
+
isLoggedIn: boolean | null;
|
|
6
|
+
} | null>;
|
|
5
7
|
liffObject: any;
|
|
6
8
|
loginData: any;
|
|
7
9
|
userInfo?: any;
|