UNPKG

taro-hooks

Version:
69 lines 2.61 kB
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); } import { getSetting, openSetting, getAppAuthorizeSetting, authorize as taroAuthorize, authorizeForMiniProgram } from '@tarojs/taro'; import { useEffect, useState } from '@taro-hooks/core'; import useVisible from '../useVisible'; import usePromise from '../usePromise'; function useAuthorize(withSubscriptions, withAppAuthSetting) { var visible = useVisible(); var _useState = useState({ mini: {} }), authSetting = _useState[0], setAuthSetting = _useState[1]; var _useState2 = useState({}), subscriptionsSetting = _useState2[0], setSubscriptionsSetting = _useState2[1]; var authorizeAsync = usePromise(taroAuthorize); var authorizeForMiniProgramAsync = usePromise(authorizeForMiniProgram); var authorize = function authorize(scope, mini) { var payload = { scope: scope }; return mini ? authorizeForMiniProgramAsync(payload) : authorizeAsync(payload); }; var getAsync = usePromise(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 = getAppAuthorizeSetting(); latestAuthSetting.app = app; } setAuthSetting(latestAuthSetting); setSubscriptionsSetting(subscriptionsSetting); return res; }); }; var openAsync = usePromise(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; }); }; useEffect(function () { get(withSubscriptions); }, [visible]); return { authSetting: authSetting, subscriptionsSetting: subscriptionsSetting, authorize: authorize, get: get, open: open }; } export default useAuthorize;