fix(core_state): make core state pure
This commit is contained in:
parent
abbeed24d7
commit
65b250d83c
6 changed files with 25 additions and 23 deletions
|
@ -2,7 +2,8 @@ import { mock, instance, verify, when, anything } from "ts-mockito";
|
||||||
import { List } from "immutable";
|
import { List } from "immutable";
|
||||||
|
|
||||||
import { Browser } from "../browser";
|
import { Browser } from "../browser";
|
||||||
import { ICoreState, newWithWorker } from "../core_state";
|
import { initUploadMgr } from "../../worker/upload_mgr";
|
||||||
|
import { ICoreState, newState } from "../core_state";
|
||||||
import { updater } from "../state_updater";
|
import { updater } from "../state_updater";
|
||||||
import { MockWorker } from "../../worker/interface";
|
import { MockWorker } from "../../worker/interface";
|
||||||
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
||||||
|
@ -13,8 +14,9 @@ describe("Browser", () => {
|
||||||
const initBrowser = (): any => {
|
const initBrowser = (): any => {
|
||||||
const mockWorkerClass = mock(MockWorker);
|
const mockWorkerClass = mock(MockWorker);
|
||||||
const mockWorker = instance(mockWorkerClass);
|
const mockWorker = instance(mockWorkerClass);
|
||||||
|
initUploadMgr(mockWorker);
|
||||||
|
|
||||||
const coreState = newWithWorker(mockWorker);
|
const coreState = newState();
|
||||||
const usersCl = new MockUsersClient("");
|
const usersCl = new MockUsersClient("");
|
||||||
const filesCl = new MockFilesClient("");
|
const filesCl = new MockFilesClient("");
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,8 @@ import { mock, instance } from "ts-mockito";
|
||||||
|
|
||||||
import { User, UploadInfo } from "../../client";
|
import { User, UploadInfo } from "../../client";
|
||||||
import { AuthPane } from "../pane_login";
|
import { AuthPane } from "../pane_login";
|
||||||
import { ICoreState, newWithWorker } from "../core_state";
|
import { ICoreState, newState } from "../core_state";
|
||||||
|
import { initUploadMgr } from "../../worker/upload_mgr";
|
||||||
import { updater } from "../state_updater";
|
import { updater } from "../state_updater";
|
||||||
import { MockWorker, UploadState, UploadEntry } from "../../worker/interface";
|
import { MockWorker, UploadState, UploadEntry } from "../../worker/interface";
|
||||||
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
||||||
|
@ -13,8 +14,9 @@ describe("Login", () => {
|
||||||
test("login", async () => {
|
test("login", async () => {
|
||||||
const mockWorkerClass = mock(MockWorker);
|
const mockWorkerClass = mock(MockWorker);
|
||||||
const mockWorker = instance(mockWorkerClass);
|
const mockWorker = instance(mockWorkerClass);
|
||||||
|
initUploadMgr(mockWorker);
|
||||||
|
|
||||||
const coreState = newWithWorker(mockWorker);
|
const coreState = newState();
|
||||||
const pane = new AuthPane({
|
const pane = new AuthPane({
|
||||||
login: coreState.login,
|
login: coreState.login,
|
||||||
msg: coreState.msg,
|
msg: coreState.msg,
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import { mock, instance } from "ts-mockito";
|
import { mock, instance } from "ts-mockito";
|
||||||
|
|
||||||
import { Panes } from "../panes";
|
import { Panes } from "../panes";
|
||||||
import { ICoreState, newWithWorker } from "../core_state";
|
import { ICoreState, newState } from "../core_state";
|
||||||
|
import { initUploadMgr } from "../../worker/upload_mgr";
|
||||||
import { updater } from "../state_updater";
|
import { updater } from "../state_updater";
|
||||||
import { MockWorker } from "../../worker/interface";
|
import { MockWorker } from "../../worker/interface";
|
||||||
|
|
||||||
|
@ -9,8 +10,9 @@ describe("Panes", () => {
|
||||||
test("closePane", async () => {
|
test("closePane", async () => {
|
||||||
const mockWorkerClass = mock(MockWorker);
|
const mockWorkerClass = mock(MockWorker);
|
||||||
const mockWorker = instance(mockWorkerClass);
|
const mockWorker = instance(mockWorkerClass);
|
||||||
|
initUploadMgr(mockWorker);
|
||||||
|
|
||||||
const coreState = newWithWorker(mockWorker);
|
const coreState = newState();
|
||||||
const panes = new Panes({
|
const panes = new Panes({
|
||||||
panes: coreState.panes,
|
panes: coreState.panes,
|
||||||
admin: coreState.admin,
|
admin: coreState.admin,
|
||||||
|
|
|
@ -2,10 +2,11 @@ import { List, Set, Map } from "immutable";
|
||||||
import { mock, instance } from "ts-mockito";
|
import { mock, instance } from "ts-mockito";
|
||||||
|
|
||||||
import { StateMgr } from "../state_mgr";
|
import { StateMgr } from "../state_mgr";
|
||||||
|
import { initUploadMgr } from "../../worker/upload_mgr";
|
||||||
import { User, UploadInfo } from "../../client";
|
import { User, UploadInfo } from "../../client";
|
||||||
import { MockFilesClient, resps as filesResps } from "../../client/files_mock";
|
import { MockFilesClient, resps as filesResps } from "../../client/files_mock";
|
||||||
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
import { MockUsersClient, resps as usersResps } from "../../client/users_mock";
|
||||||
import { ICoreState, newWithWorker } from "../core_state";
|
import { ICoreState, newState } from "../core_state";
|
||||||
import { MockWorker, UploadState, UploadEntry } from "../../worker/interface";
|
import { MockWorker, UploadState, UploadEntry } from "../../worker/interface";
|
||||||
|
|
||||||
describe("State Manager", () => {
|
describe("State Manager", () => {
|
||||||
|
@ -15,6 +16,7 @@ describe("State Manager", () => {
|
||||||
|
|
||||||
const mockWorkerClass = mock(MockWorker);
|
const mockWorkerClass = mock(MockWorker);
|
||||||
const mockWorker = instance(mockWorkerClass);
|
const mockWorker = instance(mockWorkerClass);
|
||||||
|
initUploadMgr(mockWorker);
|
||||||
|
|
||||||
const mgr = new StateMgr({}); // it will call initUpdater
|
const mgr = new StateMgr({}); // it will call initUpdater
|
||||||
mgr.setUsersClient(usersCl);
|
mgr.setUsersClient(usersCl);
|
||||||
|
@ -25,7 +27,7 @@ describe("State Manager", () => {
|
||||||
// no op
|
// no op
|
||||||
};
|
};
|
||||||
|
|
||||||
const coreState = newWithWorker(mockWorker);
|
const coreState = newState();
|
||||||
await mgr.initUpdater(coreState);
|
await mgr.initUpdater(coreState);
|
||||||
|
|
||||||
// browser
|
// browser
|
||||||
|
@ -121,7 +123,7 @@ describe("State Manager", () => {
|
||||||
|
|
||||||
const mockWorkerClass = mock(MockWorker);
|
const mockWorkerClass = mock(MockWorker);
|
||||||
const mockWorker = instance(mockWorkerClass);
|
const mockWorker = instance(mockWorkerClass);
|
||||||
const coreState = newWithWorker(mockWorker);
|
const coreState = newState();
|
||||||
|
|
||||||
const mgr = new StateMgr({}); // it will call initUpdater
|
const mgr = new StateMgr({}); // it will call initUpdater
|
||||||
mgr.setUsersClient(usersCl);
|
mgr.setUsersClient(usersCl);
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
import { List, Set, Map } from "immutable";
|
import { List, Set, Map } from "immutable";
|
||||||
|
|
||||||
import BgWorker from "../worker/upload.bg.worker";
|
|
||||||
import { FgWorker } from "../worker/upload.fg.worker";
|
|
||||||
import { UploadEntry } from "../worker/interface";
|
import { UploadEntry } from "../worker/interface";
|
||||||
|
|
||||||
import { BrowserProps } from "./browser";
|
import { BrowserProps } from "./browser";
|
||||||
import { PanesProps } from "./panes";
|
import { PanesProps } from "./panes";
|
||||||
import { LoginProps } from "./pane_login";
|
import { LoginProps } from "./pane_login";
|
||||||
import { AdminProps } from "./pane_admin";
|
import { AdminProps } from "./pane_admin";
|
||||||
|
|
||||||
import { MsgPackage } from "../i18n/msger";
|
import { MsgPackage } from "../i18n/msger";
|
||||||
import { User, MetadataResp } from "../client";
|
import { User, MetadataResp } from "../client";
|
||||||
import { initUploadMgr, IWorker } from "../worker/upload_mgr";
|
|
||||||
|
|
||||||
export interface MsgProps {
|
export interface MsgProps {
|
||||||
lan: string;
|
lan: string;
|
||||||
|
@ -36,15 +32,7 @@ export interface ICoreState {
|
||||||
msg: MsgProps;
|
msg: MsgProps;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function newWithWorker(worker: IWorker): ICoreState {
|
|
||||||
initUploadMgr(worker);
|
|
||||||
return initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function newState(): ICoreState {
|
export function newState(): ICoreState {
|
||||||
const worker = window.Worker == null ? new FgWorker() : new BgWorker();
|
|
||||||
initUploadMgr(worker);
|
|
||||||
|
|
||||||
return initState();
|
return initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
|
import { initUploadMgr } from "../worker/upload_mgr";
|
||||||
|
import BgWorker from "../worker/upload.bg.worker";
|
||||||
|
import { FgWorker } from "../worker/upload.fg.worker";
|
||||||
|
|
||||||
import { updater } from "./state_updater";
|
import { updater } from "./state_updater";
|
||||||
import { ICoreState, newState } from "./core_state";
|
import { ICoreState, newState } from "./core_state";
|
||||||
import { RootFrame } from "./root_frame";
|
import { RootFrame } from "./root_frame";
|
||||||
|
@ -7,8 +11,8 @@ import { FilesClient } from "../client/files";
|
||||||
import { UsersClient } from "../client/users";
|
import { UsersClient } from "../client/users";
|
||||||
import { IUsersClient, IFilesClient } from "../client";
|
import { IUsersClient, IFilesClient } from "../client";
|
||||||
|
|
||||||
export interface Props { }
|
export interface Props {}
|
||||||
export interface State extends ICoreState { }
|
export interface State extends ICoreState {}
|
||||||
|
|
||||||
export class StateMgr extends React.Component<Props, State, {}> {
|
export class StateMgr extends React.Component<Props, State, {}> {
|
||||||
private usersClient: IUsersClient = new UsersClient("");
|
private usersClient: IUsersClient = new UsersClient("");
|
||||||
|
@ -17,6 +21,8 @@ export class StateMgr extends React.Component<Props, State, {}> {
|
||||||
constructor(p: Props) {
|
constructor(p: Props) {
|
||||||
super(p);
|
super(p);
|
||||||
this.state = newState();
|
this.state = newState();
|
||||||
|
const worker = window.Worker == null ? new FgWorker() : new BgWorker();
|
||||||
|
initUploadMgr(worker);
|
||||||
this.initUpdater(this.state); // don't await
|
this.initUpdater(this.state); // don't await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue