1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var react_1 = require("react");
|
4 | var accept_language_parser_1 = require("accept-language-parser");
|
5 | var network_1 = require("@shopify/network");
|
6 | var react_effect_1 = require("@shopify/react-effect");
|
7 | var context_1 = require("./context");
|
8 | function useNetworkEffect(perform) {
|
9 | var network = react_1.useContext(context_1.NetworkContext);
|
10 | react_effect_1.useServerEffect(function () {
|
11 | if (network != null) {
|
12 | return perform(network);
|
13 | }
|
14 | }, network ? network.effect : undefined);
|
15 | }
|
16 | exports.useNetworkEffect = useNetworkEffect;
|
17 | function useCspDirective(directive, source) {
|
18 | useNetworkEffect(function (network) { return network.addCspDirective(directive, source); });
|
19 | }
|
20 | exports.useCspDirective = useCspDirective;
|
21 | function useRequestHeader(header) {
|
22 | var network = react_1.useContext(context_1.NetworkContext);
|
23 | return network ? network.getHeader(header) : undefined;
|
24 | }
|
25 | exports.useRequestHeader = useRequestHeader;
|
26 | function useHeader(header, value) {
|
27 | useNetworkEffect(function (network) { return network.setHeader(header, value); });
|
28 | }
|
29 | exports.useHeader = useHeader;
|
30 | function useStatus(code) {
|
31 | useNetworkEffect(function (network) { return network.addStatusCode(code); });
|
32 | }
|
33 | exports.useStatus = useStatus;
|
34 | function useRedirect(url, status) {
|
35 | useNetworkEffect(function (network) { return network.redirectTo(url, status); });
|
36 | }
|
37 | exports.useRedirect = useRedirect;
|
38 | function useAcceptLanguage(fallback) {
|
39 | if (fallback === void 0) { fallback = { code: 'en', quality: 1.0 }; }
|
40 | var acceptsLanguages = useRequestHeader(network_1.Header.AcceptLanguage);
|
41 | var locales = acceptsLanguages ? accept_language_parser_1.parse(acceptsLanguages) : [fallback];
|
42 | return locales;
|
43 | }
|
44 | exports.useAcceptLanguage = useAcceptLanguage;
|