适配了dataSubscribe的改动

This commit is contained in:
Xu Chang 2023-12-08 11:58:56 +08:00
parent b7e3642c5d
commit b1f0eba288
23 changed files with 187 additions and 63 deletions

View File

@ -1,2 +1,2 @@
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
export default checkers;

View File

@ -1,7 +1,7 @@
import { Style } from '../../../../types/Style';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, keyof import("../../../../oak-app-domain").EntityDict, false, {
style: Style;
entity: "application" | "system" | "platform";
entity: "application" | "platform" | "system";
entityId: string;
name: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -1,7 +1,7 @@
import { Config } from '../../../types/Config';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, {
config: Config;
entity: "system" | "platform";
entity: "platform" | "system";
name: string;
entityId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -12,9 +12,9 @@ declare const _default: <ED2 extends EntityDict & BaseEntityDict, T2 extends key
type?: ButtonProps['type'] | AmButtonProps['type'];
executeText?: string | undefined;
buttonProps?: (ButtonProps & {
color?: "default" | "success" | "warning" | "primary" | "danger" | undefined;
color?: "success" | "default" | "warning" | "primary" | "danger" | undefined;
fill?: "none" | "solid" | "outline" | undefined;
size?: "small" | "large" | "middle" | "mini" | undefined;
size?: "small" | "middle" | "large" | "mini" | undefined;
block?: boolean | undefined;
loading?: boolean | "auto" | undefined;
loadingText?: string | undefined;
@ -24,7 +24,7 @@ declare const _default: <ED2 extends EntityDict & BaseEntityDict, T2 extends key
type?: "button" | "reset" | "submit" | undefined;
shape?: "default" | "rounded" | "rectangular" | undefined;
children?: import("react").ReactNode;
} & Pick<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement>, "id" | "onMouseUp" | "onMouseDown" | "onTouchStart" | "onTouchEnd"> & {
} & Pick<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement>, "id" | "onMouseDown" | "onMouseUp" | "onTouchStart" | "onTouchEnd"> & {
className?: string | undefined;
style?: (import("react").CSSProperties & Partial<Record<"--text-color" | "--background-color" | "--border-radius" | "--border-width" | "--border-style" | "--border-color", string>>) | undefined;
tabIndex?: number | undefined;

View File

@ -3,6 +3,7 @@ import { RowWithActions } from 'oak-frontend-base';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "session", true, {
entity: string;
entityFilter: any;
entityFilterSubStr: string;
entityDisplay: (data: EntityDict['session']['Schema'][] | RowWithActions<EntityDict, 'session'>[]) => any[];
entityProjection: any;
sessionId: string;

View File

@ -1,4 +1,5 @@
import { DATA_SUBSCRIBER_KEYS } from '../../../config/constants';
import assert from 'assert';
export default OakComponent({
entity: 'session',
projection() {
@ -108,18 +109,26 @@ export default OakComponent({
}
},
async ready() {
const { entityFilter } = this.props;
const userId = this.features.token.getUserId();
await this.subData([
{
entity: 'session',
filter: entityFilter ? { ...entityFilter } : { userId },
id: `${DATA_SUBSCRIBER_KEYS.sessionList}`,
},
]);
const { entityFilter, entityFilterSubStr } = this.props;
if (entityFilter) {
assert(entityFilterSubStr);
this.subDataEvents([entityFilterSubStr]);
}
else {
const userId = this.features.token.getUserId();
this.subDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`]);
}
},
detached() {
this.unSubData([`${DATA_SUBSCRIBER_KEYS.sessionList}`]);
const { entityFilter, entityFilterSubStr } = this.props;
if (entityFilter) {
assert(entityFilterSubStr);
this.unsubDataEvents([entityFilterSubStr]);
}
else {
const userId = this.features.token.getUserId();
this.unsubDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`]);
}
},
},
data: {
@ -129,6 +138,7 @@ export default OakComponent({
properties: {
entity: '',
entityFilter: null,
entityFilterSubStr: '',
entityDisplay: (data) => [],
entityProjection: null,
sessionId: '',

View File

@ -48,23 +48,13 @@ export default OakComponent({
lifetimes: {
async ready() {
const { sessionId } = this.props;
this.subData([
{
entity: 'sessionMessage',
filter: {
sessionId: sessionId,
},
id: `${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`,
},
], async () => {
await this.pageScroll('comment');
});
this.subDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`]);
this.createItem();
this.getSessionInfo();
},
detached() {
const { sessionId } = this.props;
this.unSubData([
this.unsubDataEvents([
`${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`,
]);
},

View File

@ -1,6 +1,6 @@
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, keyof EntityDict, false, {
type: "login" | "bind";
type: "bind" | "login";
url: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export default _default;

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
export default _default;

1
es/triggers/session.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export {};

18
es/triggers/session.js Normal file
View File

@ -0,0 +1,18 @@
import { DATA_SUBSCRIBER_KEYS } from '../config/constants';
import { assert } from 'oak-domain/lib/utils/assert';
const triggers = [
{
name: '当创建session时通知订阅了sessionList变化的事件',
entity: 'session',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
assert(!(data instanceof Array));
const { userId } = data;
assert(userId);
context.saveOperationToEvent(id, `${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`);
return 1;
}
}
];

View File

@ -2,9 +2,24 @@ import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { assert } from 'oak-domain/lib/utils/assert';
import { WechatSDK, } from 'oak-external-sdk';
import { extraFileProjection } from '../types/Projection';
import { DATA_SUBSCRIBER_KEYS } from '../config/constants';
const triggers = [
{
name: '当sessionMessage创建时时使其相关session更新lmts',
name: '当sessionMessage创建时发送消息到相应事件上',
entity: 'sessionMessage',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
assert(!(data instanceof Array));
const { sessionId } = data;
assert(sessionId);
context.saveOperationToEvent(id, `${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`);
return 1;
},
},
{
name: '当sessionMessage创建时使其相关session更新lmts',
entity: 'sessionMessage',
action: 'create',
when: 'after',

View File

@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
console.log('走不到这里');
console.log('走不到这里[data/area]');
const area_dev_1 = tslib_1.__importDefault(require("./area.dev"));
exports.default = area_dev_1.default;

View File

@ -1,5 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
console.warn('不应该跑到这里');
console.warn('不应该跑到这里[features/weiXinJsSdk]');
tslib_1.__exportStar(require("./weiXinJsSdk.web"), exports);

1
lib/triggers/session.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export {};

20
lib/triggers/session.js Normal file
View File

@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../config/constants");
const assert_1 = require("oak-domain/lib/utils/assert");
const triggers = [
{
name: '当创建session时通知订阅了sessionList变化的事件',
entity: 'session',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
(0, assert_1.assert)(!(data instanceof Array));
const { userId } = data;
(0, assert_1.assert)(userId);
context.saveOperationToEvent(id, `${constants_1.DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`);
return 1;
}
}
];

View File

@ -4,9 +4,24 @@ const uuid_1 = require("oak-domain/lib/utils/uuid");
const assert_1 = require("oak-domain/lib/utils/assert");
const oak_external_sdk_1 = require("oak-external-sdk");
const Projection_1 = require("../types/Projection");
const constants_1 = require("../config/constants");
const triggers = [
{
name: '当sessionMessage创建时时使其相关session更新lmts',
name: '当sessionMessage创建时发送消息到相应事件上',
entity: 'sessionMessage',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
(0, assert_1.assert)(!(data instanceof Array));
const { sessionId } = data;
(0, assert_1.assert)(sessionId);
context.saveOperationToEvent(id, `${constants_1.DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`);
return 1;
},
},
{
name: '当sessionMessage创建时使其相关session更新lmts',
entity: 'sessionMessage',
action: 'create',
when: 'after',

View File

@ -1,6 +1,7 @@
import { DATA_SUBSCRIBER_KEYS } from '../../../config/constants';
import { EntityDict } from '../../../oak-app-domain';
import { RowWithActions } from 'oak-frontend-base';
import assert from 'assert';
export default OakComponent({
entity: 'session',
@ -121,18 +122,28 @@ export default OakComponent({
}
},
async ready() {
const { entityFilter } = this.props;
const userId = this.features.token.getUserId();
await this.subData([
{
entity: 'session',
filter: entityFilter ? { ...entityFilter } : { userId },
id: `${DATA_SUBSCRIBER_KEYS.sessionList}`,
},
]);
const { entityFilter, entityFilterSubStr } = this.props;
if (entityFilter) {
assert (entityFilterSubStr);
this.subDataEvents([entityFilterSubStr]);
}
else {
const userId = this.features.token.getUserId();
this.subDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`]);
}
},
detached() {
this.unSubData([`${DATA_SUBSCRIBER_KEYS.sessionList}`]);
const { entityFilter, entityFilterSubStr } = this.props;
if (entityFilter) {
assert (entityFilterSubStr);
this.unsubDataEvents([entityFilterSubStr]);
}
else {
const userId = this.features.token.getUserId();
this.unsubDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`]);
}
},
},
data: {
@ -142,6 +153,7 @@ export default OakComponent({
properties: {
entity: '' as string, // entity端指示相应的entity
entityFilter: null as any, // entity端指示相应的entity查询条件
entityFilterSubStr: '',
entityDisplay: (
data:
| EntityDict['session']['Schema'][]

View File

@ -52,27 +52,13 @@ export default OakComponent({
async ready() {
const { sessionId } = this.props;
this.subData(
[
{
entity: 'sessionMessage',
filter: {
sessionId: sessionId,
},
id: `${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`,
},
],
async () => {
await this.pageScroll('comment');
}
);
this.subDataEvents([`${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`]);
this.createItem();
this.getSessionInfo();
},
detached() {
const { sessionId } = this.props;
this.unSubData([
this.unsubDataEvents([
`${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`,
]);
},

View File

@ -1,3 +1,3 @@
console.log('走不到这里');
console.log('走不到这里[data/area]');
import area from './area.dev'
export default area;

View File

@ -1,3 +1,3 @@
console.warn('不应该跑到这里');
console.warn('不应该跑到这里[features/weiXinJsSdk]');
export * from './weiXinJsSdk.web';

36
src/triggers/session.ts Normal file
View File

@ -0,0 +1,36 @@
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { CreateTrigger, Trigger } from 'oak-domain/lib/types/Trigger';
import { RuntimeCxt } from '../types/RuntimeCxt';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
import { DATA_SUBSCRIBER_KEYS } from '../config/constants';
import { CreateOperationData as CreateSessionMessageData } from '../oak-app-domain/SessionMessage/Schema';
import { assert } from 'oak-domain/lib/utils/assert';
import { WechatMpConfig, WechatPublicConfig } from '../entities/Application';
import {
WechatSDK,
WechatMpInstance,
WechatPublicInstance,
} from 'oak-external-sdk';
import { extraFileProjection } from '../types/Projection'
const triggers: Trigger<
EntityDict,
'session',
BackendRuntimeContext<EntityDict>
>[] = [
{
name: '当创建session时通知订阅了sessionList变化的事件',
entity: 'session',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
assert(!(data instanceof Array));
const { userId } = data;
assert(userId);
context.saveOperationToEvent(id, `${DATA_SUBSCRIBER_KEYS.sessionList}-u-${userId}`);
return 1;
}
} as CreateTrigger<EntityDict, 'session', BackendRuntimeContext<EntityDict>>
]

View File

@ -12,6 +12,7 @@ import {
WechatPublicInstance,
} from 'oak-external-sdk';
import { extraFileProjection } from '../types/Projection'
import { DATA_SUBSCRIBER_KEYS } from '../config/constants';
const triggers: Trigger<
EntityDict,
@ -19,7 +20,25 @@ const triggers: Trigger<
BackendRuntimeContext<EntityDict>
>[] = [
{
name: '当sessionMessage创建时时使其相关session更新lmts',
name: '当sessionMessage创建时发送消息到相应事件上',
entity: 'sessionMessage',
action: 'create',
when: 'before',
fn: async ({ operation }, context) => {
const { data, id } = operation;
assert(!(data instanceof Array));
const { sessionId } = data;
assert(sessionId);
context.saveOperationToEvent(id, `${DATA_SUBSCRIBER_KEYS.sessionMessageList}-${sessionId}`);
return 1;
},
} as CreateTrigger<
EntityDict,
'sessionMessage',
BackendRuntimeContext<EntityDict>
>,
{
name: '当sessionMessage创建时使其相关session更新lmts',
entity: 'sessionMessage',
action: 'create',
when: 'after',