From e704c6d96833858f84100d572faebcbc774f62d7 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 16 Aug 2018 12:02:09 -0300 Subject: [PATCH] SignOff Mutation --- .../client/auth/mutations/SignOffMutation.ts | 14 +++++++-- src/core/client/auth/mutations/index.ts | 2 +- src/core/client/framework/rest/index.ts | 2 +- src/core/client/framework/rest/signOff.ts | 10 +++++-- .../components/UserBoxAuthenticated.tsx | 8 ++--- .../components/UserBoxUnauthenticated.tsx | 1 - .../UserBoxAuthenticatedContainer.tsx | 30 ++++++++----------- .../stream/containers/UserBoxContainer.tsx | 8 ++--- 8 files changed, 42 insertions(+), 33 deletions(-) diff --git a/src/core/client/auth/mutations/SignOffMutation.ts b/src/core/client/auth/mutations/SignOffMutation.ts index 68ab26d0d..b926960df 100644 --- a/src/core/client/auth/mutations/SignOffMutation.ts +++ b/src/core/client/auth/mutations/SignOffMutation.ts @@ -2,13 +2,23 @@ import { Environment } from "relay-runtime"; import { TalkContext } from "talk-framework/lib/bootstrap"; import { createMutationContainer } from "talk-framework/lib/relay"; -import { signOff } from "talk-framework/rest"; +import { signOff, SignOffInput } from "talk-framework/rest"; + +export type SignOffMutation = (input: SignOffInput) => Promise; export async function commit( environment: Environment, + input: SignOffInput, { rest, postMessage }: TalkContext ) { - signOff(rest); + try { + await signOff(rest, input); + console.log("signing off"); + // postMessage.send("setAuthToken", result.token, window.opener); + // window.close(); + } catch (err) { + // postMessage.send("authError", err.toString(), window.opener); + } } export const withSignOffMutation = createMutationContainer("signOff", commit); diff --git a/src/core/client/auth/mutations/index.ts b/src/core/client/auth/mutations/index.ts index f6fe1b2f7..e83f7aabf 100644 --- a/src/core/client/auth/mutations/index.ts +++ b/src/core/client/auth/mutations/index.ts @@ -1,4 +1,4 @@ export { withSetViewMutation, SetViewMutation } from "./SetViewMutation"; export { withSignInMutation, SignInMutation } from "./SignInMutation"; export { withSignUpMutation, SignUpMutation } from "./SignUpMutation"; -export { withSignOffMutation } from "./SignOffMutation"; +export { withSignOffMutation, SignOffMutation } from "./SignOffMutation"; diff --git a/src/core/client/framework/rest/index.ts b/src/core/client/framework/rest/index.ts index 7216d255f..97437ed10 100644 --- a/src/core/client/framework/rest/index.ts +++ b/src/core/client/framework/rest/index.ts @@ -1,3 +1,3 @@ export { default as signIn, SignInInput } from "./signIn"; export { default as signUp, SignUpInput } from "./signUp"; -export { default as signOff } from "./signOff"; +export { default as signOff, SignOffInput } from "./signOff"; diff --git a/src/core/client/framework/rest/signOff.ts b/src/core/client/framework/rest/signOff.ts index 5a1904d7c..6072f3ba9 100644 --- a/src/core/client/framework/rest/signOff.ts +++ b/src/core/client/framework/rest/signOff.ts @@ -1,7 +1,13 @@ import { RestClient } from "../lib/rest"; -export default function signOff(rest: RestClient) { - return rest.fetch("/tenant/auth/local", { +// tslint:disable-next-line:no-empty-interface +export interface SignOffInput {} + +// tslint:disable-next-line:no-empty-interface +export interface SignOffResponse {} + +export default function signOff(rest: RestClient, input: SignOffInput) { + return rest.fetch("/tenant/auth/local", { method: "DELETE", }); } diff --git a/src/core/client/stream/components/UserBoxAuthenticated.tsx b/src/core/client/stream/components/UserBoxAuthenticated.tsx index 27e6e4965..dc58ebafa 100644 --- a/src/core/client/stream/components/UserBoxAuthenticated.tsx +++ b/src/core/client/stream/components/UserBoxAuthenticated.tsx @@ -7,13 +7,13 @@ import MatchMedia from "talk-ui/components/MatchMedia"; import { User } from "../containers/UserBoxContainer"; import * as styles from "./UserBoxAuthenticated.css"; -export interface UserBoxUnauthenticatedProps { - onSignOut: () => void; +export interface UserBoxAuthenticatedProps { + onSignOff: () => void; user: User; } const UserBoxAuthenticated: StatelessComponent< - UserBoxUnauthenticatedProps + UserBoxAuthenticatedProps > = props => { return ( @@ -40,7 +40,7 @@ const UserBoxAuthenticated: StatelessComponent< color="primary" size="small" variant="underlined" - onClick={props.onSignOut} + onClick={props.onSignOff} > Sign Out diff --git a/src/core/client/stream/components/UserBoxUnauthenticated.tsx b/src/core/client/stream/components/UserBoxUnauthenticated.tsx index 0a81149bc..f1a8716ee 100644 --- a/src/core/client/stream/components/UserBoxUnauthenticated.tsx +++ b/src/core/client/stream/components/UserBoxUnauthenticated.tsx @@ -9,7 +9,6 @@ import * as styles from "./UserBoxUnauthenticated.css"; export interface UserBoxUnauthenticatedProps { onSignIn: () => void; onRegister: () => void; - onSignOff: () => void; } const UserBoxUnauthenticated: StatelessComponent< diff --git a/src/core/client/stream/containers/UserBoxAuthenticatedContainer.tsx b/src/core/client/stream/containers/UserBoxAuthenticatedContainer.tsx index f1de51853..54b36ecbf 100644 --- a/src/core/client/stream/containers/UserBoxAuthenticatedContainer.tsx +++ b/src/core/client/stream/containers/UserBoxAuthenticatedContainer.tsx @@ -1,29 +1,25 @@ import React, { Component } from "react"; -import UserBoxUnauthenticated from "talk-stream/components/UserBoxUnauthenticated"; -import { withSignOffMutation } from "../../auth/mutations"; +import UserBoxAuthenticated from "talk-stream/components/UserBoxAuthenticated"; +import { SignOffMutation, withSignOffMutation } from "../../auth/mutations"; +import { User } from "../containers/UserBoxContainer"; -interface SignInContainerProps { - onSignIn: () => void; - onRegister: () => void; - signOff: () => void; +interface UserBoxAuthenticatedProps { + signOff: SignOffMutation; + user: User; } -export type View = "SIGN_UP" | "FORGOT_PASSWORD"; - -class UserBoxUnauthenticatedContainer extends Component { - private signOff = () => { - this.props.signOff(); +class UserBoxAuthenticatedContainer extends Component< + UserBoxAuthenticatedProps +> { + private onSignOff = () => { + this.props.signOff({}); }; public render() { return ( - + ); } } -const enhanced = withSignOffMutation(UserBoxUnauthenticatedContainer); +const enhanced = withSignOffMutation(UserBoxAuthenticatedContainer); export default enhanced; diff --git a/src/core/client/stream/containers/UserBoxContainer.tsx b/src/core/client/stream/containers/UserBoxContainer.tsx index 68845a3e3..0a9d72561 100644 --- a/src/core/client/stream/containers/UserBoxContainer.tsx +++ b/src/core/client/stream/containers/UserBoxContainer.tsx @@ -10,7 +10,7 @@ import { } from "talk-stream/mutations"; import { Popup } from "talk-ui/components"; -import UserBoxAuthenticated from "../components/UserBoxAuthenticated"; +import UserBoxUnauthenticated from "talk-stream/components/UserBoxUnauthenticated"; import UserBoxAuthenticatedContainer from "../containers/UserBoxAuthenticatedContainer"; export type USER_ROLE = @@ -50,9 +50,7 @@ export class UserBoxContainer extends Component { } = this.props; if (user) { - return ( - - ); + return ; } return ( @@ -67,7 +65,7 @@ export class UserBoxContainer extends Component { onBlur={this.handleBlur} onClose={this.handleClose} /> -