@apvee/spfx-react-toolkit 1.3.0 → 2.0.0
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/lib/core/atoms.internal.js +1 -1
- package/lib/core/atoms.internal.js.map +1 -1
- package/lib/core/context.internal.js +2 -2
- package/lib/core/context.internal.js.map +1 -1
- package/lib/core/provider-base.internal.js +29 -29
- package/lib/core/provider-base.internal.js.map +1 -1
- package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js +8 -29
- package/lib/extensions/spFxReactToolkitTest/SpFxReactToolkitTestApplicationCustomizer.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useAppCatalogUrl.internal.d.ts +26 -0
- package/lib/hooks/useAppCatalogUrl.internal.d.ts.map +1 -0
- package/lib/hooks/useAppCatalogUrl.internal.js +72 -0
- package/lib/hooks/useAppCatalogUrl.internal.js.map +1 -0
- package/lib/hooks/useAsyncInvoke.internal.js +27 -75
- package/lib/hooks/useAsyncInvoke.internal.js.map +1 -1
- package/lib/hooks/useSPFxAadHttpClient.js +27 -27
- package/lib/hooks/useSPFxAadHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxContainerInfo.js +5 -5
- package/lib/hooks/useSPFxContainerInfo.js.map +1 -1
- package/lib/hooks/useSPFxContainerSize.js +9 -10
- package/lib/hooks/useSPFxContainerSize.js.map +1 -1
- package/lib/hooks/useSPFxCorrelationInfo.js +6 -7
- package/lib/hooks/useSPFxCorrelationInfo.js.map +1 -1
- package/lib/hooks/useSPFxCrossSitePermissions.js +48 -58
- package/lib/hooks/useSPFxCrossSitePermissions.js.map +1 -1
- package/lib/hooks/useSPFxDisplayMode.js +8 -8
- package/lib/hooks/useSPFxDisplayMode.js.map +1 -1
- package/lib/hooks/useSPFxEnvironmentInfo.js +17 -18
- package/lib/hooks/useSPFxEnvironmentInfo.js.map +1 -1
- package/lib/hooks/useSPFxFluent9ThemeInfo.js +4 -4
- package/lib/hooks/useSPFxFluent9ThemeInfo.js.map +1 -1
- package/lib/hooks/useSPFxHttpClient.js +10 -10
- package/lib/hooks/useSPFxHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxHubSiteInfo.js +21 -24
- package/lib/hooks/useSPFxHubSiteInfo.js.map +1 -1
- package/lib/hooks/useSPFxInstanceInfo.js +2 -2
- package/lib/hooks/useSPFxInstanceInfo.js.map +1 -1
- package/lib/hooks/useSPFxListInfo.js +8 -9
- package/lib/hooks/useSPFxListInfo.js.map +1 -1
- package/lib/hooks/useSPFxLocaleInfo.js +10 -10
- package/lib/hooks/useSPFxLocaleInfo.js.map +1 -1
- package/lib/hooks/useSPFxLogger.js +26 -26
- package/lib/hooks/useSPFxLogger.js.map +1 -1
- package/lib/hooks/useSPFxMSGraphClient.js +25 -25
- package/lib/hooks/useSPFxMSGraphClient.js.map +1 -1
- package/lib/hooks/useSPFxOneDriveAppData.js +148 -209
- package/lib/hooks/useSPFxOneDriveAppData.js.map +1 -1
- package/lib/hooks/useSPFxPageContext.js +2 -2
- package/lib/hooks/useSPFxPageContext.js.map +1 -1
- package/lib/hooks/useSPFxPageType.js +19 -20
- package/lib/hooks/useSPFxPageType.js.map +1 -1
- package/lib/hooks/useSPFxPerformance.js +33 -87
- package/lib/hooks/useSPFxPerformance.js.map +1 -1
- package/lib/hooks/useSPFxPermissions.js +14 -15
- package/lib/hooks/useSPFxPermissions.js.map +1 -1
- package/lib/hooks/useSPFxPnP.js +62 -119
- package/lib/hooks/useSPFxPnP.js.map +1 -1
- package/lib/hooks/useSPFxPnPContext.js +22 -25
- package/lib/hooks/useSPFxPnPContext.js.map +1 -1
- package/lib/hooks/useSPFxPnPList.js +307 -451
- package/lib/hooks/useSPFxPnPList.js.map +1 -1
- package/lib/hooks/useSPFxPnPSearch.js +262 -353
- package/lib/hooks/useSPFxPnPSearch.js.map +1 -1
- package/lib/hooks/useSPFxProperties.js +12 -20
- package/lib/hooks/useSPFxProperties.js.map +1 -1
- package/lib/hooks/useSPFxSPHttpClient.js +19 -19
- package/lib/hooks/useSPFxSPHttpClient.js.map +1 -1
- package/lib/hooks/useSPFxServiceScope.js +6 -6
- package/lib/hooks/useSPFxServiceScope.js.map +1 -1
- package/lib/hooks/useSPFxSiteInfo.js +7 -8
- package/lib/hooks/useSPFxSiteInfo.js.map +1 -1
- package/lib/hooks/useSPFxStorage.js +22 -22
- package/lib/hooks/useSPFxStorage.js.map +1 -1
- package/lib/hooks/useSPFxTeams.js +37 -92
- package/lib/hooks/useSPFxTeams.js.map +1 -1
- package/lib/hooks/useSPFxTenantKeyValueStore.d.ts +252 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.d.ts.map +1 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.js +572 -0
- package/lib/hooks/useSPFxTenantKeyValueStore.js.map +1 -0
- package/lib/hooks/useSPFxTenantProperty.d.ts +23 -244
- package/lib/hooks/useSPFxTenantProperty.d.ts.map +1 -1
- package/lib/hooks/useSPFxTenantProperty.js +85 -559
- package/lib/hooks/useSPFxTenantProperty.js.map +1 -1
- package/lib/hooks/useSPFxUserInfo.js +3 -4
- package/lib/hooks/useSPFxUserInfo.js.map +1 -1
- package/lib/hooks/useSPFxUserPhoto.js +76 -123
- package/lib/hooks/useSPFxUserPhoto.js.map +1 -1
- package/lib/utils/resize-observer.internal.js +6 -7
- package/lib/utils/resize-observer.internal.js.map +1 -1
- package/lib/utils/theme-subscription.internal.js +8 -8
- package/lib/utils/theme-subscription.internal.js.map +1 -1
- package/lib/utils/type-guards.internal.js +6 -6
- package/lib/utils/type-guards.internal.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js +12 -37
- package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js +277 -336
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js +26 -86
- package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js +53 -113
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js +49 -121
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js +44 -103
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js +15 -15
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js +18 -66
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js +9 -9
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js +37 -86
- package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js +6 -9
- package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js.map +1 -1
- package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js +3 -6
- package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js.map +1 -1
- package/package.json +1 -1
|
@@ -68,23 +68,22 @@ import { useSPFxSPHttpClient } from './useSPFxSPHttpClient';
|
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
70
|
export function useSPFxHubSiteInfo() {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var _e = useState(undefined), error = _e[0], setError = _e[1];
|
|
71
|
+
const pageContext = useSPFxPageContext();
|
|
72
|
+
const { invoke, baseUrl } = useSPFxSPHttpClient();
|
|
73
|
+
const [hubSiteUrl, setHubSiteUrl] = useState(undefined);
|
|
74
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
75
|
+
const [error, setError] = useState(undefined);
|
|
77
76
|
// Get hub site info from legacyPageContext
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
const legacy = pageContext.legacyPageContext;
|
|
78
|
+
const hubSiteId = legacy?.hubSiteId;
|
|
79
|
+
const isCurrentSiteTheHub = legacy?.isHubSite ?? false;
|
|
80
|
+
const currentSiteUrl = pageContext.webAbsoluteUrl;
|
|
82
81
|
// Site is part of a hub if hubSiteId exists and is not empty GUID
|
|
83
|
-
|
|
82
|
+
const isHubSite = hubSiteId !== undefined &&
|
|
84
83
|
hubSiteId !== '' &&
|
|
85
84
|
hubSiteId !== '00000000-0000-0000-0000-000000000000';
|
|
86
85
|
// Fetch hub site URL when needed
|
|
87
|
-
useEffect(
|
|
86
|
+
useEffect(() => {
|
|
88
87
|
if (!isHubSite || !hubSiteId) {
|
|
89
88
|
return;
|
|
90
89
|
}
|
|
@@ -99,29 +98,27 @@ export function useSPFxHubSiteInfo() {
|
|
|
99
98
|
setError(undefined);
|
|
100
99
|
// Use the web's hub site data endpoint to get hub URL
|
|
101
100
|
// This endpoint returns { value: "JSON_STRING" }, so we need to parse twice
|
|
102
|
-
invoke(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
})
|
|
107
|
-
.then(function (data) {
|
|
101
|
+
invoke(client => client.get(`${baseUrl}/_api/web/hubsitedata(false)`, SPHttpClient.configurations.v1)
|
|
102
|
+
.then(res => res.json())
|
|
103
|
+
.then((response) => JSON.parse(response.value)))
|
|
104
|
+
.then((data) => {
|
|
108
105
|
if (data.url) {
|
|
109
106
|
setHubSiteUrl(data.url);
|
|
110
107
|
}
|
|
111
108
|
setIsLoading(false);
|
|
112
109
|
})
|
|
113
|
-
.catch(
|
|
114
|
-
|
|
110
|
+
.catch(err => {
|
|
111
|
+
const errorObj = err instanceof Error ? err : new Error(String(err));
|
|
115
112
|
setError(errorObj);
|
|
116
113
|
setIsLoading(false);
|
|
117
114
|
});
|
|
118
115
|
}, [isHubSite, hubSiteId, isCurrentSiteTheHub, currentSiteUrl, invoke, baseUrl]);
|
|
119
116
|
return {
|
|
120
|
-
isHubSite
|
|
117
|
+
isHubSite,
|
|
121
118
|
hubSiteId: isHubSite ? hubSiteId : undefined,
|
|
122
|
-
hubSiteUrl
|
|
123
|
-
isLoading
|
|
124
|
-
error
|
|
119
|
+
hubSiteUrl,
|
|
120
|
+
isLoading,
|
|
121
|
+
error,
|
|
125
122
|
};
|
|
126
123
|
}
|
|
127
124
|
//# sourceMappingURL=useSPFxHubSiteInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxHubSiteInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxHubSiteInfo.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,gCAAgC;AAEhC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAsB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,UAAU,kBAAkB
|
|
1
|
+
{"version":3,"file":"useSPFxHubSiteInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxHubSiteInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,10 +31,10 @@ import { useSPFxContext } from './useSPFxContext';
|
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
33
|
export function useSPFxInstanceInfo() {
|
|
34
|
-
|
|
34
|
+
const { instanceId, kind } = useSPFxContext();
|
|
35
35
|
return {
|
|
36
36
|
id: instanceId,
|
|
37
|
-
kind
|
|
37
|
+
kind,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=useSPFxInstanceInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxInstanceInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxInstanceInfo.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,wCAAwC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAclD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,mBAAmB;
|
|
1
|
+
{"version":3,"file":"useSPFxInstanceInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxInstanceInfo.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,wCAAwC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAclD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;IAE9C,OAAO;QACL,EAAE,EAAE,UAAU;QACd,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -49,22 +49,21 @@ import { useSPFxPageContext } from './useSPFxPageContext';
|
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
51
|
export function useSPFxListInfo() {
|
|
52
|
-
|
|
53
|
-
var pageContext = useSPFxPageContext();
|
|
52
|
+
const pageContext = useSPFxPageContext();
|
|
54
53
|
// Try to get list from page context
|
|
55
|
-
|
|
54
|
+
const list = pageContext.list;
|
|
56
55
|
if (!list || !list.id) {
|
|
57
56
|
return undefined;
|
|
58
57
|
}
|
|
59
58
|
// List template type 101 is Document Library
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
const baseTemplate = list.baseTemplate;
|
|
60
|
+
const isDocumentLibrary = baseTemplate === 101;
|
|
62
61
|
return {
|
|
63
62
|
id: list.id.toString(),
|
|
64
|
-
title:
|
|
65
|
-
serverRelativeUrl:
|
|
66
|
-
baseTemplate
|
|
67
|
-
isDocumentLibrary
|
|
63
|
+
title: list.title ?? 'Unknown List',
|
|
64
|
+
serverRelativeUrl: list.serverRelativeUrl ?? '',
|
|
65
|
+
baseTemplate,
|
|
66
|
+
isDocumentLibrary,
|
|
68
67
|
};
|
|
69
68
|
}
|
|
70
69
|
//# sourceMappingURL=useSPFxListInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxListInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxListInfo.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,yDAAyD;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAsB1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,eAAe
|
|
1
|
+
{"version":3,"file":"useSPFxListInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxListInfo.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,yDAAyD;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAsB1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IAEzC,oCAAoC;IACpC,MAAM,IAAI,GAAI,WAOZ,CAAC,IAAI,CAAC;IAER,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACvC,MAAM,iBAAiB,GAAG,YAAY,KAAK,GAAG,CAAC;IAE/C,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;QACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,EAAE;QAC/C,YAAY;QACZ,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -90,20 +90,20 @@ import { useSPFxPageContext } from './useSPFxPageContext';
|
|
|
90
90
|
* ```
|
|
91
91
|
*/
|
|
92
92
|
export function useSPFxLocaleInfo() {
|
|
93
|
-
|
|
93
|
+
const pageContext = useSPFxPageContext();
|
|
94
94
|
// Extract culture info (native SPFx properties)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
const cultureInfo = pageContext.cultureInfo;
|
|
96
|
+
const locale = cultureInfo.currentCultureName;
|
|
97
|
+
const uiLocale = cultureInfo.currentUICultureName;
|
|
98
|
+
const isRtl = cultureInfo.isRightToLeft;
|
|
99
99
|
// Extract time zone from web (preview API)
|
|
100
100
|
// Cast needed because timeZoneInfo is not yet in public types
|
|
101
|
-
|
|
101
|
+
const timeZone = pageContext.web.timeZoneInfo;
|
|
102
102
|
return {
|
|
103
|
-
locale
|
|
104
|
-
uiLocale
|
|
105
|
-
timeZone
|
|
106
|
-
isRtl
|
|
103
|
+
locale,
|
|
104
|
+
uiLocale,
|
|
105
|
+
timeZone,
|
|
106
|
+
isRtl,
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
//# sourceMappingURL=useSPFxLocaleInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxLocaleInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxLocaleInfo.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,wCAAwC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA4C1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,MAAM,UAAU,iBAAiB;IAC/B,
|
|
1
|
+
{"version":3,"file":"useSPFxLocaleInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxLocaleInfo.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,wCAAwC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA4C1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IAEzC,gDAAgD;IAChD,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,CAAC;IAClD,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;IAExC,2CAA2C;IAC3C,8DAA8D;IAC9D,MAAM,QAAQ,GAAI,WAAW,CAAC,GAAuC,CAAC,YAAY,CAAC;IAEnF,OAAO;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -68,50 +68,50 @@ import { useSPFxCorrelationInfo } from './useSPFxCorrelationInfo';
|
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
70
|
export function useSPFxLogger(handler) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
const { id: instanceId, kind } = useSPFxInstanceInfo();
|
|
72
|
+
const { displayName, loginName } = useSPFxUserInfo();
|
|
73
|
+
const { siteUrl, webUrl } = useSPFxSiteInfo();
|
|
74
|
+
const { correlationId } = useSPFxCorrelationInfo();
|
|
75
|
+
const { spfxContext } = useSPFxContext();
|
|
76
|
+
const emit = (level, message, extra) => {
|
|
77
77
|
// Extract webPartTag only if in WebPart context
|
|
78
|
-
|
|
78
|
+
let webPartTag;
|
|
79
79
|
if (kind === 'WebPart') {
|
|
80
|
-
|
|
80
|
+
const wpContext = spfxContext;
|
|
81
81
|
webPartTag = wpContext.webPartTag;
|
|
82
82
|
}
|
|
83
|
-
|
|
84
|
-
level
|
|
85
|
-
message
|
|
83
|
+
const entry = {
|
|
84
|
+
level,
|
|
85
|
+
message,
|
|
86
86
|
ts: new Date().toISOString(),
|
|
87
|
-
instanceId
|
|
87
|
+
instanceId,
|
|
88
88
|
host: kind,
|
|
89
89
|
user: displayName + ' (' + loginName + ')',
|
|
90
|
-
siteUrl
|
|
91
|
-
webUrl
|
|
92
|
-
correlationId
|
|
93
|
-
webPartTag
|
|
94
|
-
extra
|
|
90
|
+
siteUrl,
|
|
91
|
+
webUrl,
|
|
92
|
+
correlationId,
|
|
93
|
+
webPartTag,
|
|
94
|
+
extra,
|
|
95
95
|
};
|
|
96
96
|
if (handler) {
|
|
97
97
|
handler(entry);
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
100
|
// Default: log to console
|
|
101
|
-
|
|
101
|
+
const levelUpper = level.toUpperCase();
|
|
102
102
|
// For WebPart contexts, display webPartTag instead of instanceId for better readability
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
const displayId = kind === 'WebPart' && webPartTag ? webPartTag : instanceId;
|
|
104
|
+
const line = '[' + levelUpper + '] ' + entry.ts + ' ' + kind + '/' + displayId + ' – ' + message;
|
|
105
105
|
// Use appropriate console method
|
|
106
|
-
|
|
107
|
-
consoleFn(line, extra
|
|
106
|
+
const consoleFn = level === 'debug' ? console.log : console[level];
|
|
107
|
+
consoleFn(line, extra ?? {});
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
return {
|
|
111
|
-
debug:
|
|
112
|
-
info:
|
|
113
|
-
warn:
|
|
114
|
-
error:
|
|
111
|
+
debug: (m, e) => emit('debug', m, e),
|
|
112
|
+
info: (m, e) => emit('info', m, e),
|
|
113
|
+
warn: (m, e) => emit('warn', m, e),
|
|
114
|
+
error: (m, e) => emit('error', m, e),
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
//# sourceMappingURL=useSPFxLogger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxLogger.js","sourceRoot":"","sources":["../../src/hooks/useSPFxLogger.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,gDAAgD;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA+DlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAmC;
|
|
1
|
+
{"version":3,"file":"useSPFxLogger.js","sourceRoot":"","sources":["../../src/hooks/useSPFxLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,23 +168,23 @@ import { useAsyncInvoke } from './useAsyncInvoke.internal';
|
|
|
168
168
|
* ```
|
|
169
169
|
*/
|
|
170
170
|
export function useSPFxMSGraphClient() {
|
|
171
|
-
|
|
171
|
+
const { consume } = useSPFxServiceScope();
|
|
172
172
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
173
173
|
// STATE
|
|
174
174
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
const [client, setClient] = useState(undefined);
|
|
176
|
+
const [isInitializing, setIsInitializing] = useState(true);
|
|
177
|
+
const [initError, setInitError] = useState(undefined);
|
|
178
178
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
179
179
|
// REFS (for cleanup and preventing double initialization)
|
|
180
180
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
181
181
|
// Track component mounted state to prevent memory leaks
|
|
182
|
-
|
|
182
|
+
const isMountedRef = useRef(true);
|
|
183
183
|
// Track if initialization has been attempted (prevent double init)
|
|
184
|
-
|
|
184
|
+
const initAttemptedRef = useRef(false);
|
|
185
185
|
// Cleanup on unmount
|
|
186
|
-
useEffect(
|
|
187
|
-
return
|
|
186
|
+
useEffect(() => {
|
|
187
|
+
return () => {
|
|
188
188
|
isMountedRef.current = false;
|
|
189
189
|
};
|
|
190
190
|
}, []);
|
|
@@ -192,14 +192,14 @@ export function useSPFxMSGraphClient() {
|
|
|
192
192
|
// FACTORY (lazy consume from ServiceScope)
|
|
193
193
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
194
194
|
// Lazy consume MSGraphClientFactory from ServiceScope (cached by useMemo)
|
|
195
|
-
|
|
195
|
+
const factory = useMemo(() => {
|
|
196
196
|
return consume(MSGraphClientFactory.serviceKey);
|
|
197
197
|
}, [consume]);
|
|
198
198
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
199
199
|
// INITIALIZATION EFFECT
|
|
200
200
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
201
201
|
// Initialize Graph client (factory.getClient is async)
|
|
202
|
-
useEffect(
|
|
202
|
+
useEffect(() => {
|
|
203
203
|
// Prevent double initialization
|
|
204
204
|
if (initAttemptedRef.current) {
|
|
205
205
|
return;
|
|
@@ -211,20 +211,20 @@ export function useSPFxMSGraphClient() {
|
|
|
211
211
|
// Get MSGraphClientV3 (version 3 of Microsoft Graph JavaScript Client Library)
|
|
212
212
|
factory
|
|
213
213
|
.getClient('3')
|
|
214
|
-
.then(
|
|
214
|
+
.then((graphClient) => {
|
|
215
215
|
// Only update state if still mounted
|
|
216
216
|
if (isMountedRef.current) {
|
|
217
217
|
setClient(graphClient);
|
|
218
218
|
setIsInitializing(false);
|
|
219
219
|
}
|
|
220
220
|
})
|
|
221
|
-
.catch(
|
|
221
|
+
.catch((err) => {
|
|
222
222
|
// Only update state if still mounted
|
|
223
223
|
if (isMountedRef.current) {
|
|
224
|
-
|
|
225
|
-
setInitError(
|
|
224
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
225
|
+
setInitError(error);
|
|
226
226
|
setIsInitializing(false);
|
|
227
|
-
console.error('Failed to initialize MSGraphClient:',
|
|
227
|
+
console.error('Failed to initialize MSGraphClient:', error);
|
|
228
228
|
}
|
|
229
229
|
});
|
|
230
230
|
}, [factory]);
|
|
@@ -232,21 +232,21 @@ export function useSPFxMSGraphClient() {
|
|
|
232
232
|
// ASYNC INVOKE PATTERN
|
|
233
233
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
234
234
|
// Use shared async invocation pattern
|
|
235
|
-
|
|
235
|
+
const { invoke, isLoading, error, clearError } = useAsyncInvoke(client, 'Graph client not initialized. Wait for client to be available or check initError.');
|
|
236
236
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
237
237
|
// COMPUTED STATE & RETURN
|
|
238
238
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
239
239
|
// Computed: ready when client is available and no errors
|
|
240
|
-
|
|
240
|
+
const isReady = client !== undefined && !isInitializing && !initError;
|
|
241
241
|
return {
|
|
242
|
-
client
|
|
243
|
-
invoke
|
|
244
|
-
isLoading
|
|
245
|
-
error
|
|
246
|
-
clearError
|
|
247
|
-
isInitializing
|
|
248
|
-
initError
|
|
249
|
-
isReady
|
|
242
|
+
client,
|
|
243
|
+
invoke,
|
|
244
|
+
isLoading,
|
|
245
|
+
error,
|
|
246
|
+
clearError,
|
|
247
|
+
isInitializing,
|
|
248
|
+
initError,
|
|
249
|
+
isReady,
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
252
|
//# sourceMappingURL=useSPFxMSGraphClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSPFxMSGraphClient.js","sourceRoot":"","sources":["../../src/hooks/useSPFxMSGraphClient.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,8DAA8D;AAE9D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAmB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAgG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkKG;AACH,MAAM,UAAU,oBAAoB;
|
|
1
|
+
{"version":3,"file":"useSPFxMSGraphClient.js","sourceRoot":"","sources":["../../src/hooks/useSPFxMSGraphClient.ts"],"names":[],"mappings":"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"}
|