forked from Lesin/reposync
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
// @ts-nocheck
|
|
import React from 'react';
|
|
import initialState from '/root/ob-repository-synchronize/web/src/.umi/plugin-initial-state/models/initialState';
|
|
import model0 from "/root/ob-repository-synchronize/web/src/models/global";
|
|
// @ts-ignore
|
|
import Dispatcher from './helpers/dispatcher';
|
|
// @ts-ignore
|
|
import Executor from './helpers/executor';
|
|
// @ts-ignore
|
|
import { UmiContext } from './helpers/constant';
|
|
|
|
export const models = { '@@initialState': initialState, 'global': model0 };
|
|
|
|
export type Model<T extends keyof typeof models> = {
|
|
[key in keyof typeof models]: ReturnType<typeof models[T]>;
|
|
};
|
|
|
|
export type Models<T extends keyof typeof models> = Model<T>[T]
|
|
|
|
const dispatcher = new Dispatcher!();
|
|
const Exe = Executor!;
|
|
|
|
export default ({ children }: { children: React.ReactNode }) => {
|
|
|
|
return (
|
|
<UmiContext.Provider value={dispatcher}>
|
|
{
|
|
Object.entries(models).map(pair => (
|
|
<Exe key={pair[0]} namespace={pair[0]} hook={pair[1] as any} onUpdate={(val: any) => {
|
|
const [ns] = pair as [keyof typeof models, any];
|
|
dispatcher.data[ns] = val;
|
|
dispatcher.update(ns);
|
|
}} />
|
|
))
|
|
}
|
|
{children}
|
|
</UmiContext.Provider>
|
|
)
|
|
}
|