mirror of
https://github.com/wassname/talk.git
synced 2026-07-02 14:15:51 +08:00
using found withRouter
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
import React, { StatelessComponent } from "react";
|
||||
import { HorizontalGutter } from "talk-ui/components";
|
||||
|
||||
const Community: StatelessComponent = ({ children }) => (
|
||||
<HorizontalGutter>Community</HorizontalGutter>
|
||||
);
|
||||
|
||||
export default Community;
|
||||
@@ -0,0 +1,8 @@
|
||||
import React, { StatelessComponent } from "react";
|
||||
import { HorizontalGutter } from "talk-ui/components";
|
||||
|
||||
const Configure: StatelessComponent = ({ children }) => (
|
||||
<HorizontalGutter>Configure</HorizontalGutter>
|
||||
);
|
||||
|
||||
export default Configure;
|
||||
@@ -0,0 +1,8 @@
|
||||
import React, { StatelessComponent } from "react";
|
||||
import { HorizontalGutter } from "talk-ui/components";
|
||||
|
||||
const Moderate: StatelessComponent = ({ children }) => (
|
||||
<HorizontalGutter>Moderate</HorizontalGutter>
|
||||
);
|
||||
|
||||
export default Moderate;
|
||||
@@ -0,0 +1,8 @@
|
||||
import React, { StatelessComponent } from "react";
|
||||
import { HorizontalGutter } from "talk-ui/components";
|
||||
|
||||
const Stories: StatelessComponent = ({ children }) => (
|
||||
<HorizontalGutter>Stories</HorizontalGutter>
|
||||
);
|
||||
|
||||
export default Stories;
|
||||
@@ -1,16 +1,16 @@
|
||||
import { Router, withRouter } from "found";
|
||||
import React, { Component } from "react";
|
||||
import Navigation from "../components/Navigation";
|
||||
import { SetViewMutation, withSetViewMutation } from "../mutations";
|
||||
|
||||
interface NavigationContainerProps {
|
||||
setView: SetViewMutation;
|
||||
router: Router;
|
||||
}
|
||||
|
||||
class NavigationContainer extends Component<NavigationContainerProps> {
|
||||
private goToModerate = () => this.props.setView({ view: "MODERATE" });
|
||||
private goToCommunity = () => this.props.setView({ view: "COMMUNITY" });
|
||||
private goToStories = () => this.props.setView({ view: "STORIES" });
|
||||
private goToConfigure = () => this.props.setView({ view: "CONFIGURE" });
|
||||
private goToModerate = () => this.props.router.replace("/admin/moderate");
|
||||
private goToCommunity = () => this.props.router.replace("/admin/community");
|
||||
private goToStories = () => this.props.router.replace("/admin/stories");
|
||||
private goToConfigure = () => this.props.router.replace("/admin/configures");
|
||||
public render() {
|
||||
return (
|
||||
<Navigation
|
||||
@@ -23,4 +23,4 @@ class NavigationContainer extends Component<NavigationContainerProps> {
|
||||
}
|
||||
}
|
||||
|
||||
export default withSetViewMutation(NavigationContainer);
|
||||
export default withRouter(NavigationContainer);
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
import { BrowserProtocol, queryMiddleware } from "farce";
|
||||
import { createFarceRouter, createRender, makeRouteConfig, Route } from "found";
|
||||
import { createFarceRouter, createRender } from "found";
|
||||
import { Resolver } from "found-relay";
|
||||
|
||||
import React from "react";
|
||||
import { StatelessComponent } from "react";
|
||||
import React, { StatelessComponent } from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
|
||||
import { createManaged } from "talk-framework/lib/bootstrap";
|
||||
|
||||
import { TalkContextConsumer } from "talk-framework/lib/bootstrap/TalkContext";
|
||||
import App from "./components/App";
|
||||
import { initLocalState } from "./local";
|
||||
import localesData from "./locales";
|
||||
import routeConfig from "./routeConfig";
|
||||
|
||||
async function main() {
|
||||
const ManagedTalkContextProvider = await createManaged({
|
||||
@@ -23,7 +20,7 @@ async function main() {
|
||||
const Router = createFarceRouter({
|
||||
historyProtocol: new BrowserProtocol(),
|
||||
historyMiddlewares: [queryMiddleware],
|
||||
routeConfig: makeRouteConfig(<Route path="/" Component={App} />),
|
||||
routeConfig,
|
||||
render: createRender({}),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
import { commitLocalUpdate, Environment } from "relay-runtime";
|
||||
|
||||
import { createMutationContainer } from "talk-framework/lib/relay";
|
||||
import { LOCAL_ID } from "talk-framework/lib/relay/withLocalStateContainer";
|
||||
|
||||
export interface SetViewInput {
|
||||
view: "MODERATE" | "COMMUNITY" | "STORIES" | "CONFIGURE";
|
||||
}
|
||||
|
||||
export type SetViewMutation = (input: SetViewInput) => Promise<void>;
|
||||
|
||||
export async function commit(environment: Environment, input: SetViewInput) {
|
||||
return commitLocalUpdate(environment, store => {
|
||||
const record = store.get(LOCAL_ID)!;
|
||||
record.setValue(input.view, "view");
|
||||
});
|
||||
}
|
||||
|
||||
export const withSetViewMutation = createMutationContainer("setView", commit);
|
||||
@@ -1 +0,0 @@
|
||||
export { withSetViewMutation, SetViewMutation } from "./SetViewMutation";
|
||||
@@ -0,0 +1,17 @@
|
||||
import { makeRouteConfig, Route } from "found";
|
||||
import React from "react";
|
||||
|
||||
import App from "./components/App";
|
||||
import Community from "./components/Community";
|
||||
import Configure from "./components/Configure";
|
||||
import Moderate from "./components/Moderate";
|
||||
import Stories from "./components/Stories";
|
||||
|
||||
export default makeRouteConfig(
|
||||
<Route path="admin" Component={App}>
|
||||
<Route path="moderate" Component={Moderate} />
|
||||
<Route path="community" Component={Community} />
|
||||
<Route path="stories" Component={Stories} />
|
||||
<Route path="configure" Component={Configure} />
|
||||
</Route>
|
||||
);
|
||||
Reference in New Issue
Block a user