diff --git a/es/checkers/index.d.ts b/es/checkers/index.d.ts index 1c141fe16..46b6c8266 100644 --- a/es/checkers/index.d.ts +++ b/es/checkers/index.d.ts @@ -1,2 +1,2 @@ -declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; +declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; export default checkers; diff --git a/es/components/config/style/platform/index.d.ts b/es/components/config/style/platform/index.d.ts index 0017a6f93..bd3579c54 100644 --- a/es/components/config/style/platform/index.d.ts +++ b/es/components/config/style/platform/index.d.ts @@ -1,7 +1,7 @@ import { Style } from '../../../../types/Style'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; diff --git a/es/components/config/upsert/index.d.ts b/es/components/config/upsert/index.d.ts index 26655e31f..6a8e95a3d 100644 --- a/es/components/config/upsert/index.d.ts +++ b/es/components/config/upsert/index.d.ts @@ -1,7 +1,7 @@ import { Config } from '../../../types/Config'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; diff --git a/es/components/extraFile/commit/index.d.ts b/es/components/extraFile/commit/index.d.ts index 6ae0fa0ba..ee0bc3ed9 100644 --- a/es/components/extraFile/commit/index.d.ts +++ b/es/components/extraFile/commit/index.d.ts @@ -12,19 +12,19 @@ declare const _default: ) => unknown) | undefined; - type?: "button" | "reset" | "submit" | undefined; + type?: "button" | "submit" | "reset" | undefined; shape?: "default" | "rounded" | "rectangular" | undefined; children?: import("react").ReactNode; - } & Pick & import("react").ButtonHTMLAttributes, "id" | "onMouseDown" | "onMouseUp" | "onTouchStart" | "onTouchEnd"> & { + } & Pick & import("react").ButtonHTMLAttributes, "id" | "onMouseUp" | "onMouseDown" | "onTouchStart" | "onTouchEnd"> & { className?: string | undefined; style?: (import("react").CSSProperties & Partial>) | undefined; tabIndex?: number | undefined; diff --git a/es/components/user/login/index.d.ts b/es/components/user/login/index.d.ts index 10575aa7e..32539219a 100644 --- a/es/components/user/login/index.d.ts +++ b/es/components/user/login/index.d.ts @@ -3,6 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps< onlyPassword: boolean; disabled: string; redirectUri: string; - url: string; }>) => import("react").ReactElement>; export default _default; diff --git a/es/components/user/login/index.js b/es/components/user/login/index.js index 66ac358bb..20d814a87 100644 --- a/es/components/user/login/index.js +++ b/es/components/user/login/index.js @@ -28,8 +28,7 @@ export default OakComponent({ onlyCaptcha: false, onlyPassword: false, disabled: '', - redirectUri: '', - url: '', // 登录成功后redirectTo的页面,不配置的话就认为是goBack + redirectUri: '', // 微信登录后的redirectUri,要指向wechatUser/login去处理 }, formData({ features, props }) { const { lastSendAt } = this.state; @@ -50,13 +49,6 @@ export default OakComponent({ }; }, lifetimes: { - attached() { - // 如果已登录, 返回上一页 - const token = this.features.token.getTokenValue(); - if (token) { - this.navigateBack(); - } - }, async ready() { const application = this.features.application.getApplication(); let loginMode = await this.load(LOGIN_MODE) || 2; @@ -130,7 +122,6 @@ export default OakComponent({ } }, async loginByMobile(mobile, password, captcha) { - const { url } = this.props; try { this.setState({ loading: true, @@ -139,13 +130,6 @@ export default OakComponent({ this.setState({ loading: false, }); - if (url) { - this.redirectTo({ - url, - }); - return; - } - this.navigateBack(); } catch (err) { this.setState({ diff --git a/es/components/user/login/web.js b/es/components/user/login/web.js index a8d5a12bc..00e5cfe97 100644 --- a/es/components/user/login/web.js +++ b/es/components/user/login/web.js @@ -118,43 +118,41 @@ export default function Render(props) { if (url) { state = encodeURIComponent(decodeURIComponent(url)); } - return (
-
- {options?.length > 1 && (
- ({ + {options?.length > 1 && (
+ ({ value: ele.value, label: t(`${ele.label}`), }))}> -
)} +
)} -
- {isSupportGrant ? (
- -
) : (<> -
+ +
) : (<> +
- {LoginPassword} -
-
+
- {LoginCaptcha} -
-
+
- {/* 因为在选择授权方式时,微信网站和微信公众号授权登录二者只存其一, - 所以这里可以按这个判断分开显示 */} - {isSupportWechat && ()} - {isSupportWechatPublic && ()} -
- )} -
+ {/* 因为在选择授权方式时,微信网站和微信公众号授权登录二者只存其一, + 所以这里可以按这个判断分开显示 */} + {isSupportWechat && ()} + {isSupportWechatPublic && ()} +
+ )}
); } diff --git a/es/components/userRelation/upsert/onUser/web.js b/es/components/userRelation/upsert/onUser/web.js index 3a38dcdfe..ab4f4cbdc 100644 --- a/es/components/userRelation/upsert/onUser/web.js +++ b/es/components/userRelation/upsert/onUser/web.js @@ -23,23 +23,19 @@ export default function Render(props) { }, ]}> <> - { - if (isNew) { - update({ - name: value, - }); - } + { + update({ + name: value, + }); }} value={name} placeholder={t('placeholder.name')}/> <> - { - if (isNew) { - update({ - nickname: value, - }); - } + { + update({ + nickname: value, + }); }} placeholder={t('placeholder.nickname')}/> diff --git a/es/config/messaegType.d.ts b/es/config/messaegType.d.ts deleted file mode 100644 index 90078079c..000000000 --- a/es/config/messaegType.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare let messageTypes: string[]; -export default messageTypes; -export declare function registMessageType(messageType: string[]): void; diff --git a/es/config/messaegType.js b/es/config/messaegType.js deleted file mode 100644 index 10b43f661..000000000 --- a/es/config/messaegType.js +++ /dev/null @@ -1,7 +0,0 @@ -import { uniq } from 'oak-domain/lib/utils/lodash'; -let messageTypes = []; -export default messageTypes; -export function registMessageType(messageType) { - let messageTypes2 = messageTypes.concat(messageType); - messageTypes = uniq(messageTypes2); -} diff --git a/es/data/userRole.js b/es/data/userRole.js index 01229571e..720abf28c 100644 --- a/es/data/userRole.js +++ b/es/data/userRole.js @@ -1,7 +1,7 @@ import { ROOT_MOBILE_ID, ROOT_TOKEN_ID, ROOT_USER_ID } from '../constants'; export const users = [ { - password: 'oak@2022', + password: '', nickname: 'root', name: 'root', isRoot: true, diff --git a/es/page.mp.js b/es/page.mp.js index 86fcf8904..4a4b3a2a0 100644 --- a/es/page.mp.js +++ b/es/page.mp.js @@ -60,9 +60,10 @@ export async function subscribeMpMessage(messageTypes, haveToAccept, tip) { return true; } export function createComponent(option, features) { - const { wechatMp, data, methods, lifetimes, userInsensitive, ...rest } = option; + const { wechatMp, data, methods, lifetimes, userInsensitive, features: optionFeatures, ...rest } = option; const { relatedMessageTypes } = wechatMp || {}; const { ready, attached, show, hide, ...restLifeTimes } = lifetimes || {}; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return createBaseComponent({ data: typeof data === 'function' ? function () { @@ -142,9 +143,6 @@ export function createComponent(option, features) { }, lifetimes: { attached() { - if (!userInsensitive) { - this.addFeatureSub('token', () => this.refresh()); - } this.addFeatureSub('application', () => this.getMessageTypeTemplate()); attached && attached.call(this); }, @@ -172,6 +170,10 @@ export function createComponent(option, features) { }, ...restLifeTimes, }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), wechatMp, ...rest, }, features); diff --git a/es/page.native.js b/es/page.native.js index 1ad861c3a..faf755942 100644 --- a/es/page.native.js +++ b/es/page.native.js @@ -1,7 +1,7 @@ import { createComponent as createBaseComponent } from 'oak-frontend-base/es/page.native'; export function createComponent(option, features) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return createBaseComponent({ methods: { async subscribeMpMessage(messageTypes, haveToAccept, tip) { @@ -9,13 +9,10 @@ export function createComponent(option, features) { }, ...methods, }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features); } diff --git a/es/page.web.js b/es/page.web.js index a2969929a..216367938 100644 --- a/es/page.web.js +++ b/es/page.web.js @@ -1,7 +1,7 @@ import { createComponent as createBaseComponent } from 'oak-frontend-base/es/page.web'; export function createComponent(option, features) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return createBaseComponent({ methods: { async subscribeMpMessage(messageTypes, haveToAccept, tip) { @@ -9,13 +9,10 @@ export function createComponent(option, features) { }, ...methods, }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features); } diff --git a/es/triggers/index.d.ts b/es/triggers/index.d.ts index 0770eae70..6fb3c0b29 100644 --- a/es/triggers/index.d.ts +++ b/es/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/lib/checkers/index.d.ts b/lib/checkers/index.d.ts index 1c141fe16..46b6c8266 100644 --- a/lib/checkers/index.d.ts +++ b/lib/checkers/index.d.ts @@ -1,2 +1,2 @@ -declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; +declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; export default checkers; diff --git a/lib/config/messaegType.d.ts b/lib/config/messaegType.d.ts deleted file mode 100644 index 90078079c..000000000 --- a/lib/config/messaegType.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare let messageTypes: string[]; -export default messageTypes; -export declare function registMessageType(messageType: string[]): void; diff --git a/lib/config/messaegType.js b/lib/config/messaegType.js deleted file mode 100644 index 58aa6e213..000000000 --- a/lib/config/messaegType.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.registMessageType = void 0; -const lodash_1 = require("oak-domain/lib/utils/lodash"); -let messageTypes = []; -exports.default = messageTypes; -function registMessageType(messageType) { - let messageTypes2 = messageTypes.concat(messageType); - messageTypes = (0, lodash_1.uniq)(messageTypes2); -} -exports.registMessageType = registMessageType; diff --git a/lib/data/userRole.js b/lib/data/userRole.js index 7a1589768..b5ec9c7f8 100644 --- a/lib/data/userRole.js +++ b/lib/data/userRole.js @@ -4,7 +4,7 @@ exports.tokens = exports.mobiles = exports.users = void 0; const constants_1 = require("../constants"); exports.users = [ { - password: 'oak@2022', + password: '', nickname: 'root', name: 'root', isRoot: true, diff --git a/lib/page.mp.js b/lib/page.mp.js index bff6c2736..0dfd82994 100644 --- a/lib/page.mp.js +++ b/lib/page.mp.js @@ -64,9 +64,10 @@ async function subscribeMpMessage(messageTypes, haveToAccept, tip) { } exports.subscribeMpMessage = subscribeMpMessage; function createComponent(option, features) { - const { wechatMp, data, methods, lifetimes, userInsensitive, ...rest } = option; + const { wechatMp, data, methods, lifetimes, userInsensitive, features: optionFeatures, ...rest } = option; const { relatedMessageTypes } = wechatMp || {}; const { ready, attached, show, hide, ...restLifeTimes } = lifetimes || {}; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return (0, page_mp_1.createComponent)({ data: typeof data === 'function' ? function () { @@ -146,9 +147,6 @@ function createComponent(option, features) { }, lifetimes: { attached() { - if (!userInsensitive) { - this.addFeatureSub('token', () => this.refresh()); - } this.addFeatureSub('application', () => this.getMessageTypeTemplate()); attached && attached.call(this); }, @@ -176,6 +174,10 @@ function createComponent(option, features) { }, ...restLifeTimes, }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), wechatMp, ...rest, }, features); diff --git a/lib/page.native.js b/lib/page.native.js index e67545785..97d57b221 100644 --- a/lib/page.native.js +++ b/lib/page.native.js @@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.createComponent = void 0; const page_native_1 = require("oak-frontend-base/es/page.native"); function createComponent(option, features) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return (0, page_native_1.createComponent)({ methods: { async subscribeMpMessage(messageTypes, haveToAccept, tip) { @@ -12,13 +12,10 @@ function createComponent(option, features) { }, ...methods, }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features); } diff --git a/lib/page.web.js b/lib/page.web.js index c77e913c7..4bfa44027 100644 --- a/lib/page.web.js +++ b/lib/page.web.js @@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.createComponent = void 0; const page_web_1 = require("oak-frontend-base/es/page.web"); function createComponent(option, features) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find(ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token')); return (0, page_web_1.createComponent)({ methods: { async subscribeMpMessage(messageTypes, haveToAccept, tip) { @@ -12,13 +12,10 @@ function createComponent(option, features) { }, ...methods, }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features); } diff --git a/lib/triggers/index.d.ts b/lib/triggers/index.d.ts index 0770eae70..6fb3c0b29 100644 --- a/lib/triggers/index.d.ts +++ b/lib/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/src/components/user/login/index.ts b/src/components/user/login/index.ts index 8e66db898..6dfb543ed 100644 --- a/src/components/user/login/index.ts +++ b/src/components/user/login/index.ts @@ -32,7 +32,6 @@ export default OakComponent({ onlyPassword: false, disabled: '', redirectUri: '', // 微信登录后的redirectUri,要指向wechatUser/login去处理 - url: '', // 登录成功后redirectTo的页面,不配置的话就认为是goBack }, formData({ features, props }) { const { lastSendAt } = this.state; @@ -59,13 +58,6 @@ export default OakComponent({ }; }, lifetimes: { - attached() { - // 如果已登录, 返回上一页 - const token = this.features.token.getTokenValue(); - if (token) { - this.navigateBack(); - } - }, async ready() { const application = this.features.application.getApplication(); @@ -142,8 +134,6 @@ export default OakComponent({ password?: string, captcha?: string ) { - const { url } = this.props; - try { this.setState({ loading: true, @@ -156,13 +146,6 @@ export default OakComponent({ this.setState({ loading: false, }); - if (url) { - this.redirectTo({ - url, - }); - return; - } - this.navigateBack(); } catch (err) { this.setState({ loading: false, diff --git a/src/components/user/login/web.tsx b/src/components/user/login/web.tsx index c98ba7bc0..5e5e2b0a7 100644 --- a/src/components/user/login/web.tsx +++ b/src/components/user/login/web.tsx @@ -250,92 +250,90 @@ export default function Render( } return ( -
+
+ {options?.length > 1 && ( +
+ ({ + value: ele.value, + label: t(`${ele.label}`), + }))} + > +
+ )} +
- {options?.length > 1 && ( -
- ({ - value: ele.value, - label: t(`${ele.label}`), - }))} - > + {isSupportGrant ? ( +
+
- )} - -
- {isSupportGrant ? ( -
- + ) : ( + <> +
+ {LoginPassword}
- ) : ( - <> -
- {LoginPassword} -
-
- {LoginCaptcha} -
-
- {/* 因为在选择授权方式时,微信网站和微信公众号授权登录二者只存其一, +
+ {LoginCaptcha} +
+
+ {/* 因为在选择授权方式时,微信网站和微信公众号授权登录二者只存其一, 所以这里可以按这个判断分开显示 */} - {isSupportWechat && ( - - )} - {isSupportWechatPublic && ( - - )} -
- - )} -
+ {isSupportWechat && ( + + )} + {isSupportWechatPublic && ( + + )} +
+ + )}
); diff --git a/src/data/userRole.ts b/src/data/userRole.ts index a17930fbc..716f4814c 100644 --- a/src/data/userRole.ts +++ b/src/data/userRole.ts @@ -5,7 +5,7 @@ import { ROOT_MOBILE_ID, ROOT_ROLE_ID, ROOT_TOKEN_ID, ROOT_USER_ID } from '../co export const users: Array = [ { - password: 'oak@2022', + password: '', nickname: 'root', name: 'root', isRoot: true, diff --git a/src/page.mp.ts b/src/page.mp.ts index d0c40a4e0..b087e6712 100644 --- a/src/page.mp.ts +++ b/src/page.mp.ts @@ -124,10 +124,13 @@ export function createComponent< >, features: BasicFeatures> & FD, ) { - const { wechatMp, data, methods, lifetimes, userInsensitive, ...rest } = option; + const { wechatMp, data, methods, lifetimes, userInsensitive, features: optionFeatures, ...rest } = option; const { relatedMessageTypes } = wechatMp || {}; const { ready, attached, show, hide, ...restLifeTimes } = lifetimes || {}; + const tokenFeatures = optionFeatures?.find( + ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token') + ); return createBaseComponent< IsList, ED, @@ -249,9 +252,6 @@ export function createComponent< }, lifetimes: { attached() { - if (!userInsensitive) { - this.addFeatureSub('token', () => this.refresh()); - } this.addFeatureSub('application', () => this.getMessageTypeTemplate() ); @@ -281,6 +281,10 @@ export function createComponent< }, ...restLifeTimes, }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), wechatMp, ...rest, }, diff --git a/src/page.native.ts b/src/page.native.ts index 4bd8bfa9a..fde079a2f 100644 --- a/src/page.native.ts +++ b/src/page.native.ts @@ -38,9 +38,11 @@ export function createComponent< >, features: BasicFeatures> & FD, ) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find( + ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token') + ); return createBaseComponent Promise; }>({ @@ -50,13 +52,10 @@ export function createComponent< }, ...(methods as TMethod), }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features) as React.ForwardRefExoticComponent>; } \ No newline at end of file diff --git a/src/page.web.ts b/src/page.web.ts index c40fb3a37..cc0e7b7be 100644 --- a/src/page.web.ts +++ b/src/page.web.ts @@ -38,9 +38,11 @@ export function createComponent< >, features: BasicFeatures> & FD, ) { - const { lifetimes, methods, ...rest } = option; - const { attached, ...restLifeTimes } = lifetimes || {}; + const { methods, features: optionFeatures, userInsensitive, ...rest } = option; + const tokenFeatures = optionFeatures?.find( + ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token') + ); return createBaseComponent Promise; }>({ @@ -50,13 +52,10 @@ export function createComponent< }, ...(methods as TMethod), }, - lifetimes: { - attached() { - this.addFeatureSub('token', () => this.refresh()); - attached && attached.call(this); - }, - ...restLifeTimes, - }, + features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ + feature: 'token', + behavior: 'refresh' + }]), ...rest, }, features) as React.ForwardRefExoticComponent>; } \ No newline at end of file