import React from 'react'; import { DataOption } from 'oak-frontend-base'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/types/Entity'; import { EntityDict } from './oak-app-domain'; import { BasicFeatures } from 'oak-frontend-base'; import { CommonAspectDict } from 'oak-common-aspect'; import { BackendRuntimeContext } from './context/BackendRuntimeContext'; import { FrontendRuntimeContext } from './context/FrontendRuntimeContext'; import { GAD, GFD, OakComponentOption } from './types/Page'; import { createComponent as createBaseComponent } from 'oak-frontend-base/es/page.native'; export function createComponent< IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends BackendRuntimeContext, FrontCxt extends FrontendRuntimeContext, AD extends GAD, FD extends GFD, FormedData extends Record, TData extends Record = {}, TProperty extends DataOption = {}, TMethod extends Record = {} >( option: OakComponentOption< IsList, ED, T, Cxt, FrontCxt, AD, FD, FormedData, TData, TProperty, TMethod >, features: BasicFeatures> & FD, ) { const { methods, features: optionFeatures, userInsensitive, ...rest } = option; const tokenFeatures = optionFeatures?.find( ele => ele === 'token' || (typeof ele === 'object' && ele.feature === 'token') ); return createBaseComponent Promise; }>({ methods: { async subscribeMpMessage(messageTypes: string[], haveToAccept?: boolean, tip?: string) { throw new Error('小程序环境专有函数在native下不成立'); }, ...(methods as TMethod), }, features: (userInsensitive || !!tokenFeatures) ? optionFeatures : (optionFeatures || []).concat([{ feature: 'token', behavior: 'refresh' }]), ...rest, }, features) as React.ForwardRefExoticComponent>; }