"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.getHashQuery = exports["default"] = void 0;

var _react = require("react");

var _window$BSGlobal$tena;

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

var tenantId = window.BSGlobal && ((_window$BSGlobal$tena = window.BSGlobal.tenantInfo) === null || _window$BSGlobal$tena === void 0 ? void 0 : _window$BSGlobal$tena.Id) || 0;

var getHashQuery = function getHashQuery(queryKey) {
  var queryValue;
  var urlHash = decodeURIComponent(window.location.hash);
  var hashQueryStr = urlHash.split("?")[1];
  hashQueryStr && hashQueryStr.split("&").forEach(function (it) {
    var _it$split = it.split("="),
        _it$split2 = _slicedToArray(_it$split, 2),
        key = _it$split2[0],
        value = _it$split2[1];

    if (key == queryKey) queryValue = value;
  });
  return queryValue;
};

exports.getHashQuery = getHashQuery;

var getDataFromLocalStorage = function getDataFromLocalStorage(key) {
  return window.localStorage.getItem("Tanent".concat(tenantId, "_").concat(key));
};

var setDataFromToLocalStorage = function setDataFromToLocalStorage(key, value) {
  window.localStorage.setItem("Tanent".concat(tenantId, "_").concat(key), value);
};

var _default = function _default(key, defaultValue) {
  var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

  // 分别在URL和Storage中取需要的值
  var _useState = (0, _react.useState)(function () {
    if (opts.useDefault) return defaultValue;
    var val = getHashQuery(key);

    if (opts.noLocal === true) {// ...
    } else {
      // 使用 LocalStorage 存储
      if (!val) val = getDataFromLocalStorage(key);

      if (val) {
        try {
          val = JSON.parse(val);
        } catch (e) {
          /* 如果报错标识该对象并非Object，不予以处理 */
        }
      }
    }

    return val === undefined || val === null ? defaultValue : val;
  }),
      _useState2 = _slicedToArray(_useState, 2),
      dValue = _useState2[0],
      setDValue = _useState2[1];

  var setData = function setData(value) {
    // 转换数据类型
    var tranValue = value;

    if (typeof value !== "string") {
      tranValue = JSON.stringify(value);
    }

    if (opts.noLocal === true) {// 不存储到 Storage 中
    } else {
      setDataFromToLocalStorage(key, tranValue);
    }

    setDValue(value);
  };

  return [dValue, setData];
};

exports["default"] = _default;