taro-hooks
Version:
为 Taro 而设计的 Hooks Library
75 lines (74 loc) • 2.81 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
Object.defineProperty(exports, "__esModule", {
value: true
});
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var useVisible_1 = tslib_1.__importDefault(require("../useVisible"));
var usePromise_1 = tslib_1.__importDefault(require("../usePromise"));
function useAuthorize(withSubscriptions, withAppAuthSetting) {
var visible = (0, useVisible_1["default"])();
var _ref = (0, core_1.useState)({
mini: {}
}),
authSetting = _ref[0],
setAuthSetting = _ref[1];
var _ref2 = (0, core_1.useState)({}),
subscriptionsSetting = _ref2[0],
setSubscriptionsSetting = _ref2[1];
var authorizeAsync = (0, usePromise_1["default"])(taro_1.authorize);
var authorizeForMiniProgramAsync = (0, usePromise_1["default"])(taro_1.authorizeForMiniProgram);
var authorize = function authorize(scope, mini) {
var payload = {
scope: scope
};
return mini ? authorizeForMiniProgramAsync(payload) : authorizeAsync(payload);
};
var getAsync = (0, usePromise_1["default"])(taro_1.getSetting);
var get = function get(withSubscriptions) {
return getAsync({
withSubscriptions: withSubscriptions
}).then(function (res) {
var authSetting = res.authSetting,
subscriptionsSetting = res.subscriptionsSetting,
miniprogramAuthSetting = res.miniprogramAuthSetting;
var latestAuthSetting = _extends({}, authSetting, {
mini: miniprogramAuthSetting
});
if (withAppAuthSetting) {
var app = (0, taro_1.getAppAuthorizeSetting)();
latestAuthSetting.app = app;
}
setAuthSetting(latestAuthSetting);
setSubscriptionsSetting(subscriptionsSetting);
return res;
});
};
var openAsync = (0, usePromise_1["default"])(taro_1.openSetting);
var open = function open(withSubscriptions) {
return openAsync({
withSubscriptions: withSubscriptions
}).then(function (res) {
var openSettingAuthSetting = res.authSetting,
subscriptionsSetting = res.subscriptionsSetting;
setAuthSetting(_extends({}, openSettingAuthSetting, {
mini: authSetting.mini
}));
setSubscriptionsSetting(subscriptionsSetting);
return res;
});
};
(0, core_1.useEffect)(function () {
get(withSubscriptions);
}, [visible]);
return {
authSetting: authSetting,
subscriptionsSetting: subscriptionsSetting,
authorize: authorize,
get: get,
open: open
};
}
exports["default"] = useAuthorize;
;