UNPKG

1.85 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var react_1 = require("react");
4var accept_language_parser_1 = require("accept-language-parser");
5var network_1 = require("@shopify/network");
6var react_effect_1 = require("@shopify/react-effect");
7var context_1 = require("./context");
8function 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}
16exports.useNetworkEffect = useNetworkEffect;
17function useCspDirective(directive, source) {
18 useNetworkEffect(function (network) { return network.addCspDirective(directive, source); });
19}
20exports.useCspDirective = useCspDirective;
21function useRequestHeader(header) {
22 var network = react_1.useContext(context_1.NetworkContext);
23 return network ? network.getHeader(header) : undefined;
24}
25exports.useRequestHeader = useRequestHeader;
26function useHeader(header, value) {
27 useNetworkEffect(function (network) { return network.setHeader(header, value); });
28}
29exports.useHeader = useHeader;
30function useStatus(code) {
31 useNetworkEffect(function (network) { return network.addStatusCode(code); });
32}
33exports.useStatus = useStatus;
34function useRedirect(url, status) {
35 useNetworkEffect(function (network) { return network.redirectTo(url, status); });
36}
37exports.useRedirect = useRedirect;
38function 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}
44exports.useAcceptLanguage = useAcceptLanguage;